fix : correction du téléchargement du bon de réception pour Chrome
All checks were successful
Auto Tag Develop / tag (push) Successful in 6s
Build Release Artefact / build (push) Successful in 1m17s

This commit is contained in:
2026-02-02 08:05:00 +01:00
parent 1ce6357c1d
commit 086279f962
4 changed files with 70 additions and 42 deletions

67
.idea/workspace.xml generated
View File

@@ -4,9 +4,11 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<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$/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" />
</list>
<option name="SHOW_DIALOG" value="false" />
@@ -213,34 +215,34 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.MCP Project settings loaded&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;feat/finalisation-reception-marchandise&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.keymap&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.MCP Project settings loaded": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
"RunOnceActivity.git.unshallow": "true",
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
"git-widget-placeholder": "feat/finalisation-reception-marchandise",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "preferences.pluginManager",
"vue.rearranger.settings.migration": "true"
},
&quot;keyToStringList&quot;: {
&quot;DatabaseDriversLRU&quot;: [
&quot;postgresql&quot;
"keyToStringList": {
"DatabaseDriversLRU": [
"postgresql"
],
&quot;com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File&quot;: [
&quot;TEXT&quot;
"com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File": [
"TEXT"
],
&quot;vue.recent.templates&quot;: [
&quot;Vue Composition API Component&quot;
"vue.recent.templates": [
"Vue Composition API Component"
]
}
}</component>
}]]></component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="\\wsl.localhost\Ubuntu-24.04\home\m-tristan\workspace\Ferme" />
@@ -275,7 +277,8 @@
<workItem from="1769413279223" duration="40490000" />
<workItem from="1769612160652" duration="23952000" />
<workItem from="1769696465294" duration="8573000" />
<workItem from="1769756623432" duration="14442000" />
<workItem from="1769756623432" duration="21592000" />
<workItem from="1770015653091" duration="73000" />
</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)">
<option name="closed" value="true" />
@@ -637,7 +640,15 @@
<option name="project" value="LOCAL" />
<updated>1769770142624</updated>
</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 />
</component>
<component name="TypeScriptGeneratedFilesManager">
@@ -687,7 +698,6 @@
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="ci : fix release artefact" />
<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="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="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" />
<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 name="XSLT-Support.FileAssociations.UIState">
<expand />

View File

@@ -73,8 +73,14 @@ const printReceipt = async () => {
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 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.
await new Promise((resolve) => setTimeout(resolve, 600))

View File

@@ -5,7 +5,7 @@ export const usePdfPrinter = () => {
const receptionStore = useReceptionStore()
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 pdfBlob = blob.type === 'application/pdf'
@@ -16,15 +16,17 @@ export const usePdfPrinter = () => {
const filename = `${currentReception.identificationNumber}_${currentReception.supplier.name}_${currentReception.licensePlate}.pdf`;
const a = document.createElement('a');
a.href = blobUrl;
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
a.remove();
if (previewWindow) {
previewWindow.location.replace(blobUrl)
}
// 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);
}

View File

@@ -65,7 +65,7 @@
.bigtable-wrap{
border: 1px solid #000;
height: 425px;
height: 360px;
margin-bottom: 10px;
}
@@ -107,8 +107,8 @@
.footer-block{ page-break-inside: avoid; }
.signature-box {
height: 22mm;
margin-bottom: 4mm;
height: 130px;
margin-bottom: 10px;
border: 0.5px solid #000;
padding: 6px 10px;
@@ -143,7 +143,16 @@
<div style="display:inline-block; width:75mm; line-height:1.3;">
<strong>{{ reception.supplier.name }}</strong><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>
</td>
</tr>