Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e707484a0 | ||
| 0067e51e6e | |||
|
|
1c0cdeb085 | ||
| 465339cdd6 | |||
|
|
2bc484574f | ||
| ea1e3b074c | |||
|
|
4944611088 | ||
| fbfc7acfe4 |
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
"permissions": {
|
"permissions": {
|
||||||
"allow": [
|
"allow": [
|
||||||
"Bash(npm run:*)"
|
"Bash(npm run:*)",
|
||||||
|
"WebFetch(domain:geo.api.gouv.fr)",
|
||||||
|
"Bash(pip3 install:*)",
|
||||||
|
"Bash(python3 -c \":*)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cd frontend
|
cd frontend
|
||||||
npm ci
|
npm ci
|
||||||
CI=1 NUXT_TELEMETRY_DISABLED=1 NUXT_PUBLIC_API_BASE=/api NUXT_PUBLIC_APP_BASE=/ npm run generate
|
CI=1 NUXT_TELEMETRY_DISABLED=1 NUXT_PUBLIC_API_BASE=/api NUXT_PUBLIC_APP_BASE=/ NUXT_PUBLIC_GEO_API_BASE=https://geo.api.gouv.fr npm run generate
|
||||||
test -f .output/public/index.html
|
test -f .output/public/index.html
|
||||||
|
|
||||||
- name: Build artefact
|
- name: Build artefact
|
||||||
|
|||||||
145
.idea/workspace.xml
generated
145
.idea/workspace.xml
generated
@@ -4,71 +4,12 @@
|
|||||||
<option name="autoReloadType" value="SELECTIVE" />
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="7c107abe-5995-4428-8429-b146aaca8386" name="Changes" comment="fix : correction des retours de la V0">
|
<list default="true" id="7c107abe-5995-4428-8429-b146aaca8386" name="Changes" comment="fix : order navbar + modification création fournisseur et client">
|
||||||
<change afterPath="$PROJECT_DIR$/.claude/settings.local.json" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.claude/settings.local.json" beforeDir="false" afterPath="$PROJECT_DIR$/.claude/settings.local.json" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/components/workflow/workflow-liot-fields.vue" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/components/workflow/workflow-waiting-list.vue" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/components/workflow/workflow-weight.vue" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/composables/steps/useWeighingStep.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/composables/useAddressSync.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/composables/useFormDataLoading.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/composables/useLiotHandling.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/composables/useWorkflowSteps.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/config/reception.config.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/config/shipment.config.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/services/workflow-service.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/stores/workflow-store.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/frontend/types/workflow.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/migrations/Version20260318103644.php" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/migrations/Version20260318104205.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/config/reference.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/reference.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/config/reference.php" beforeDir="false" afterPath="$PROJECT_DIR$/config/reference.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/assets/css/main.css" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/assets/css/main.css" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/address.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/address.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/commun/update-weight.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/commun/update-weight.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/reception/reception-bovine-received.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/reception/reception-bovine-received.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/reception/reception-form.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/reception/reception-form.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/reception/reception-product-received.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/reception/reception-product-received.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/reception/reception-weight.vue" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/reception/update-merchandise.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/reception/update-merchandise.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/shipment/shipment-form.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/shipment/shipment-form.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/shipment/shipment-weight.vue" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/components/ui/license-plate-input.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/ui/license-plate-input.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/composables/useWeighing.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/composables/useWeighing.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/constants/steps.ts" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/i18n/locales/fr.json" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/i18n/locales/fr.json" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/bovin/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/bovin/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/carrier/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/carrier/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/customer/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/customer/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/customer/customer-list.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/customer/customer-list.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/supplier/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/supplier/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/supplier/supplier-list.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/supplier/supplier-list.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/admin/user/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/admin/user/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/reception/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/reception/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/reception/finish-reception.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/reception/finish-reception.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/reception/update/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/reception/update/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/reception/waiting-reception.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/reception/waiting-reception.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/shipment/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/shipment/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/shipment/update/[[id]].vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/shipment/update/[[id]].vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/pages/shipment/waiting-shipment.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/pages/shipment/waiting-shipment.vue" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/address.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/address.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/dto/address-data.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/dto/address-data.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/dto/customer-data.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/dto/customer-data.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/dto/supplier-data.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/dto/supplier-data.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/reception.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/reception.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/shipment.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/shipment.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/services/weight.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/services/weight.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/stores/reception.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/stores/reception.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/frontend/stores/shipment.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/stores/shipment.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Command/SeedCommand.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Command/SeedCommand.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/DataFixtures/ReferenceFixtures.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/DataFixtures/ReferenceFixtures.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/Address.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Address.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/Carrier.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Carrier.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/Customer.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Customer.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/Reception.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Reception.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Entity/Reception.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Reception.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/Shipment.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Shipment.php" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Entity/Shipment.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Shipment.php" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/Supplier.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/Supplier.php" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Entity/User.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Entity/User.php" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -323,8 +264,8 @@
|
|||||||
<recent name="\\wsl.localhost\Ubuntu-24.04\home\kevin\Stage\Ferme\frontend\components\shipment" />
|
<recent name="\\wsl.localhost\Ubuntu-24.04\home\kevin\Stage\Ferme\frontend\components\shipment" />
|
||||||
</key>
|
</key>
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
<recent name="C:\Users\m-tristan\AppData\Roaming\JetBrains\PhpStorm2025.3\scratches" />
|
|
||||||
<recent name="\\wsl.localhost\Ubuntu-24.04\home\m-tristan\workspace\Ferme" />
|
<recent name="\\wsl.localhost\Ubuntu-24.04\home\m-tristan\workspace\Ferme" />
|
||||||
|
<recent name="C:\Users\m-tristan\AppData\Roaming\JetBrains\PhpStorm2025.3\scratches" />
|
||||||
<recent name="\\wsl.localhost\Ubuntu-24.04\home\tristan\workspace\ferme\templates" />
|
<recent name="\\wsl.localhost\Ubuntu-24.04\home\tristan\workspace\ferme\templates" />
|
||||||
<recent name="C:\Users\autin\AppData\Roaming\JetBrains\PhpStorm2025.3\scratches" />
|
<recent name="C:\Users\autin\AppData\Roaming\JetBrains\PhpStorm2025.3\scratches" />
|
||||||
<recent name="C:\Users\autin\AppData\Roaming\JetBrains\PhpStorm2025.3\scratches\Ferme_MCD\MCD_DOC" />
|
<recent name="C:\Users\autin\AppData\Roaming\JetBrains\PhpStorm2025.3\scratches\Ferme_MCD\MCD_DOC" />
|
||||||
@@ -333,7 +274,7 @@
|
|||||||
<component name="SharedIndexes">
|
<component name="SharedIndexes">
|
||||||
<attachedChunks>
|
<attachedChunks>
|
||||||
<set>
|
<set>
|
||||||
<option value="bundled-php-predefined-a98d8de5180a-0e0d91225499-com.jetbrains.php.sharedIndexes-PS-253.31033.138" />
|
<option value="bundled-php-predefined-a98d8de5180a-0e0d91225499-com.jetbrains.php.sharedIndexes-PS-253.32098.40" />
|
||||||
</set>
|
</set>
|
||||||
</attachedChunks>
|
</attachedChunks>
|
||||||
</component>
|
</component>
|
||||||
@@ -383,39 +324,9 @@
|
|||||||
<workItem from="1773215356754" duration="5754000" />
|
<workItem from="1773215356754" duration="5754000" />
|
||||||
<workItem from="1773756072697" duration="5450000" />
|
<workItem from="1773756072697" duration="5450000" />
|
||||||
<workItem from="1773766075191" duration="6202000" />
|
<workItem from="1773766075191" duration="6202000" />
|
||||||
<workItem from="1773824491213" duration="14242000" />
|
<workItem from="1773824491213" duration="24805000" />
|
||||||
</task>
|
<workItem from="1774275549972" duration="51000" />
|
||||||
<task id="LOCAL-00024" summary="fix : affiche plus détail dans les logs en recette/prod">
|
<workItem from="1774276665015" duration="2660000" />
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1769077633390</created>
|
|
||||||
<option name="number" value="00024" />
|
|
||||||
<option name="presentableId" value="LOCAL-00024" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1769077633390</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00025" summary="fix : modification du script de déploiement pour corriger le problème d'écriture des logs de prod">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1769079030808</created>
|
|
||||||
<option name="number" value="00025" />
|
|
||||||
<option name="presentableId" value="LOCAL-00025" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1769079030808</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00026" summary="fix : doc de déploiement">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1769094376813</created>
|
|
||||||
<option name="number" value="00026" />
|
|
||||||
<option name="presentableId" value="LOCAL-00026" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1769094376813</updated>
|
|
||||||
</task>
|
|
||||||
<task id="LOCAL-00027" summary="fix : doc et script de déploiement">
|
|
||||||
<option name="closed" value="true" />
|
|
||||||
<created>1769096187792</created>
|
|
||||||
<option name="number" value="00027" />
|
|
||||||
<option name="presentableId" value="LOCAL-00027" />
|
|
||||||
<option name="project" value="LOCAL" />
|
|
||||||
<updated>1769096187792</updated>
|
|
||||||
</task>
|
</task>
|
||||||
<task id="LOCAL-00028" summary="fix : doc et script de déploiement">
|
<task id="LOCAL-00028" summary="fix : doc et script de déploiement">
|
||||||
<option name="closed" value="true" />
|
<option name="closed" value="true" />
|
||||||
@@ -777,7 +688,39 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1773826699115</updated>
|
<updated>1773826699115</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="73" />
|
<task id="LOCAL-00073" summary="fix : correction des retours de la V0">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1773841634554</created>
|
||||||
|
<option name="number" value="00073" />
|
||||||
|
<option name="presentableId" value="LOCAL-00073" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1773841634554</updated>
|
||||||
|
</task>
|
||||||
|
<task id="LOCAL-00074" summary="feat : ajout de l'api de l'état pour chercher les villes via le CP">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1773842791819</created>
|
||||||
|
<option name="number" value="00074" />
|
||||||
|
<option name="presentableId" value="LOCAL-00074" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1773842791819</updated>
|
||||||
|
</task>
|
||||||
|
<task id="LOCAL-00075" summary="fix : script de déploiement + CI/CD build de l'app">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1773843922376</created>
|
||||||
|
<option name="number" value="00075" />
|
||||||
|
<option name="presentableId" value="LOCAL-00075" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1773843922377</updated>
|
||||||
|
</task>
|
||||||
|
<task id="LOCAL-00076" summary="fix : order navbar + modification création fournisseur et client">
|
||||||
|
<option name="closed" value="true" />
|
||||||
|
<created>1773852806120</created>
|
||||||
|
<option name="number" value="00076" />
|
||||||
|
<option name="presentableId" value="LOCAL-00076" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1773852806121</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="77" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TypeScriptGeneratedFilesManager">
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
@@ -827,9 +770,6 @@
|
|||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="VcsManagerConfiguration">
|
<component name="VcsManagerConfiguration">
|
||||||
<MESSAGE value="feat : ajout de colonne pour les Supplier, Address et modification du numéro de réception" />
|
|
||||||
<MESSAGE value="feat : ajout de colonne pour les Supplier, Address. Modification du numéro de réception et ajout de fixtures" />
|
|
||||||
<MESSAGE value="feat : mise à jour du bon de réception" />
|
|
||||||
<MESSAGE value="feat : Ajout de la sélection des bovins étape 3 d'une réception (WIP)" />
|
<MESSAGE value="feat : Ajout de la sélection des bovins étape 3 d'une réception (WIP)" />
|
||||||
<MESSAGE value="feat : creer une nouvelle expedtion (WIP)" />
|
<MESSAGE value="feat : creer une nouvelle expedtion (WIP)" />
|
||||||
<MESSAGE value="feat : ajout d'une page de creation d'une expedition" />
|
<MESSAGE value="feat : ajout d'une page de creation d'une expedition" />
|
||||||
@@ -852,7 +792,10 @@
|
|||||||
<MESSAGE value="feat : ajout de bâtiment dans les fixtures et seed + organisation du menu" />
|
<MESSAGE value="feat : ajout de bâtiment dans les fixtures et seed + organisation du menu" />
|
||||||
<MESSAGE value="fix : on ne pèse plus automatiquement + fix message de création réception" />
|
<MESSAGE value="fix : on ne pèse plus automatiquement + fix message de création réception" />
|
||||||
<MESSAGE value="fix : correction des retours de la V0" />
|
<MESSAGE value="fix : correction des retours de la V0" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="fix : correction des retours de la V0" />
|
<MESSAGE value="feat : ajout de l'api de l'état pour chercher les villes via le CP" />
|
||||||
|
<MESSAGE value="fix : script de déploiement + CI/CD build de l'app" />
|
||||||
|
<MESSAGE value="fix : order navbar + modification création fournisseur et client" />
|
||||||
|
<option name="LAST_COMMIT_MESSAGE" value="fix : order navbar + modification création fournisseur et client" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager>
|
<breakpoint-manager>
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
parameters:
|
parameters:
|
||||||
app.version: '0.0.71'
|
app.version: '0.0.75'
|
||||||
|
|||||||
@@ -13,7 +13,15 @@
|
|||||||
<UiTextInput id="address-street" v-model="form.street" label="Rue" required />
|
<UiTextInput id="address-street" v-model="form.street" label="Rue" required />
|
||||||
<UiTextInput id="address-street2" v-model="form.street2" label="Complément" />
|
<UiTextInput id="address-street2" v-model="form.street2" label="Complément" />
|
||||||
<UiTextInput id="address-postalCode" v-model="form.postalCode" label="Code postal" required />
|
<UiTextInput id="address-postalCode" v-model="form.postalCode" label="Code postal" required />
|
||||||
<UiTextInput id="address-city" v-model="form.city" label="Ville" required />
|
<UiSelect
|
||||||
|
id="address-city"
|
||||||
|
v-model="form.city"
|
||||||
|
label="Ville"
|
||||||
|
:options="communeOptions"
|
||||||
|
:loading="isLoadingCities"
|
||||||
|
:disabled="communes.length === 0"
|
||||||
|
required
|
||||||
|
/>
|
||||||
<UiTextInput id="address-country" v-model="form.countryCode" label="Pays (code)" />
|
<UiTextInput id="address-country" v-model="form.countryCode" label="Pays (code)" />
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-center items-center">
|
<div class="flex justify-center items-center">
|
||||||
@@ -31,7 +39,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { AddressPayload } from "~/services/address"
|
import type { AddressPayload } from "~/services/address"
|
||||||
|
import { getCommunesByPostalCode, type CommuneData } from "~/services/geo"
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -43,6 +51,12 @@ const props = defineProps<{
|
|||||||
|
|
||||||
const isLoading = ref(false)
|
const isLoading = ref(false)
|
||||||
const submitted = ref(false)
|
const submitted = ref(false)
|
||||||
|
const communes = ref<CommuneData[]>([])
|
||||||
|
const isLoadingCities = ref(false)
|
||||||
|
|
||||||
|
const communeOptions = computed(() =>
|
||||||
|
communes.value.map(c => ({ value: c.nom, label: c.nom }))
|
||||||
|
)
|
||||||
|
|
||||||
const emptyForm = (): AddressPayload => ({
|
const emptyForm = (): AddressPayload => ({
|
||||||
street: "",
|
street: "",
|
||||||
@@ -85,6 +99,41 @@ watch(
|
|||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
)
|
)
|
||||||
|
|
||||||
|
let debounceTimer: ReturnType<typeof setTimeout> | null = null
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => form.postalCode,
|
||||||
|
(cp) => {
|
||||||
|
if (debounceTimer) clearTimeout(debounceTimer)
|
||||||
|
|
||||||
|
if (!cp || cp.length < 5) {
|
||||||
|
communes.value = []
|
||||||
|
form.city = ''
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cp.length === 5) {
|
||||||
|
debounceTimer = setTimeout(async () => {
|
||||||
|
isLoadingCities.value = true
|
||||||
|
const previousCity = form.city
|
||||||
|
try {
|
||||||
|
communes.value = await getCommunesByPostalCode(cp)
|
||||||
|
|
||||||
|
if (communes.value.length === 1) {
|
||||||
|
form.city = communes.value[0].nom
|
||||||
|
} else if (communes.value.some(c => c.nom === previousCity)) {
|
||||||
|
form.city = previousCity
|
||||||
|
} else {
|
||||||
|
form.city = ''
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
isLoadingCities.value = false
|
||||||
|
}
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
const validateForm = () => {
|
const validateForm = () => {
|
||||||
if (isLoading.value) return
|
if (isLoading.value) return
|
||||||
emit("validate", {...form})
|
emit("validate", {...form})
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<UiButton
|
<UiButton
|
||||||
type="submit"
|
type="submit"
|
||||||
class="text-xl uppercase bg-primary-500 text-white h-[50px] w-[272px] justify-self-end"
|
class="text-xl mb-16 uppercase bg-primary-500 text-white h-[50px] w-[272px] justify-self-end"
|
||||||
@click="submitted = true"
|
@click="submitted = true"
|
||||||
>Valider
|
>Valider
|
||||||
</UiButton>
|
</UiButton>
|
||||||
|
|||||||
@@ -72,23 +72,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
|
|
||||||
<NuxtLink
|
|
||||||
v-if="auth.isAdmin"
|
|
||||||
to="/admin/carrier/carrier-list"
|
|
||||||
custom
|
|
||||||
v-slot="{ href, navigate }"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
:href="href"
|
|
||||||
@click="navigate"
|
|
||||||
:class="route.path.startsWith('/admin/carrier')
|
|
||||||
? 'opacity-100'
|
|
||||||
: 'opacity-65 hover:opacity-100 transition'"
|
|
||||||
>
|
|
||||||
Transporteurs
|
|
||||||
</a>
|
|
||||||
</NuxtLink>
|
|
||||||
|
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
v-if="auth.isAdmin"
|
v-if="auth.isAdmin"
|
||||||
to="/admin/customer/customer-list"
|
to="/admin/customer/customer-list"
|
||||||
@@ -106,6 +89,23 @@
|
|||||||
</a>
|
</a>
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
|
|
||||||
|
<NuxtLink
|
||||||
|
v-if="auth.isAdmin"
|
||||||
|
to="/admin/carrier/carrier-list"
|
||||||
|
custom
|
||||||
|
v-slot="{ href, navigate }"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
:href="href"
|
||||||
|
@click="navigate"
|
||||||
|
:class="route.path.startsWith('/admin/carrier')
|
||||||
|
? 'opacity-100'
|
||||||
|
: 'opacity-65 hover:opacity-100 transition'"
|
||||||
|
>
|
||||||
|
Transporteurs
|
||||||
|
</a>
|
||||||
|
</NuxtLink>
|
||||||
|
|
||||||
<NuxtLink
|
<NuxtLink
|
||||||
v-if="auth.isAdmin"
|
v-if="auth.isAdmin"
|
||||||
to="/admin/bovin/bovin-list"
|
to="/admin/bovin/bovin-list"
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ export default defineNuxtConfig({
|
|||||||
css: ['~/assets/css/main.css', '~/assets/css/toast.css'],
|
css: ['~/assets/css/main.css', '~/assets/css/toast.css'],
|
||||||
runtimeConfig: {
|
runtimeConfig: {
|
||||||
public: {
|
public: {
|
||||||
apiBase: process.env.NUXT_PUBLIC_API_BASE
|
apiBase: process.env.NUXT_PUBLIC_API_BASE,
|
||||||
|
geoApiBase: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
toast: {
|
toast: {
|
||||||
|
|||||||
@@ -14,6 +14,19 @@
|
|||||||
<UiTextInput id="customer-phone" v-model="form.phone" label="Téléphone" :disabled="!auth.isAdmin" wrapper-class="w-[280px]" required/>
|
<UiTextInput id="customer-phone" v-model="form.phone" label="Téléphone" :disabled="!auth.isAdmin" wrapper-class="w-[280px]" required/>
|
||||||
<UiTextInput id="customer-email" v-model="form.email" label="Email" :disabled="!auth.isAdmin" wrapper-class="w-[280px]"/>
|
<UiTextInput id="customer-email" v-model="form.email" label="Email" :disabled="!auth.isAdmin" wrapper-class="w-[280px]"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="!customerId" class="flex flex-cols-3 justify-between mb-11">
|
||||||
|
<UiTextInput id="address-street" v-model="addressForm.street" label="Rue" wrapper-class="w-[280px]" required />
|
||||||
|
<UiTextInput id="address-street2" v-model="addressForm.street2" label="Complément" wrapper-class="w-[280px]" />
|
||||||
|
<UiTextInput id="address-country" v-model="addressForm.countryCode" label="Pays (code)" wrapper-class="w-[280px]" />
|
||||||
|
</div>
|
||||||
|
<div v-if="!customerId" class="flex flex-cols-3 justify-between mb-11">
|
||||||
|
<UiTextInput id="address-postalCode" v-model="addressForm.postalCode" label="Code postal" wrapper-class="w-[280px]" required />
|
||||||
|
<UiSelect id="address-city" v-model="addressForm.city" label="Ville"
|
||||||
|
:options="communeOptions" :loading="isLoadingCities"
|
||||||
|
wrapper-class="w-[280px]" required />
|
||||||
|
<div class="w-[280px]" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex items-center justify-center">
|
<div class="flex items-center justify-center">
|
||||||
<UiButton
|
<UiButton
|
||||||
class="inline-flex mb-28 items-center justify-center text-xl min-w-[194px] text-white uppercase bg-primary-500 h-[50px] rounded hover:opacity-80 justify-self-end"
|
class="inline-flex mb-28 items-center justify-center text-xl min-w-[194px] text-white uppercase bg-primary-500 h-[50px] rounded hover:opacity-80 justify-self-end"
|
||||||
@@ -26,6 +39,7 @@
|
|||||||
</UiButton>
|
</UiButton>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<template v-if="customerId">
|
||||||
<div class="flex items-center justify-between mb-7">
|
<div class="flex items-center justify-between mb-7">
|
||||||
<h2 class="text-3xl text-primary-500 font-bold uppercase">Adresses du client</h2>
|
<h2 class="text-3xl text-primary-500 font-bold uppercase">Adresses du client</h2>
|
||||||
</div>
|
</div>
|
||||||
@@ -77,6 +91,7 @@
|
|||||||
Ajouter
|
Ajouter
|
||||||
</UiButton>
|
</UiButton>
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -84,6 +99,8 @@
|
|||||||
import {computed, reactive, ref, watch} from "vue"
|
import {computed, reactive, ref, watch} from "vue"
|
||||||
import {createCustomer, getCustomer, updateCustomer} from "~/services/customer"
|
import {createCustomer, getCustomer, updateCustomer} from "~/services/customer"
|
||||||
import type {CustomerData, CustomerFormData, CustomerPayload} from "~/services/dto/customer-data"
|
import type {CustomerData, CustomerFormData, CustomerPayload} from "~/services/dto/customer-data"
|
||||||
|
import {createAddress, type AddressPayload} from "~/services/address"
|
||||||
|
import {getCommunesByPostalCode, type CommuneData} from "~/services/geo"
|
||||||
import {useAuthStore} from "~/stores/auth"
|
import {useAuthStore} from "~/stores/auth"
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@@ -106,6 +123,30 @@ const form = reactive<CustomerFormData>({
|
|||||||
addresses: [],
|
addresses: [],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Address form (creation mode only)
|
||||||
|
const addressForm = reactive<AddressPayload>({
|
||||||
|
street: "", street2: null, postalCode: "", city: "", countryCode: "FR",
|
||||||
|
})
|
||||||
|
const communes = ref<CommuneData[]>([])
|
||||||
|
const isLoadingCities = ref(false)
|
||||||
|
const communeOptions = computed(() => communes.value.map(c => ({ value: c.nom, label: c.nom })))
|
||||||
|
|
||||||
|
let debounceTimer: ReturnType<typeof setTimeout> | null = null
|
||||||
|
watch(() => addressForm.postalCode, (cp) => {
|
||||||
|
if (debounceTimer) clearTimeout(debounceTimer)
|
||||||
|
if (!cp || cp.length < 5) { communes.value = []; addressForm.city = ''; return }
|
||||||
|
if (cp.length === 5) {
|
||||||
|
debounceTimer = setTimeout(async () => {
|
||||||
|
isLoadingCities.value = true
|
||||||
|
try {
|
||||||
|
communes.value = await getCommunesByPostalCode(cp)
|
||||||
|
if (communes.value.length === 1) addressForm.city = communes.value[0].nom
|
||||||
|
else addressForm.city = ''
|
||||||
|
} finally { isLoadingCities.value = false }
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const goToAddAddress = () => {
|
const goToAddAddress = () => {
|
||||||
if (customerId.value === null || !auth.isAdmin) return
|
if (customerId.value === null || !auth.isAdmin) return
|
||||||
router.push({
|
router.push({
|
||||||
@@ -187,8 +228,11 @@ async function validate() {
|
|||||||
await updateCustomer(customerId.value, customerPayload)
|
await updateCustomer(customerId.value, customerPayload)
|
||||||
targetId = customerId.value
|
targetId = customerId.value
|
||||||
} else {
|
} else {
|
||||||
|
const addressData = await createAddress({ ...addressForm })
|
||||||
|
const addressIRI = `/api/addresses/${addressData.id}`
|
||||||
const creationPayload = {
|
const creationPayload = {
|
||||||
...customerPayload,
|
...customerPayload,
|
||||||
|
addresses: [addressIRI],
|
||||||
...(auth.user?.id ? { createdBy: `/api/users/${auth.user.id}` } : {}),
|
...(auth.user?.id ? { createdBy: `/api/users/${auth.user.id}` } : {}),
|
||||||
}
|
}
|
||||||
const created = await createCustomer(creationPayload)
|
const created = await createCustomer(creationPayload)
|
||||||
|
|||||||
@@ -15,6 +15,19 @@
|
|||||||
<UiTextInput id="supplier-phone" v-model="form.phone" label="Téléphone" :disabled="!auth.isAdmin" wrapper-class="w-[280px]" required/>
|
<UiTextInput id="supplier-phone" v-model="form.phone" label="Téléphone" :disabled="!auth.isAdmin" wrapper-class="w-[280px]" required/>
|
||||||
<UiTextInput id="supplier-email" v-model="form.email" label="Email" :disabled="!auth.isAdmin" wrapper-class="w-[280px]"/>
|
<UiTextInput id="supplier-email" v-model="form.email" label="Email" :disabled="!auth.isAdmin" wrapper-class="w-[280px]"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="!supplierId" class="flex flex-cols-3 justify-between mb-11">
|
||||||
|
<UiTextInput id="address-street" v-model="addressForm.street" label="Rue" wrapper-class="w-[280px]" required />
|
||||||
|
<UiTextInput id="address-street2" v-model="addressForm.street2" label="Complément" wrapper-class="w-[280px]" />
|
||||||
|
<UiTextInput id="address-country" v-model="addressForm.countryCode" label="Pays (code)" wrapper-class="w-[280px]" />
|
||||||
|
</div>
|
||||||
|
<div v-if="!supplierId" class="flex flex-cols-3 justify-between mb-11">
|
||||||
|
<UiTextInput id="address-postalCode" v-model="addressForm.postalCode" label="Code postal" wrapper-class="w-[280px]" required />
|
||||||
|
<UiSelect id="address-city" v-model="addressForm.city" label="Ville"
|
||||||
|
:options="communeOptions" :loading="isLoadingCities"
|
||||||
|
wrapper-class="w-[280px]" required />
|
||||||
|
<div class="w-[280px]" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex items-center justify-center">
|
<div class="flex items-center justify-center">
|
||||||
<UiButton
|
<UiButton
|
||||||
class="inline-flex mb-28 items-center justify-center text-xl min-w-[194px] text-white uppercase bg-primary-500 h-[50px] rounded hover:opacity-80 justify-self-end"
|
class="inline-flex mb-28 items-center justify-center text-xl min-w-[194px] text-white uppercase bg-primary-500 h-[50px] rounded hover:opacity-80 justify-self-end"
|
||||||
@@ -27,6 +40,7 @@
|
|||||||
</UiButton>
|
</UiButton>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<template v-if="supplierId">
|
||||||
<div class="flex items-center justify-between mb-7">
|
<div class="flex items-center justify-between mb-7">
|
||||||
<h2 class="text-3xl text-primary-500 font-bold uppercase">Adresses du fournisseur</h2>
|
<h2 class="text-3xl text-primary-500 font-bold uppercase">Adresses du fournisseur</h2>
|
||||||
</div>
|
</div>
|
||||||
@@ -78,6 +92,7 @@
|
|||||||
Ajouter
|
Ajouter
|
||||||
</UiButton>
|
</UiButton>
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
</form>
|
</form>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -85,6 +100,8 @@
|
|||||||
import {computed, reactive, ref, watch} from "vue"
|
import {computed, reactive, ref, watch} from "vue"
|
||||||
import {createSupplier, getSupplier, updateSupplier} from "~/services/supplier"
|
import {createSupplier, getSupplier, updateSupplier} from "~/services/supplier"
|
||||||
import type {SupplierData, SupplierFormData, SupplierPayload} from "~/services/dto/supplier-data"
|
import type {SupplierData, SupplierFormData, SupplierPayload} from "~/services/dto/supplier-data"
|
||||||
|
import {createAddress, type AddressPayload} from "~/services/address"
|
||||||
|
import {getCommunesByPostalCode, type CommuneData} from "~/services/geo"
|
||||||
import {useAuthStore} from "~/stores/auth"
|
import {useAuthStore} from "~/stores/auth"
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@@ -107,6 +124,30 @@ const form = reactive<SupplierFormData>({
|
|||||||
addresses: [],
|
addresses: [],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Address form (creation mode only)
|
||||||
|
const addressForm = reactive<AddressPayload>({
|
||||||
|
street: "", street2: null, postalCode: "", city: "", countryCode: "FR",
|
||||||
|
})
|
||||||
|
const communes = ref<CommuneData[]>([])
|
||||||
|
const isLoadingCities = ref(false)
|
||||||
|
const communeOptions = computed(() => communes.value.map(c => ({ value: c.nom, label: c.nom })))
|
||||||
|
|
||||||
|
let debounceTimer: ReturnType<typeof setTimeout> | null = null
|
||||||
|
watch(() => addressForm.postalCode, (cp) => {
|
||||||
|
if (debounceTimer) clearTimeout(debounceTimer)
|
||||||
|
if (!cp || cp.length < 5) { communes.value = []; addressForm.city = ''; return }
|
||||||
|
if (cp.length === 5) {
|
||||||
|
debounceTimer = setTimeout(async () => {
|
||||||
|
isLoadingCities.value = true
|
||||||
|
try {
|
||||||
|
communes.value = await getCommunesByPostalCode(cp)
|
||||||
|
if (communes.value.length === 1) addressForm.city = communes.value[0].nom
|
||||||
|
else addressForm.city = ''
|
||||||
|
} finally { isLoadingCities.value = false }
|
||||||
|
}, 300)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const goToAddAddress = () => {
|
const goToAddAddress = () => {
|
||||||
if (supplierId.value === null || !auth.isAdmin) return
|
if (supplierId.value === null || !auth.isAdmin) return
|
||||||
router.push({
|
router.push({
|
||||||
@@ -190,8 +231,11 @@ async function validate() {
|
|||||||
await updateSupplier(supplierId.value, supplierPayload)
|
await updateSupplier(supplierId.value, supplierPayload)
|
||||||
targetId = supplierId.value
|
targetId = supplierId.value
|
||||||
} else {
|
} else {
|
||||||
|
const addressData = await createAddress({ ...addressForm })
|
||||||
|
const addressIRI = `/api/addresses/${addressData.id}`
|
||||||
const creationPayload = {
|
const creationPayload = {
|
||||||
...supplierPayload,
|
...supplierPayload,
|
||||||
|
addresses: [addressIRI],
|
||||||
...(auth.user?.id ? { createdBy: `/api/users/${auth.user.id}` } : {}),
|
...(auth.user?.id ? { createdBy: `/api/users/${auth.user.id}` } : {}),
|
||||||
}
|
}
|
||||||
const created = await createSupplier(creationPayload)
|
const created = await createSupplier(creationPayload)
|
||||||
|
|||||||
16
frontend/services/geo.ts
Normal file
16
frontend/services/geo.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
export interface CommuneData {
|
||||||
|
nom: string
|
||||||
|
code: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getCommunesByPostalCode(postalCode: string): Promise<CommuneData[]> {
|
||||||
|
const config = useRuntimeConfig()
|
||||||
|
const base = config.public.geoApiBase
|
||||||
|
try {
|
||||||
|
return await $fetch<CommuneData[]>(`${base}/communes`, {
|
||||||
|
params: { codePostal: postalCode, fields: 'nom', format: 'json' }
|
||||||
|
})
|
||||||
|
} catch {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -75,9 +75,5 @@ chmod o+rx "$(dirname "$DEPLOY_DIR")" "$DEPLOY_DIR" 2>/dev/null || true
|
|||||||
|
|
||||||
echo "Release ${TAG} deployed to ${DEPLOY_DIR}"
|
echo "Release ${TAG} deployed to ${DEPLOY_DIR}"
|
||||||
|
|
||||||
if [ -f "${DEPLOY_DIR}/.env.local" ]; then
|
echo "Running migrations (if any)..."
|
||||||
echo "Running migrations (if any)..."
|
php "${DEPLOY_DIR}/bin/console" doctrine:migrations:migrate --no-interaction --env=prod
|
||||||
php "${DEPLOY_DIR}/bin/console" doctrine:migrations:migrate --no-interaction --env=prod
|
|
||||||
else
|
|
||||||
echo "Skip migrations: ${DEPLOY_DIR}/.env.local not found" >&2
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
|
|||||||
#[ORM\Table(name: 'reception')]
|
#[ORM\Table(name: 'reception')]
|
||||||
#[ApiFilter(BooleanFilter::class, properties: ['isValid'])]
|
#[ApiFilter(BooleanFilter::class, properties: ['isValid'])]
|
||||||
#[ApiResource(
|
#[ApiResource(
|
||||||
|
order: ['id' => 'DESC'],
|
||||||
operations: [
|
operations: [
|
||||||
new Get(
|
new Get(
|
||||||
requirements: ['id' => '\d+'],
|
requirements: ['id' => '\d+'],
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
|
|||||||
#[ORM\Table(name: 'shipment')]
|
#[ORM\Table(name: 'shipment')]
|
||||||
#[ApiFilter(BooleanFilter::class, properties: ['isValid'])]
|
#[ApiFilter(BooleanFilter::class, properties: ['isValid'])]
|
||||||
#[ApiResource(
|
#[ApiResource(
|
||||||
|
order: ['id' => 'DESC'],
|
||||||
operations: [
|
operations: [
|
||||||
new Get(
|
new Get(
|
||||||
requirements: ['id' => '\d+'],
|
requirements: ['id' => '\d+'],
|
||||||
|
|||||||
Reference in New Issue
Block a user