ApiAutomator przykład 2 - przekształcanie zamówień zakupu na przyjęcia
: 24 lip 2018, 13:21
Dziś pokażę, jak wystawione dokumenty ZZ przekształcić do PZtów, czyli jak w prosty sposób wygenerować w bazie stany magazynowe z wielu dostaw. W przeciwieństwie do metody ręcznej - wystawiania przez interface - będziemy mogli wpłynąć na ceny po jakich jest przyjmowany towar.
Zaczniemy od procedury danych.
Ustawiliśmy Tryb na wartość 0 - to da nam potwierdzone dokumenty PZ.
Następnie procedura kolejki. Tym razem jej zadaniem jest zwracanie kolejnych nagłówków zamowień zakupu, które aa przekonwertuje na PZty.
W naszej procedurze wykorzystaliśmy pole zamówienia zan_url, aby oznaczyć, które ZZty są już przetworzone automatycznie, tak by do nich nie wracać w kolejnych krokach przetwarzania.
Następnie musimy wywołać aa.exe z odpowiednimi parametrami, aby wskazać na czerpanie danych z tej procedury kolejki, oczywiście ten element trzeba dostosować tak by podłączyć się do lokalnej bazy danych.
źródła skryptów dostępne są tutaj
bazę danych zawierającą podstawowe dane przydatne do testowania funkcjonalności można pobrać tutaj
darmową wersję ApiAutomatora tutaj
Zaczniemy od procedury danych.
Kod: Zaznacz cały
if OBJECT_ID('aa.ZZtoPZDane') is not null drop procedure aa.ZZtoPZDane;
go
create procedure aa.ZZtoPzDane @Gid int = 0
as
begin
select
'XLNowyDokument' as _komenda, /* _komenda API którą trzeba wywołać */
1489 as Typ,
zan_gidtyp as ZamTyp, /* powiązanie PZ z ZZ */
zan_gidnumer as ZamNumer,
zan_gidlp as ZamLp
from
cdn.zamnag
where
zan_gidnumer=@Gid;
-- **************** pozycje ****************
select
'XLDodajPozycje' as _komenda, /* _komenda API którą trzeba wywołać */
zae_gidtyp as ZamTyp, /* powiązanie pozycji PZ z pozycją ZZ */
zae_gidnumer as ZamNumer,
zae_gidlp as ZamLp
from
cdn.zamelem
where
zae_gidnumer=@gid
-- **************** zamknięcie ****************
select
'XLZamknijDokument' as _komenda, /* _komenda API którą trzeba wywołać */
0 as Tryb /* Tryb 0 - to zatwierdzenie */
end
Następnie procedura kolejki. Tym razem jej zadaniem jest zwracanie kolejnych nagłówków zamowień zakupu, które aa przekonwertuje na PZty.
Kod: Zaznacz cały
if OBJECT_ID('aa.ZZtoPZKolejka') is not null drop procedure aa.zztopzkolejka;
go;
create procedure [aa].[ZZtoPZKolejka]
as
begin
declare @Gid as int;
select
top 1
@Gid=zan_gidnumer
from
cdn.zamnag
where
zan_gidtyp=960 and /* zamówienia */
ZaN_Stan=3 and /* potwierdzone */
ZaN_Aktywny=0 and /* nie jest w tej chwili edytowany */
ZaN_ZamTyp=1152 and /* ZZ */
zan_url not like 'aa start%' /* nie jest w tej chwili pobierany */
if(@Gid is not null)
update cdn.zamnag set zan_url='aa start ' + convert(varchar(20), getdate(),120) where zan_gidnumer=@Gid;
else
set @Gid=0;
select @Gid as gid, 'aa.ZZtoPZDane' as procedura
end
Następnie musimy wywołać aa.exe z odpowiednimi parametrami, aby wskazać na czerpanie danych z tej procedury kolejki, oczywiście ten element trzeba dostosować tak by podłączyć się do lokalnej bazy danych.
Kod: Zaznacz cały
@echo off
chcp 1250
aa.exe --zrodlo=n:35,aa.ZZtoPZDane ^
--dbUser=sa ^
--dbPass=aaaaaa ^
--cdnName=3lance ^
--cdnLogin=ADMIN ^
--cdnPass="" ^
--logInfo="*.debug=false;*.info=true" ^
--dbString="DRIVER={SQL Server};Server=cdnsrv\ex14;Database=ERPXL_3lance"
bazę danych zawierającą podstawowe dane przydatne do testowania funkcjonalności można pobrać tutaj
darmową wersję ApiAutomatora tutaj