Jest to rozszerzona wersja podanego w Dokumentacji rozwiązania, którego zadaniem jest stworzenie wielu zamówień, które wykorzystamy na kolejnych etapach poznawania programu.
W tym przykładzie nie korzystamy jeszcze z zewnętrzych systemów, wykorzystamy nasz serwer SQL do wygenerowania losowych zamówień o losowej ilości pozycji.
Poniższa Procedura Danych wybiera losowo klienta i listę towarów, ZZ jest zamykany w Trybie=2 czyli - potwierdzony.
Procedura to tak naprawdę tylko 3 selecty, z czego
- pierwszy zwraca jeden wiersz - nagłówek zamówienia
- drugi zwraca kilka losowych (do 50) - pozycji zamówienia
- ostatni zwraca wiersz z komendą zamknięcia zamówienia
Kod: Zaznacz cały
create procedure [aa].[RandomZZDane] @Gid int = 0
as
begin
declare @MagNr int; /* zmienna - losowy magazyn */
declare @KliNr int; /* zmienna - losowy klient */
declare @RndNr int; /* zmienna - losowa ilość pozycji */
select top 1 @MagNr=mag_gidnumer from cdn.magazyny order by newid();/* wybór - losowy magazyn */
select top 1 @KliNr=knt_gidnumer from cdn.kntkarty order by newid(); /* wybór - losowy klient */
set @RndNr = abs(checksum(newid()) % 50) + 1; /* wybór - losowa ilość pozycji */
-- **************** nagłówek ****************
select
top 1
'XLNowyDokumentZam' as _komenda, /* _komenda API którą trzeba wywołać */
5 as Typ, /* 1-Zapytanie na zakup, 2-Zapytanie na sprzedaż, 3-Oferta zakupu, 4-Oferta sprzedaży, 5-Zamówienie na zakup, 6-Zamówienie na sprzedaż*/
knt_gidtyp as KntTyp,
knt_gidnumer as KntNumer,
mag_kod as Magazyn
from
cdn.kntkarty
inner join
cdn.magazyny
on
knt_gidnumer=@KliNr and
mag_gidnumer=@MagNr
-- **************** pozycje ****************
select
top (@RndNr)
'XLDodajPozycjeZam' as _komenda, /* _komenda API którą trzeba wywołać */
format(abs(checksum(newid()) % 240) + 12,'G','pl-PL') as Ilosc,
format(TwC_Wartosc,'G','pl-PL') as Cena,
twr_gidtyp as TwrTyp,
twr_gidnumer as TwrNumer
from
cdn.twrkarty
inner join
cdn.twrceny
on
TwC_TwrNumer = Twr_GIDNumer
where
twc_twrlp=1 and
twc_wartosc > 0 /* wybieraj tylko te towary, które mają zdefiniowaną cenę zakupu */
order by
newid()
-- **************** zamknięcie ****************
select
'XLZamknijDokumentZam' as _komenda, /* _komenda API którą trzeba wywołać */
2 as TrybZamkniecia
end
Kod: Zaznacz cały
@echo off
chcp 1250
aa.exe --zrodlo=n:1,aa.TestoweZZDane ^
--dbUser=sa ^
--dbPass=aaaaaa ^
--cdnName=3lance ^
--cdnLogin=ADMIN ^
--cdnPass="" ^
--dbString="DRIVER={SQL Server};Server=cdnsrv\ex14;Database=ERPXL_3lance" ^
--logFile=test.log
Efektem działania skryptu jest wystawienie dokumentu ZZ na 8 pozycji: Program i przykładową bazę danych można ściągnąć tutaj: https://github.com/xl-tools/ApiAutomato ... a/releases