Bonjour,
Depuis hier après midi je séche sur ce sujet et peut-être me dirigerez vous vers la bonne cause.
Le contexte :
Lors du Brexit les conditions de dédouanement ont changées. Toujours est-il que pour nos articles (des chaussures) nos amis anglais ont de drôles d'idées, pour faire simple les chaussures de taille inférieures au 390 ne sont pas taxées considérées comme "Enfant" alors que les autres "Adultes" le sont. Une sorte de taxe sur les grands pieds ! Cela est plus complexe mais c'est le principe.
Nos articles évidement ne sont pas séparés en fonction de ces critères sauf exception d'articles spéciaux enfant, une grille de pointure ira disons du 350 au 450 pour les adultes. Vous le comprendrez donc il me faut scinder (uniquement pour la déclaration douanière) les articles de pointures inférieures au 390 des autres (ça ce serait simple si c'était valable pour tout type d'article mais ce n'est pas tout à fait cela, entre en compte, toujours en simplifiant, l'utilisation : Danse, Danse de salon ...) de plus les douanes se fichent de la couleur ou de la taille, ce qu'ils veulent c'est la quantité totale par catégorie et utilisateur (donc beaucoup moins détaillé qu'une facture.
Donc à ce stade j'ai fait en sorte d'ajouter deux tables :
CUSTOMSGBMODELE (ID INTEGER PK,CATEGORIE VARCHAR(13),DESTINATION CHAR(1) ,GBDESCRIPTION BLOB TEXT) : PK ID, INDEX UNIQUE (CATEGORIE,DESTINATION)
CUSTOMSGB_PT(ID INTEGER PK,CATEGORIE VARCHAR(13),DESTINATION,PT) PK ID, INDEX UNIQUE (CATEGORIE,PT)
le tout est maintenant d'analyser les lignes de factures, ressortir les CATEGORIEs en fonction du modele
en guise de test ceci :
et pour "l'analyse"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE LIGNES (MODELE VARCHAR(14)); COMMIT; INSERT INTO LIGNES(MODELE) VALUES ('CAMBLISA'); INSERT INTO LIGNES(MODELE) VALUES ('LISA A'); INSERT INTO LIGNES(MODELE) VALUES ('LISA B'); INSERT INTO LIGNES(MODELE) VALUES ('DIVA C'); INSERT INTO LIGNES(MODELE) VALUES ('DIVA B'); CREATE TABLE CUSTOMGB (MODELE VARCHAR(14),TYPEMODELE CHAR(1)); COMMIT; INSERT INTO CUSTOMGB(MODELE) VALUES ('CAMBLISA'); INSERT INTO CUSTOMGB(MODELE) VALUES ('LISA'); INSERT INTO CUSTOMGB(MODELE) VALUES ('DIVA');
ce qui me renvoie bien le résultat escompté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 SET TERM $; CREATE OR ALTER PROCEDURE TEST_GB RETURNS (M VARCHAR(14), MC VARCHAR(14) ) AS DECLARE VARIABLE I INTEGER; begin FOR SELECT MODELE FROM LIGNES INTO :M DO BEGIN I=char_length(:M); -- retrouver la catégorie en fonction du MODELE WHILE (I>0) DO BEGIN MC=SUBSTRING(:M FROM 1 FOR :I); IF (EXISTS (SELECT 1 FROM CUSTOMGB WHERE MODELE=:MC)) THEN BEGIN I=0; SUSPEND; END ELSE I=I-1; END END END$ SET TERM ;$ COMMIT; SELECT * FROM TEST_GB;
Mais, et c'est là mon problème dans ma base de production (ce même test fonctionne) , mais pas à partir de "vraies" lignes de facturesModele Catégorie
CAMBLISA CAMBLISA
LISA A LISA
LISA B LISA
DIVA C DIVA
DIVA B DIVA
Catégorie est toujours <NULL>
Partager