Příklad 18 - Změna stavu na nabídce vydané

' Konstanty pro uvedené ID, je třeba upravit pro konkrétní data	
Const cIssuedOfferType_ID = "2000000101"
Const cDocQueue_ID = "1900000101"
Const cPeriod_ID = "5200000101"
Const cFirm_ID = "3000000101"
Const cRole_ID = "4000000101"
Const cUser_ID = "1600000101"
Const cDivision_ID = "2100000101"
Const cStore_ID = "2100000101"
Const cStoreCard_ID = "2100000101"
Const cVATRate_ID = "01900X0000"

Dim G3
Set G3 = CreateObject("AbraOLE.Application")
G3.Login "Supervisor", ""

' Nová nabídka
Dim OfferObject, OfferRows, OfferData, OfferRowData, i, OfferID
Set OfferObject = G3.CreateObject("@IssuedOffer")
Set OfferData = G3.CreateValues("@IssuedOffer")
OfferObject.PrefillValues OfferData
OfferData.ValueByName("IssuedOfferType_ID") = cIssuedOfferType_ID
OfferData.ValueByName("DocQueue_ID") = cDocQueue_ID
OfferData.ValueByName("Period_ID") = cPeriod_ID
OfferData.ValueByName("Firm_ID") = cFirm_ID
OfferData.ValueByName("DeadLineToSend$DATE") = Now + 7
OfferData.ValueByName("ResponsibleRole_ID") = cRole_ID
OfferData.ValueByName("ActualSolverRole_ID") = cRole_ID
OfferData.ValueByName("ResponsibleUser_ID") = cUser_ID
OfferData.ValueByName("ActualSolverUser_ID") = cUser_ID
OfferData.ValueByName("Description") = "Automaticky generováno " & Now

' Přidání řádku
Set OfferRows = OfferData.ValueByName("Rows")
Set OfferRowData = G3.CreateValues("@IssuedOfferRow")
OfferRowData.ValueByName("RowType") = 3
OfferRowData.ValueByName("Store_ID") = cStore_ID
OfferRowData.ValueByName("StoreCard_ID") = cStoreCard_ID
OfferRowData.ValueByName("QUnit") = "ks"
OfferRowData.ValueByName("UnitRate") = 1
OfferRowData.ValueByName("Quantity") = 2
OfferRowData.ValueByName("Division_ID") = cDivision_ID
OfferRowData.ValueByName("VATRate_ID") = cVATRate_ID
OfferRowData.ValueByName("CostPriceSourceType") = 1 'ručně zadaná cena
OfferRowData.ValueByName("CostPrice") = 500
OfferRows.Add OfferRowData

' Vytvoření nabídky 
OfferID = OfferObject.CreateNewFromValues(OfferData)

' Vyvolání změny stavu nabídky ve stejném dialogu, jakým je prováděno přímo v systému ABRA
' Vyvolání automatické změny stavu
OfferObject.AutomaticChangeState
' Zahájení schvalování (uvedeno jen pro demonstraci, schvalování nabídky ihned po vytvoření nebude příliš časté) 
OfferObject.StartConfirmation(OfferID)
' Vyvolání automatické změny stavu
OfferObject.AutomaticChangeState

' Vyvolání změny stavu nabídky ručně (pro test zapoznámkujte předchozí blok)
Dim States
set States = G3.CreateStrings

' Naplnění možných stavů, do kterých se nabídka může přepnout
' Tato metoda naplní stringlist ve formátu název stavu=OID a zároveň takto zapamatované stavy pro nabídku vyprázdní 
' Tzn. další volání nevrátí žádné stavy 
set States = OfferObject.AutomaticPossibleStates
' Zobrazení, co metoda vrátila
For i = 0 To States.Count-1
 MsgBox States.Strings(i)
Next
' Změna stavu na nabídce (vybrán první vrácený)
if States.Count > 0 then OfferObject.ChangeState Now, States.Values(States.Names(0)), cRole_ID, 0, "", ""