Příklad 10 - Založení kusovníku a technologického postupu
Následující příklady popisují práci s objekty kusovníku a technologického postupu modulu výroba. Konkrétně jejich zakládání z externího zdroje. Uvedena je také ukázka podpůrné procedury pro kontrolu a případné zakládání použitých skladových karet. Příklady jsou koncipovány jako vzor a je nutné je doplnit o příkazy k získání vstupních dat. Místa pro příkazy se vstupními daty jsou v textu označeny znakem "%". Například takto: %Název kusovníku%. Takto naimportované kusovníky a Technologické postupy jsou zakládány jako neschválené. Použitá syntaxe odpovídá prostředí FoxPro.
Příklad založení kusovníku
&& Založení objektu kusovníku
O_PieceList = G3.CreateObject("@PLMPieceList")
D_PieceList = G3.CreateValues("@PLMPieceList")
O_PieceList.PrefillValues(D_PieceList)
D_PieceList.ValueByName("StoreCard_ID") = % ID skladové karty výrobku%
D_PieceList.ValueByName("QUnit") = % Název jednotky kusovníku%
D_PieceList.ValueByName("Quantity") = 1
D_PieceList.ValueByName("Unitrate") = % Vztah jednotky kusovníku%
D_PieceList.ValueByName("Name") = % Název kusovníku%
D_PieceList.ValueByName("PieceListType") = % Typ kusovníku%
&& Řádky kusovníku, v cyklu je nutné zajistit procházení řádků zdroje dat.
m.PosIndex = 1
do while ... && Nutno doplnit podmínku testování konce vstupních dat
O_PL_Rows = D_PieceList.ValueByName("Rows")
D_PL_Rows = G3.CreateValues("@PLMPieceListsRow")
D_PL_Rows.ValueByName("StoreCard_ID") = % ID skladové karty dílu%
D_PL_Rows.ValueByName("PosIndex") = m.PosIndex && číslo pozice
D_PL_Rows.ValueByName("Issue") = % Výdej%
D_PL_Rows.ValueByName("quantity") = % Množství součásti ve vztahu 1%
D_PL_Rows.ValueByName("Qunit") = % Jednotka pro množství součásti%
D_PL_Rows.ValueByName("UnitRate") = % Vztah jednotky součásti%
O_PL_Rows.Add(D_PL_Rows)
m.PosIndex = m.PosIndex + 1
skip
enddo
O_PieceList.CreateNewFromValues(D_PieceList)
Popis vstupních údajů kusovníku
% ID skladové karty výrobku% = Nejlépe doplnit pomocí procedury jako níže uvedené CardCheck() nebo podobné.
Vyplnění není povinné.
% Název jednotky kusovníku% = Název jednotky, ke které je postup sestavován.
Je nutné zaručit, aby tato jednotka existovala u skladové karty v hlavičce techn. postupu.
Zapisuje se pouze v případě, pokud je doplněna skladová karta.
% Vztah jednotky kusovníku% = Vztah jednotky, ke které je kusovník sestavován.
Položka musí být vždy vyplněna hodnotou 1.
Zapisuje se pouze v případě, pokud je doplněna skladová karta.
% Název kusovníku% = Libovolný textový popis kusovníku
% ID skladové karty dílu% = Nejlépe doplnit pomocí procedury CardCheck() nebo podobné.
% Typ kusovníku% = Typ kusovníku (1 = Prototyp, 2 = Nultá série, 3 = Sériová výroba)
% Výdej% = Jak zajistit polotovar (0 = Sklad, 1 = Výroba, 2 = Kooperace)
Příklad vložení nového technologického postupu
&& Založení objektu Technologického postupu
O_Routine = G3.CreateObject("@PLMRoutine")
D_Routine = G3.CreateValues("@PLMRoutine")
O_Routine.PrefillValues(D_Routine)
D_Routine.ValueByName("StoreCard_ID") = % ID skladové karty výrobku%
D_Routine.ValueByName("QUnit") = % Název jednotky techn. postupu%
D_Routine.ValueByName("Quantity") = 1
D_Routine.ValueByName("Unitrate") = % Vztah jednotky techn. postupu%
D_Routine.ValueByName("RoutineType_ID") = % ID typu techn. postupu%
D_Routine.ValueByName("Name") = % Název techn. postupu%
&& Řádky postupu, v cyklu je nutné zajistit procházení řádků zdroje dat.
do while ... && Nutno doplnit podmínku testování konce vstupních dat
O_R_Rows = D_Routine.ValueByName("Rows")
D_R_Rows = G3.CreateValues("@PLMRoutinesRow")
D_R_Rows.ValueByName("Batch") = % Dávková operace%
D_R_Rows.ValueByName("Title") = % Text operace%
D_R_Rows.ValueByName("SalaryClass_ID") = % ID tarifní třídy%
D_R_Rows.ValueByName("PosIndex") = % Číslo operace%
D_R_Rows.ValueByName("SetupTime") = % Čas TAC%
D_R_Rows.ValueByName("PartTime") = % Čas TBC%
if % Operace je kooperací%
D_R_Rows.ValueByName("Cooperation") = .t.
Endif
D_R_Rows.ValueByName("Workplace_ID") = % ID pracoviště%
skip
&& Nastavení ukončující operace.
if % Poslední řádek zdroje dat%
D_R_Rows.ValueByName("Finished") = .t.
Endif
O_R_Rows.Add(D_R_Rows)
enddo
O_Routine.CreateNewFromValues(D_Routine)
Popis vstupních údajů technologického postupu
% ID skladové karty výrobku% = Nejlépe doplnit pomocí procedury jako níže uvedené CardCheck() nebo podobné.
Vyplnění není povinné.
% Název jednotky techn. postupu% = Název jednotky, ke které je techn. postup sestavován.
Je nutné zaručit, aby tato jednotka existovala u skladové karty v hlavičce techn. postupu.
Zapisuje se pouze v případě, pokud je doplněna skladová karta.
% Vztah jednotky techn. postupu% = Vztah jednotky, ke které je techn. postup sestavován.
Položka musí být vždy vyplněna hodnotou 1.
Zapisuje se pouze v případě, pokud je doplněna skladová karta.
% Název techn. postupu% = Libovolný textový popis kusovníku.
% Dávková operace% = Vyplňte hodnotu .T. pro skladové karty s třídou jednoduchá karta nebo karta se šaržemi.
Hodnotu .F. vyplňte pro karty s třídou karta se sériovými čísly.
% ID tarifní třídy% = ID požadovaného záznamu z číselníku Tarifních tříd.
% ID pracoviště% = ID požadovaného záznamu z číselníku Pracovišť.
Procedura pro kontrolu a zakládání skladových karet
&& Kontrola existence skladové karty a její případné založení.
&& POZOR, tato procedura při zakládání skladových karet vyplňuje pouze základní položky.
&& Vyplnění ostatních je nutné příp. doplnit.
procedure CardCheck
parametrs cCode,cName,lIsProduct,cUnit,nUnitRate
&& Popis vstupních parametrů procedury:
&& cCode = Kód skladové karty
&& cName = Název karty
&& lIsProduct = Karta je výrobkem
&& cUnit = Název jednotky
&& nUnitRate = Převodní vztah jednotky
private cCode,OldSel,SCard_ID,o_SCard,d_SCard,cName,lIsProduct,;
cUnit,nUnitRate,cID,CatProduct,o_SC_Unit, d_SC_Unit,Unit_OK
&& Otevřeme číselník skladových karet
mRoll = G3.GetRoll("S3WZQKDB5FDL342M01C0CX3FCC", 0)
m.SCard_ID = ""
If mRoll.Find("CODE", allt(m.cCode), @m.SCard_ID)
&& Karta existuje. Načtení jejích údajů.
O_SCard = G3.CreateObject("@StoreCard")
D_SCard = O_SCard.GetValues(m.SCard_ID)
m.cName = D_SCard.ValueByName("name")
if m.lIsProduct
&& Hledáme-li kartu do hlavičky kusovníku/techn. postupu, musíme zabezpečit její označení jako "Výrobek".
D_SCard.ValueByName("IsProduct") = .t.
Endif
D_SCard.ValueByName("AuthorizedAt$DATE") = date()
D_SCard.ValueByName("AuthorizedBy_id") = "SUPER00000"
P_SCard.UpdateValues(m.SCard_ID,d_SCard)
&& Kontrola vkládané jednotky
O_SC_Unit = d_SCard.ValueByName("StoreUnits")
m.Unit_OK = .f.
for m.i = 0 to o_SC_Unit.count -1
D_SC_Unit = o_SC_Unit.item(m.i)
if padr(d_SC_Unit.ValueByName("Code"),3) = padr(m.Unit,3) ;
and d_SC_Unit.ValueByName("Unitrate") = m.nUnitRate
m.Unit_OK = .t.
Endif
next
if not m.Unit_OK
=Msg( allt(m.cCode) + ' - Nesouhlasí jednotka ' + m.cUnit + ;
' nebo její vztah!')
endif
else
&& Karta neexistuje, musíme ji založit
O_SCard = G3.CreateObject("@StoreCard")
D_SCard = G3.CreateValues("@StoreCard")
O_SCard.PrefillValues(d_SCard)
&& Třída karty. Zde jako karta typu "jednoduchá".
D_SCard.ValueByName("Category") = "0"
D_SCard.ValueByName("Code") = allt(cCode)
D_SCard.ValueByName("Name") = allt(CName)
D_SCard.ValueByName("StoreCardCategory_ID") = IIF(m.lIsProduct,% ID typu skl. karet pro výrobky%, ;
% ID typu skl. karet pro materiály%)
D_SCard.ValueByName("VATRate_ID") = % ID DPH sazby%
if m.lIsProduct
D_SCard.ValueByName("IsProduct") = .t.
Endif
D_SCard.ValueByName("AuthorizedAt$DATE") = date()
D_SCard.ValueByName("AuthorizedBy_id") = "SUPER00000" && Nutno doplnit uživatele, který bude uveden ve schválení skl. karet
&& Založíme jednotku
O_SC_Unit = d_SCard.ValueByName("StoreUnits")
D_SC_Unit = G3.CreateValues("@StoreUnit")
O_SC_Unit.Remove (0) && Použít, pokud je nastaveno předvyplňování jednotek
D_SC_Unit.ValueByName("parent_id") = d_SCard.ValueByName("ID")
D_SC_Unit.ValueByName("Code") = allt(m.cUnit)
D_SC_Unit.ValueByName("Unitrate") = m.nUnitRate
O_SC_Unit.Add(d_SC_Unit)
D_SCard.ValueByName("MainUnitCode") = ALLTRIM(m.cUnit)
m.SCard_ID = O_SCard.CreateNewFromValues(d_SCard)
endif
G3.DropRoll("S3WZQKDB5FDL342M01C0CX3FCC", 0)
return