fix : correction du téléchargement du bon de réception pour Chrome

This commit is contained in:
tristan
2026-02-02 08:05:00 +01:00
parent 1ce6357c1d
commit 086279f962
4 changed files with 70 additions and 42 deletions
+39 -28
View File
@@ -4,9 +4,11 @@
<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="feat : ajout de colonne pour les Supplier, Address. Modification du numéro de réception et ajout de fixtures"> <list default="true" id="7c107abe-5995-4428-8429-b146aaca8386" name="Changes" comment="feat : mise à jour du bon de réception">
<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/components/reception/reception-weight.vue" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/components/reception/reception-weight.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/composables/usePdfPrinter.ts" beforeDir="false" afterPath="$PROJECT_DIR$/frontend/composables/usePdfPrinter.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/reception_voucher.html.twig" beforeDir="false" afterPath="$PROJECT_DIR$/templates/reception_voucher.html.twig" afterDir="false" /> <change beforePath="$PROJECT_DIR$/templates/reception_voucher.html.twig" beforeDir="false" afterPath="$PROJECT_DIR$/templates/reception_voucher.html.twig" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@@ -213,34 +215,34 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent">{ <component name="PropertiesComponent"><![CDATA[{
&quot;keyToString&quot;: { "keyToString": {
&quot;RunOnceActivity.MCP Project settings loaded&quot;: &quot;true&quot;, "RunOnceActivity.MCP Project settings loaded": "true",
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, "RunOnceActivity.ShowReadmeOnStart": "true",
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;, "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;, "RunOnceActivity.git.unshallow": "true",
&quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;, "RunOnceActivity.typescript.service.memoryLimit.init": "true",
&quot;git-widget-placeholder&quot;: &quot;feat/finalisation-reception-marchandise&quot;, "git-widget-placeholder": "feat/finalisation-reception-marchandise",
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;, "node.js.detected.package.eslint": "true",
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;, "node.js.detected.package.tslint": "true",
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;, "node.js.selected.package.eslint": "(autodetect)",
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;, "node.js.selected.package.tslint": "(autodetect)",
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;, "nodejs_package_manager_path": "npm",
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.keymap&quot;, "settings.editor.selected.configurable": "preferences.pluginManager",
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot; "vue.rearranger.settings.migration": "true"
}, },
&quot;keyToStringList&quot;: { "keyToStringList": {
&quot;DatabaseDriversLRU&quot;: [ "DatabaseDriversLRU": [
&quot;postgresql&quot; "postgresql"
], ],
&quot;com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File&quot;: [ "com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File": [
&quot;TEXT&quot; "TEXT"
], ],
&quot;vue.recent.templates&quot;: [ "vue.recent.templates": [
&quot;Vue Composition API Component&quot; "Vue Composition API Component"
] ]
} }
}</component> }]]></component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="\\wsl.localhost\Ubuntu-24.04\home\m-tristan\workspace\Ferme" /> <recent name="\\wsl.localhost\Ubuntu-24.04\home\m-tristan\workspace\Ferme" />
@@ -275,7 +277,8 @@
<workItem from="1769413279223" duration="40490000" /> <workItem from="1769413279223" duration="40490000" />
<workItem from="1769612160652" duration="23952000" /> <workItem from="1769612160652" duration="23952000" />
<workItem from="1769696465294" duration="8573000" /> <workItem from="1769696465294" duration="8573000" />
<workItem from="1769756623432" duration="14442000" /> <workItem from="1769756623432" duration="21592000" />
<workItem from="1770015653091" duration="73000" />
</task> </task>
<task id="LOCAL-00001" summary="feat : Ajout de pinia, création de la table weight et reception mise en place du système de step pour les receptions (WIP)"> <task id="LOCAL-00001" summary="feat : Ajout de pinia, création de la table weight et reception mise en place du système de step pour les receptions (WIP)">
<option name="closed" value="true" /> <option name="closed" value="true" />
@@ -637,7 +640,15 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1769770142624</updated> <updated>1769770142624</updated>
</task> </task>
<option name="localTasksCounter" value="46" /> <task id="LOCAL-00046" summary="feat : mise à jour du bon de réception">
<option name="closed" value="true" />
<created>1769782099473</created>
<option name="number" value="00046" />
<option name="presentableId" value="LOCAL-00046" />
<option name="project" value="LOCAL" />
<updated>1769782099473</updated>
</task>
<option name="localTasksCounter" value="47" />
<servers /> <servers />
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
@@ -687,7 +698,6 @@
</option> </option>
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<MESSAGE value="ci : fix release artefact" />
<MESSAGE value="ci : ajout du script et de la doc déploiement" /> <MESSAGE value="ci : ajout du script et de la doc déploiement" />
<MESSAGE value="fix : correction du path URI pour la création d'un poids dans une réception" /> <MESSAGE value="fix : correction du path URI pour la création d'un poids dans une réception" />
<MESSAGE value="feat : Ajout du bundle Monolog pour la gestion des logs" /> <MESSAGE value="feat : Ajout du bundle Monolog pour la gestion des logs" />
@@ -712,7 +722,8 @@
<MESSAGE value="fix : correction de l'affichage de l'immatriculation sur une réception en cours + correction css étape 3 d'une réception" /> <MESSAGE value="fix : correction de l'affichage de l'immatriculation sur une réception en cours + correction css étape 3 d'une réception" />
<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 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 : ajout de colonne pour les Supplier, Address. Modification du numéro de réception et ajout de fixtures" />
<option name="LAST_COMMIT_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" />
<option name="LAST_COMMIT_MESSAGE" value="feat : mise à jour du bon de réception" />
</component> </component>
<component name="XSLT-Support.FileAssociations.UIState"> <component name="XSLT-Support.FileAssociations.UIState">
<expand /> <expand />
@@ -73,8 +73,14 @@ const printReceipt = async () => {
return return
} }
// Ouvre l'onglet tout de suite pour éviter le blocage popup de Chrome
const previewWindow = window.open('', '_blank')
if (previewWindow) {
previewWindow.opener = null
}
await saveWeight() await saveWeight()
await printPdf(`/receptions/${receptionStore.current.id}/receipt`) await printPdf(`/receptions/${receptionStore.current.id}/receipt`, previewWindow)
// Laisse le temps a la boite de dialogue d'impression de s'ouvrir. // Laisse le temps a la boite de dialogue d'impression de s'ouvrir.
await new Promise((resolve) => setTimeout(resolve, 600)) await new Promise((resolve) => setTimeout(resolve, 600))
+11 -9
View File
@@ -5,7 +5,7 @@ export const usePdfPrinter = () => {
const receptionStore = useReceptionStore() const receptionStore = useReceptionStore()
const currentReception = receptionStore.current const currentReception = receptionStore.current
const printPdf = async (url: string): Promise<void> => { const printPdf = async (url: string, previewWindow?: Window | null): Promise<void> => {
const blob = await api.getBlob(url); const blob = await api.getBlob(url);
const pdfBlob = blob.type === 'application/pdf' const pdfBlob = blob.type === 'application/pdf'
@@ -16,15 +16,17 @@ export const usePdfPrinter = () => {
const filename = `${currentReception.identificationNumber}_${currentReception.supplier.name}_${currentReception.licensePlate}.pdf`; const filename = `${currentReception.identificationNumber}_${currentReception.supplier.name}_${currentReception.licensePlate}.pdf`;
const a = document.createElement('a'); if (previewWindow) {
a.href = blobUrl; previewWindow.location.replace(blobUrl)
a.download = filename; }
a.style.display = 'none';
document.body.appendChild(a);
a.click();
a.remove();
// L'ouverture dans un nouvel onglet déclenche un 2e PDF sans le nom personnalisé. const a = document.createElement('a')
a.href = blobUrl
a.download = filename
a.style.display = 'none'
document.body.appendChild(a)
a.click()
a.remove()
setTimeout(() => URL.revokeObjectURL(blobUrl), 60_000); setTimeout(() => URL.revokeObjectURL(blobUrl), 60_000);
} }
+13 -4
View File
@@ -65,7 +65,7 @@
.bigtable-wrap{ .bigtable-wrap{
border: 1px solid #000; border: 1px solid #000;
height: 425px; height: 360px;
margin-bottom: 10px; margin-bottom: 10px;
} }
@@ -107,8 +107,8 @@
.footer-block{ page-break-inside: avoid; } .footer-block{ page-break-inside: avoid; }
.signature-box { .signature-box {
height: 22mm; height: 130px;
margin-bottom: 4mm; margin-bottom: 10px;
border: 0.5px solid #000; border: 0.5px solid #000;
padding: 6px 10px; padding: 6px 10px;
@@ -143,7 +143,16 @@
<div style="display:inline-block; width:75mm; line-height:1.3;"> <div style="display:inline-block; width:75mm; line-height:1.3;">
<strong>{{ reception.supplier.name }}</strong><br> <strong>{{ reception.supplier.name }}</strong><br>
<span>{{ reception.address.street }}</span><br> <span>{{ reception.address.street }}</span><br>
<span>{{ reception.address.postalCode }} {{ reception.address.city }}</span> {% if reception.address.street2 %}
<span>{{ reception.address.street2 }}</span><br>
{% endif %}
<span>{{ reception.address.postalCode }} {{ reception.address.city }}</span><br>
{% if reception.supplier.phone %}
<span>{{ reception.supplier.phone }}</span><br>
{% endif %}
{% if reception.supplier.email %}
<span>{{ reception.supplier.email}}</span><br>
{% endif %}
</div> </div>
</td> </td>
</tr> </tr>