TbePartListBusinessController
TbePartListBusinessController
Business Controller, der für Stücklisten-Bearbeitung zuständig ist.
Eigenschaften | Beschreibung |
---|---|
CbDataModule:O | Datenmodul (TbeDbGet) |
CbOptions:O | Einstellungen für die Bearbeitung |
Funktionen und Methoden
Funktion | Parameter | Beschreibung |
---|---|---|
CbClearOptions() |
| Alle Einstellungen zurücksetzen (CbOptions) |
CbInsert() | aPartListBO:TBePartListBO, aMainArticleNo:C, aPositionString:C, aPartArticleNo:C | Neue Stücklisten-Position anlegen |
CbCancel() | aPartListBO:TBePartListBO | Abbrechen |
CbEdit() | aPartListBO:TBePartListBO | Bearbeiten |
CbDelete() | aPartListBO:TBePartListBO | Löschen |
CbPost() | aPartListBO:TBePartListBO | Speichern |
CbValidate() | aPartListBO:TBePartListBO | Eingaben validieren (wird automatisch in Post aufgerufen) |
CbGetProductionOrdersForMainArticle() | aArticleNo:C | Liste der offenen Produktionsaufträge mit dem Artikelnummer holen (Rückgabe: Array) |
CbRecalculateProductionOrders() | aOrders:A | Produktionsstücklisten neu berechnen für ausgewählte Aufträge |
CbImportFromPartList() | aPartListBO:TBePartListBO | Importiert die Stückliste von Folgende
|
CbImportFromProdOrder() | aPartListBO:TBePartListBO | Importiert einen Produktionsauftrag mit Auftragsnummer Folgende
|
CbImportFromDBaseFile() | aPartListBO:TBePartListBO | Importiert eine DBF/ADT Datei mit Namen Folgende
|
CbImportFromTextFile() | aPartListBO:TBePartListBO | Importiert eine CSV Datei mit Namen Folgende
|
Beispiel
|
oDM:O, oPL_BC:O, oPL_BO:O, oArt_BC:O, oArt_BO:O, cAssembly:C,
cPart1:C, cPart2:C, cPart2Ex:C, cPart3:C, cRecursionArticle:C,
cPart1Order:C, cPart2Order:C, cPart3Order:C, cRecursionArticleOrder:C,
cAssemblyInRecursionOrder:C
|
//#typesafety
cAssembly := 'BAUGRUPPE',
cPart1 := 'MUTTER M4',
cPart2 := 'KLEBSTOFF',
cPart2Ex := 'B-1',
cPart3 := 'A_MONTAGE',
cRecursionArticle := 'B-4',
cPart1Order := '000',
cPart2Order := '001',
cPart3Order := '002',
cRecursionArticleOrder := '003',
cAssemblyInRecursionOrder := '999',
//******************************************************************************
function DeleteAllPartListPos(cArticle:C, cPartOrder:C, cPart:C)
|aArr:O, i:N|
aArr := oPL_BO.CbAsArray(cArticle),
for i := 0 to aArr.Count() - 1 do
oPL_BO.CbGoToID(aArr.getInteger({i, 'id'})),
oPL_BC.CbDelete(oPL_BO),
next,
end,
//******************************************************************************
function CleanUp()
|oQuery:O|
oQuery := CreateObject('TbeADSQuery'),
startseq
oQuery.SQL := 'DELETE FROM "DAB035.ADT" WHERE ARTNR=' + "'" + cAssembly + "'",
oQuery.CbExecSQL(),
oQuery.SQL := 'DELETE FROM "DAB240.ADT" WHERE ARTNR1=' + "'" + cAssembly + "'",
oQuery.CbExecSQL(),
always
DestroyObject(oQuery),
stopseq,
oDM.Transaction_Begin(),
DeleteAllPartListPos(cAssembly, cPart1Order, cPart1),
DeleteAllPartListPos(cAssembly, cPart2Order, cPart2),
DeleteAllPartListPos(cAssembly, cPart3Order, cPart3),
DeleteAllPartListPos(cRecursionArticle, cAssemblyInRecursionOrder, cAssembly),
DeleteAllPartListPos(cAssembly, cRecursionArticleOrder, cRecursionArticle),
oDM.Transaction_Commit(),
oDM.Transaction_Begin(),
startseq
oArt_BO.CbGoToArticleNo(cAssembly),
oArt_BC.CbDelete(oArt_BO),
onerror
stopseq,
oDM.Transaction_Commit(),
end,
//******************************************************************************
function Setup()
oDM.Transaction_Begin(),
oArt_BC.CbInsertArticle(oArt_BO, cAssembly),
oArt_BO.CbArticleType := 'B',
oArt_BO.CbDecimals := 0,
oArt_BC.CbPost(oArt_BO),
oDM.Transaction_Commit(),
end,
//******************************************************************************
function SimplePL(lTest:L:=False)
oDM.Transaction_Begin(),
oPL_BC.CbInsert(oPL_BO, cAssembly, cPart1Order, cPart1),
oPL_BO.CbQuantity := 15,
oPL_BC.CbPost(oPL_BO),
oPL_BC.CbInsert(oPL_BO, cAssembly, cPart2Order, cPart2),
oPL_BO.CbQuantity := 5,
oPL_BC.CbPost(oPL_BO),
oPL_BC.CbInsert(oPL_BO, cAssembly, cPart3Order, cPart3),
oPL_BO.CbQuantity := 30,
oPL_BC.CbPost(oPL_BO),
oDM.Transaction_Commit(),
if lTest then
meld('BAUGRUPPE-Stückliste erzeugt'),
browse(,oPL_BO.CbTable),
endif,
end,
//******************************************************************************
function EditPL(lTest:L:=False)
|aArr:O, oObj:O|
oDM.Transaction_Begin(),
// Mengen ändern
aArr := oPL_BO.CbAsArrayFiltered(cAssembly, cPart1),
if aArr.Count() > 0 then
oPL_BO.CbGoToID(aArr.getInteger({0, 'id'})),
oPL_BC.CbEdit(oPL_BO),
oPL_BO.CbQuantity := 0,
oPL_BO.CbFixedQuantity := 10,
oPL_BC.CbPost(oPL_BO),
endif,
// Artikel ändern
aArr := oPL_BO.CbAsArrayFiltered(cAssembly, cPart2),
if not Empty(aArr) then
oPL_BO.CbGoToID(aArr.getInteger({0, 'id'})),
oPL_BC.CbEdit(oPL_BO),
oPL_BO.CbPartArticleNo := cPart2Ex,
oPL_BC.CbPost(oPL_BO),
endif,
oDM.Transaction_Commit(),
if lTest then
meld('BAUGRUPPE-Stückliste editiert'),
browse(,oPL_BO.CbTable),
endif,
// Artikel zurücksetzen
oDM.Transaction_Begin(),
aArr := oPL_BO.CbAsArrayFiltered(cAssembly, cPart2Ex),
if not Empty(aArr) then
oPL_BO.CbGoToID(aArr.getInteger({0, 'id'})),
oPL_BC.CbEdit(oPL_BO),
oPL_BO.CbPartArticleNo := cPart2,
oPL_BC.CbPost(oPL_BO),
endif,
oDM.Transaction_Commit(),
end,
//******************************************************************************
function Recursion(lTest:L:=False)
|lRecursionBlocked:L|
startseq
oDM.Transaction_Begin(),
oPL_BC.CbInsert(oPL_BO, cRecursionArticle, cAssemblyInRecursionOrder, cAssembly),
oPL_BO.CbQuantity := 1,
oPL_BC.CbPost(oPL_BO),
oDM.Transaction_Commit(),
oDM.Transaction_Begin(),
lRecursionBlocked := False,
startseq
oPL_BC.CbInsert(oPL_BO, cAssembly, cRecursionArticleOrder, cRecursionArticle),
oPL_BO.CbQuantity := 1,
oPL_BC.CbPost(oPL_BO),
onerror
oPL_BC.CbCancel(oPL_BO),
lRecursionBlocked := true,
stopseq,
if not lRecursionBlocked then
SetError('Recursion was not blocked and it should be!!'),
endif,
oPL_BC.Options.AllowRecursion := true,
oPL_BC.CbInsert(oPL_BO, cAssembly, cRecursionArticleOrder, cRecursionArticle),
oPL_BO.CbQuantity := 1,
oPL_BC.CbPost(oPL_BO),
oDM.Transaction_Commit(),
if lTest then
meld('BAUGRUPPE-Rekursion'),
browse(,oPL_BO.CbTable),
endif,
always
oDM.Transaction_TryRollback(),
oDM.Transaction_Begin(),
DeleteAllPartListPos(cRecursionArticle, cAssemblyInRecursionOrder, cAssembly),
DeleteAllPartListPos(cAssembly, cRecursionArticleOrder, cRecursionArticle),
oDM.Transaction_Commit(),
stopseq,
end,
//******************************************************************************
function CreateProductionOrder(lTest:L:=False)
|oProdDispo_BC:O, oProdDispo_BO:O, oDM2:O, oDab240:O|
oDM2 := CreateObject('TbeDbGet'),
startseq
oProdDispo_BC := CreateObject('TBeProductionDispositionBC',,oDM2),
oProdDispo_BO := CreateObject('TBeProductionDispositionBO',,oDM2),
oProdDispo_BC.CbDataModule := oDM2,
oProdDispo_BO.CbDataModule := oDM2,
oDM2.Transaction_Begin(),
oProdDispo_BC.CbDispoCreate(oProdDispo_BO, cAssembly),
oProdDispo_BO.CbQuantity := 3,
oProdDispo_BO.CbCommiss := 'T' + Str(Randomrange(-99999, 99999)),
oProdDispo_BC.CbDispoPost(oProdDispo_BO, true, true, true, true, false),
oDM2.Transaction_Commit(),
oProdDispo_BC.CbDispoRelease(oProdDispo_BO, true),
oProdDispo_BC.CbDispoToProductionOrder(oProdDispo_BO),
if lTest then
meld('Produktionsauftrag angelegt'),
oDab240 := BeOpen(waDAB240),
startseq
DbLocate('ARTNR1', {cAssembly}, 0, oDab240),
browse(,oDab240),
always
BeClose(oDab240),
stopseq,
endif,
always
DestroyObject(oDM2),
stopseq,
end,
//******************************************************************************
function EditProductionOrder(lTest:L:=False)
|aArr:A, oDab240:O|
aArr := oPL_BC.CbGetProductionOrdersForMainArticle(cAssembly),
writeln(ArrToStr(aArr)),
oPL_BC.CbRecalculateProductionOrders(aArr),
if lTest then
meld('Produktionsauftrag editiert'),
oDab240 := BeOpen(waDAB240),
startseq
DbLocate('ARTNR1', {cAssembly}, 0, oDab240),
browse(,oDab240),
always
BeClose(oDab240),
stopseq,
endif,
end,
oDM := CreateObject('TbeDbGet'),
startseq
oArt_BC := CreateObject('TbeArticleBusinessController',,oDM),
oArt_BO := CreateObject('TbeArticleBO',,oDM),
oPL_BC := CreateObject('TbePartListBusinessController',,oDM),
oPL_BO := CreateObject('TbePartListBO',,oDM),
oArt_BC.CbDataModule := oDM,
oArt_BO.CbDataModule := oDM,
oPL_BC.CbDataModule := oDM,
oPL_BO.CbDataModule := oDM,
CleanUp(),
Setup(),
SimplePL(true),
CreateProductionOrder(true),
EditPL(true),
Recursion(true),
EditProductionOrder(true),
always
oDM.Transaction_TryRollback(),
DestroyObject(oDM),
stopseq,