Ο κώδικας αυτός πρέπει να επικολληθεί στο αντίστοιχο παραστατικό στη θέση:
Ρυθμίσεις->Αγορές/Πωλήσεις->Παραστατικά->Εκτέλεση SQL
Για αυτόματη δημιουργία δελτίου αποστολής που περιλαμβάνει τα συνδυασμένα προϊόντα της απόδειξης που εκδίδεται επικόλλησε τον παρακάτω κώδικα στα αντίστοιχα παραστατικά (Μέχρι 2 επίπεδα, συνδυασμένα προϊόντος και συνδυασμένα συνδυασμένων προϊόντος).
Για πώληση με αυτόματη έκδοση του παραστατικού με αριθμό γραμμής 7:
--CHILD PRODUCTS - DOCUMENT ID: 7
EXECUTE BLOCK AS BEGIN
if ((select count("pvlhseis"."Aa") from "pvlhseis" where "pvlhseis"."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa))>0) then begin
--UPDATE STOCK
update "apouhkh" set "apouhkh"."Diauesimothta"="apouhkh"."Diauesimothta"+
(select sum(grm."Posothta")
from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa"
and "apouhkh"."Aa"=grm."Eidos")
where "apouhkh"."Aa" in
(select grm."Eidos" from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa")
;
--DELETE OLD DOCUMENT LINES
delete from "grammes"
where "grammes"."Aapar"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
"relatedproducts"."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts", "apouhkh","pvlhseis" pvll,"grammes" graa
where "relatedproducts"."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and "relatedproducts"."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
b_r."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts" a_r, "relatedproducts" b_r ,"apouhkh","pvlhseis" pvll,"grammes" graa
where b_r."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and a_r."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
and a_r."RelatedAa"=b_r."BaseAa"
;
end else begin
--INCREMENT NUMBER TO DOCUMENT TYPE WITH LINE ID 7
update "eidhpar" set "eidhpar"."Ariumos"="eidhpar"."Ariumos"+1 where "eidhpar"."Aa"= 7
;
--CREATE NEW DOCUMENT WITH LINE ID 7
insert into "pvlhseis" ("pvlhseis"."Aa", "pvlhseis"."Ariumospar","pvlhseis"."Kvdikospelath",
"pvlhseis"."Hmeromhnia","pvlhseis"."Parastatiko","pvlhseis"."Sxetika" )
values (
(select gen_id("gen_pvlhseis_id", 1) as fname from RDB$DATABASE),
(select eid1."Ariumos" from "eidhpar" eid1 where eid1."Aa"=7),
(select pvl1."Kvdikospelath" from "pvlhseis" pvl1 where pvl1."Aa"=:aa),
'NOW',7,
(select substring(eid2."Parastatiko" from 1 for 3)||' '||pvl2."Seira"||'#'||pvl2."Ariumospar" from "pvlhseis" pvl2
left join "eidhpar" eid2 on eid2."Aa"=pvl2."Parastatiko"
where pvl2."Aa"=:aa)||' &'||:aa
)
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
"relatedproducts"."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts", "apouhkh","pvlhseis" pvll,"grammes" graa
where "relatedproducts"."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and "relatedproducts"."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
b_r."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts" a_r, "relatedproducts" b_r ,"apouhkh","pvlhseis" pvll,"grammes" graa
where b_r."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and a_r."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
and a_r."RelatedAa"=b_r."BaseAa"
;
end
--UPDATE STOCK
update "apouhkh" set "apouhkh"."Diauesimothta"="apouhkh"."Diauesimothta"-
(select sum(grm."Posothta")
from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa"
and "apouhkh"."Aa"=grm."Eidos")
where "apouhkh"."Aa" in
(select grm."Eidos" from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa")
;
--UPDATE NEW DOCUMENT ADDING TOTALS
update "pvlhseis" pvm set
pvm."synolofpa_"=
(select
sum(((gra ."Posothta"* gra."Timh")* gra."fpa_" )/100) from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."synolonpe_"=
(select
sum(((gra ."Posothta"* gra."Timh")* gra."fpa_" )/100) from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."synolo_"=
(select sum((gra ."Posothta"* gra."Timh")
+ (((gra ."Posothta"* gra."Timh")* gra."fpa_" )/100)) from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."synoloposothtas_"=
(select sum(gra ."Posothta") from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."ogkos_syn"=0,pvm."embado_syn"=0,pvm."baros_syn"=0,pvm."ajia_syn"=0,pvm."synolikopososto"=0,pvm."loipes_"=0
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
;
END;
Για αγορά με αυτόματη έκδοση του παραστατικού με αριθμό γραμμής 52:
--CHILD PRODUCTS - DOCUMENT ID: 52
EXECUTE BLOCK AS BEGIN
if ((select count("pvlhseis"."Aa") from "pvlhseis" where "pvlhseis"."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa))>0) then begin
--UPDATE STOCK
update "apouhkh" set "apouhkh"."Diauesimothta"="apouhkh"."Diauesimothta"-
(select sum(grm."Posothta")
from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa"
and "apouhkh"."Aa"=grm."Eidos")
where "apouhkh"."Aa" in
(select grm."Eidos" from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa")
;
--DELETE OLD DOCUMENT LINES
delete from "grammes"
where "grammes"."Aapar"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
"relatedproducts"."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts", "apouhkh","pvlhseis" pvll,"grammes" graa
where "relatedproducts"."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and "relatedproducts"."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
b_r."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts" a_r, "relatedproducts" b_r ,"apouhkh","pvlhseis" pvll,"grammes" graa
where b_r."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and a_r."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
and a_r."RelatedAa"=b_r."BaseAa"
;
end else begin
--INCREMENT NUMBER TO DOCUMENT TYPE WITH LINE ID 52
update "eidhpar" set "eidhpar"."Ariumos"="eidhpar"."Ariumos"+1 where "eidhpar"."Aa"= 52
;
--CREATE NEW DOCUMENT WITH LINE ID 52
insert into "pvlhseis" ("pvlhseis"."Aa", "pvlhseis"."Ariumospar","pvlhseis"."Kvdikospelath",
"pvlhseis"."Hmeromhnia","pvlhseis"."Parastatiko","pvlhseis"."Sxetika" )
values (
(select gen_id("gen_pvlhseis_id", 1) as fname from RDB$DATABASE),
(select eid1."Ariumos" from "eidhpar" eid1 where eid1."Aa"=52),
(select pvl1."Kvdikospelath" from "pvlhseis" pvl1 where pvl1."Aa"=:aa),
'NOW',52,
(select substring(eid2."Parastatiko" from 1 for 3)||' '||pvl2."Seira"||'#'||pvl2."Ariumospar" from "pvlhseis" pvl2
left join "eidhpar" eid2 on eid2."Aa"=pvl2."Parastatiko"
where pvl2."Aa"=:aa)||' &'||:aa
)
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
"relatedproducts"."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts", "apouhkh","pvlhseis" pvll,"grammes" graa
where "relatedproducts"."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and "relatedproducts"."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
;
--CREATE NEW DOCUMENT LINES INCLUDING ALL SUB SUB PRODUCTS
insert into "grammes" ("grammes"."Aa","grammes"."Aapar","grammes"."Eidos","grammes"."KvdikosEidoys",
"grammes"."PerigrafhEidoys","grammes"."fpa_","grammes"."Posothta","grammes"."Monada","grammes"."monada_",
"grammes"."Timh","grammes"."Ekptvsh","grammes"."order"
)
select
(select gen_id("gen_grammes_id", 1) as fname from RDB$DATABASE),
(select pvl1."Aa" from "pvlhseis" pvl1 where pvl1."Sxetika" like '%&'||:aa),
"apouhkh"."Aa","apouhkh"."Kvdikos", "apouhkh"."Perigrafh","apouhkh"."fpaT",
b_r."Quantity"*graa."Posothta",
graa."Monada",graa."monada_",graa."Timh",graa."Ekptvsh",graa."order"
from "relatedproducts" a_r, "relatedproducts" b_r ,"apouhkh","pvlhseis" pvll,"grammes" graa
where b_r."RelatedAa"="apouhkh"."Aa"
and pvll."Aa"=graa."Aapar"
and a_r."BaseAa"= graa."Eidos"
and pvll."Aa"=:aa
and a_r."RelatedAa"=b_r."BaseAa"
;
end
--UPDATE STOCK
update "apouhkh" set "apouhkh"."Diauesimothta"="apouhkh"."Diauesimothta"+
(select sum(grm."Posothta")
from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa"
and "apouhkh"."Aa"=grm."Eidos")
where "apouhkh"."Aa" in
(select grm."Eidos" from "pvlhseis" pvm,"grammes" grm
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
and grm."Aapar"=pvm."Aa")
;
--UPDATE NEW DOCUMENT ADDING TOTALS
update "pvlhseis" pvm set
pvm."synolofpa_"=
(select
sum(((gra ."Posothta"* gra."Timh")* gra."fpa_" )/100) from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."synolonpe_"=
(select
sum(((gra ."Posothta"* gra."Timh")* gra."fpa_" )/100) from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."synolo_"=
(select sum((gra ."Posothta"* gra."Timh")
+ (((gra ."Posothta"* gra."Timh")* gra."fpa_" )/100)) from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."synoloposothtas_"=
(select sum(gra ."Posothta") from
"grammes" gra where gra."Aapar"=pvm."Aa"
),
pvm."ogkos_syn"=0,pvm."embado_syn"=0,pvm."baros_syn"=0,pvm."ajia_syn"=0,pvm."synolikopososto"=0,pvm."loipes_"=0
where pvm."Aa"=(select pvl."Aa" from "pvlhseis" pvl where pvl."Sxetika" like '%&'||:aa)
;
END;