fix: utiliser FOUPORT2.SEUIL comme source principale du franco fournisseur
FOUCAD ne couvre que 53/153 fournisseurs actifs (commande auto uniquement). FOUPORT2.SEUIL est la source officielle de l'ERP et couvre 108 fournisseurs. 4 fournisseurs dans COMMANDE_AUTO_QTEPROPO n'avaient pas de franco visible (IMDIFA, MYCANDYSHOP, PTIT CLOWN, PUCKATOR BV). - Sync : ajout de FOUPORT et FOUPORT2 dans le pipeline de synchronisation - API : franco = COALESCE(fouport2.seuil, foucad.franco) dans les deux routes - Schema PG : création des tables fouport et fouport2 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
b4a9331fa8
commit
c75fd5c56d
3 files changed
+99
-12
No files matched your search
@@ -22,6 +22,14 @@ const FOUCAD_COLS = [
|
||||
'montantcdeauto','datecdeauto','suividatecreation','suividatemodif',
|
||||
];
|
||||
|
||||
const FOUPORT_COLS = [
|
||||
'no_id','code','sit_code','suividatecreation','suividatemodif',
|
||||
];
|
||||
|
||||
const FOUPORT2_COLS = [
|
||||
'fou_no_id','no_id','seuil','mode','valeur','suividatecreation','suividatemodif',
|
||||
];
|
||||
|
||||
const PLAN_REAPPRO_COLS = [
|
||||
'id','magasin','codein','bu_no_id','stockmag','encours_palette_mag',
|
||||
'attente_prepa_mag','colis_rea','colis_ajout_web','stock_dispo',
|
||||
@@ -171,6 +179,56 @@ async function syncAppro(force) {
|
||||
console.error(`[foucad] ERREUR: ${err.message}`);
|
||||
}
|
||||
|
||||
// === FOUPORT (full refresh — conditions de port par fournisseur) ===
|
||||
try {
|
||||
const ms = await getMssql();
|
||||
const res = await ms.request().query(`
|
||||
SELECT NO_ID, CODE, SIT_CODE, SUIVIDATECREATION, SUIVIDATEMODIF
|
||||
FROM FOUPORT
|
||||
`);
|
||||
|
||||
const rows = res.recordset.map(r => ({
|
||||
no_id: r.NO_ID,
|
||||
code: r.CODE,
|
||||
sit_code: r.SIT_CODE ?? null,
|
||||
suividatecreation: r.SUIVIDATECREATION,
|
||||
suividatemodif: r.SUIVIDATEMODIF,
|
||||
}));
|
||||
|
||||
const count = await fullRefresh(pg, 'fouport', rows, FOUPORT_COLS);
|
||||
await logSync(pg, 'fouport', count, 'ok');
|
||||
console.log(`[fouport] ${count} lignes`);
|
||||
} catch (err) {
|
||||
await logSync(pg, 'fouport', 0, 'error', err.message);
|
||||
console.error(`[fouport] ERREUR: ${err.message}`);
|
||||
}
|
||||
|
||||
// === FOUPORT2 (full refresh — seuils de franco par fournisseur) ===
|
||||
try {
|
||||
const ms = await getMssql();
|
||||
const res = await ms.request().query(`
|
||||
SELECT FOU_NO_ID, NO_ID, SEUIL, MODE, VALEUR, SUIVIDATECREATION, SUIVIDATEMODIF
|
||||
FROM FOUPORT2
|
||||
`);
|
||||
|
||||
const rows = res.recordset.map(r => ({
|
||||
fou_no_id: r.FOU_NO_ID,
|
||||
no_id: r.NO_ID,
|
||||
seuil: r.SEUIL ?? null,
|
||||
mode: r.MODE ?? null,
|
||||
valeur: r.VALEUR ?? null,
|
||||
suividatecreation: r.SUIVIDATECREATION,
|
||||
suividatemodif: r.SUIVIDATEMODIF,
|
||||
}));
|
||||
|
||||
const count = await fullRefresh(pg, 'fouport2', rows, FOUPORT2_COLS);
|
||||
await logSync(pg, 'fouport2', count, 'ok');
|
||||
console.log(`[fouport2] ${count} lignes`);
|
||||
} catch (err) {
|
||||
await logSync(pg, 'fouport2', 0, 'error', err.message);
|
||||
console.error(`[fouport2] ERREUR: ${err.message}`);
|
||||
}
|
||||
|
||||
// === PLAN_REAPPRO (full refresh — état courant) ===
|
||||
try {
|
||||
const ms = await getMssql();
|
||||
|
||||
Reference in new issue
Block a user