ApiAutomator przykład 2 - przekształcanie zamówień zakupu na przyjęcia

Program do automatyzacji pracy administratora i użytkowników systemu ERP XL
Awatar użytkownika
mikey
Site Admin
Posty: 97
Rejestracja: 25 lis 2007, 23:42
Rola: Administrator CDN XL
Wersja: 2016
Lokalizacja: Wielkopolska

ApiAutomator przykład 2 - przekształcanie zamówień zakupu na przyjęcia

Post autor: mikey »

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.

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
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.

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
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.

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" 
ź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

ODPOWIEDZ