xBIORec.BeginSection("Pozycja dokumentu")
xBIORec.SetField("opis","usługa rozrywkowa")
xBIORec.SetField("ilosc","2")
xBIORec.SetField("jednostkaMiary","godz.")
xBIORec.SetField("cena","75")
xBIORec.EndSection()
WystawDokumentMagazynowy(id,1)
Używam standardowej operacji. Z dokumentami PW jest wszystko ok, a dla WZ nie wstawia się cena. Dopiero po tym jak nie ma stanu i dokument się importuje do bufora to cena się pojawia. Jeśli jest stan i dokument od razu się wystawia to ceny nie ma. HELP!!
FORTE 2011.b
Kod:
#include "MES Config include"
//Deklaracje zmiennych
Dispatch MES_Communication
Dispatch SDO
Dispatch SDOItem
Dispatch SDOFiles
int filesCounter
int positionsCounter
//dokument
string typ = ""
string seria = ""
string dataWystawienia = ""
string dataOperacji = ""
string magazyn = ""
string kontrahent = ""
string kodPozycji = ""
string ilosc = ""
string jm = ""
string nazwaDostawy = ""
long id
string path = ""
string opis = ""
string zamowienie = ""
string querySQL2
string qsql2
dispatch rs2 = "ADODB.Recordset"
dispatch con2 = GetAdoConnection()
string twnazwa, cenaPozDok
string zamkod = ""
string filePath = ""
string backupFilePath = ""
IOrec ior
dispatch con = GetAdoConnection()
dispatch rs = "ADODB.Recordset"
string querySQL
string qsql
float przelicznik
float iloscc
float iloscf
float przelicznik2
string tona
string jm1
string importFol = "E:\\oracle\\oradata\\QPROD\\utl_file_dir_QPROD\\exp"
MES_Communication.Create("MES_Communication.TransferFiles")
SDOFiles = MES_Communication.Method("GetFiles",importFol)
For filesCounter = 0 To filesCounter > SDOFiles.Count - 1
filePath = MES_Communication.Method("GetFile",SDOFiles,filesCounter)
SDO = MES_Communication.Method("ImportSDO",filePath)
typ = SDO.SdoDocument.DOC_TYPE_NR
magazyn = SDO.SdoDocument.WH_NR
if magazyn != "P01" Then
if typ == "WZ" then seria = seriaWZ
if typ == "PZ" then seria = seriaPZ
if typ == "RW" then seria = seriaRW
if typ == "PW" then seria = seriaPW
if typ == "MRW" then
seria = seriaRW
typ = "RW"
endif
if typ == "MPW" then
seria = seriaPW
typ = "PW"
endif
if typ == "MM+" then seria = seriaMMplus
if typ == "MM-" then seria = seriaMMminus
if typ == "IW-" then
seria = seriaINminus
typ = "IN-"
endif
if typ == "IW+" then
seria = seriaINplus
typ = "IN+"
endif
dataWystawienia = SDO.SdoDocument.DATE_EMITTED
dataOperacji = SDO.SdoDocument.DATE_EMITTED
kontrahent = SDO.SdoDocument.CUSTOMER_NR
opis = SDO.SdoDocument.DOC_NR
//if zamowienie != "0" then
//ior.SetField("odebranyPrzez", zamowienie)
// endif
//IOrec
ior.SetField("typDK", typ)
ior.SetField("seria", seria)
//rezerwacja
//0 - brak
//1 - ilościowa
//2 - ze wskazaniem dostawy
ior.SetField("rezerwacja", "1")
ior.SetField("dataWystawienia", dataWystawienia)
ior.SetField("dataOperacji", dataOperacji)
ior.SetField("opis", opis)
//magazyn
ior.SetField("dzial", magazyn)
//kontrahent (dla dokumentów MM w polu kontrahent jest przesyłany magazyn przyjmujący)
ior.BeginSection("DaneKh")
ior.SetField("KhKod", kontrahent)
ior.EndSection()
//Pozycje
For positionsCounter = 0 To positionsCounter > SDO.SdoDocument.Items.Count - 1
SDOItem = MES_Communication.Method("GetItem",SDO,positionsCounter)
kodPozycji = SDOItem.PRODUCT_NR
zamowienie = SDO.SdoDocument.C_ORDER_NR
querySQL = "select przeljmdod1 as przelicznik1,jmdod1 as tona1,jm as jednostkam,* from dbo.tw where tw.kod="
qsql = using "%s'%s'",querySQL,kodPozycji
ilosc = Using "%f", SDOItem.QUANTITY
if rs.State == 1 then rs.Close()
rs.Open(qsql, con, 3)
if rs.eof then
//message "Eksport został zatrzymany, nie ma takiego towaru w FORTE"
goto konieczadania
endif
rs.MoveFirst()
// while !rs.EOF
//message "nie ma nic"
//else
jm1 = rs.Fields("jednostkam").Value
przelicznik = rs.Fields("przelicznik1").Value
tona = rs.Fields("tona1").Value
if tona == "T" then
przelicznik = 1.0
endif
if przelicznik == 0.0 then
przelicznik = 1.0
endif
if jm1 == "szt" then
przelicznik = 1.0
endif
/*
if typ == "IN+" then
przelicznik = 1.0
endif
if typ == "WZ" then
przelicznik = 1.0
endif
*/
//wend
//message using "%f", przelicznik
iloscf = val(ilosc)
//przelicznik2 = using "%f", przelicznik
iloscc = przelicznik*iloscf
ilosc = Using "%f", iloscc
konieczadania:
//message using "%f", iloscc
ior.BeginSection("Pozycja dokumentu")
ior.SetField("kod",kodPozycji)
//
querySQL2 = "select nazwa as twnazwa, cn.waluta as walutaPozDok, cn.cena as cenaPozDok, kod from dbo.tw join dbo.cn on cn.idpm=tw.id where cn.aktywna=1 and cn.typ=8 and tw.kod="
//querySQL2 = "select nazwa as twnazwa, kod from dbo.tw where tw.kod="
qsql2 = using "%s'%s'",querySQL2,kodPozycji
if rs2.State == 1 then rs2.Close()
rs2.Open(qsql2, con2, 3)
if rs2.eof then
goto konieczadania2
endif
rs2.MoveFirst()
twnazwa = rs2.Fields("twnazwa").Value
zamkod = using "%s, %s", twnazwa,zamowienie
cenaPozDok = using "%f", rs2.Fields("cenaPozDok").Value
//message cenapozdok
// message using "%f", cenaPozDok
// cenaBazowaPozDok = using "%s",
ior.SetField("opis",zamkod)
ior.SetField("ilosc_ewid", ilosc)
ior.SetField("jednostkaMiary", SDOItem.MU_CODE)
//cenapozdok = "6"
//cenapozdok = kwotanatekst(cenapozdok)
ior.SetField("cena", cenapozdok)
//ior.SetField("waluta", rs2.Fields("walutaPozDok").Value)
//Nazwa dostawy wykorzystywana do dokumentów przyjęcia zewnętrznego (PZ)
If SDO.SdoDocument.DOC_TYPE_NR == "PZ" Then ior.SetField("nazwaDostawy", SDO.SdoDocument.DOC_NR)
If SDO.SdoDocument.DOC_TYPE_NR == "RW" Then
//Podsekcja dostaw dokumentów (wykorzystywana dla dokumentów RW)
//ior.BeginSection("Dostawa")
//ior.SetField("ilosc", ilosc)
//ior.SetField("nazwa_dostawy", nazwaDostawy)
//ior.EndSection()
EndIf
ior.EndSection()
Next positionsCounter
//zapis do bufora
id = ImportMG(ior)
if id == 0 then error "Import dokumentu do bufora nie powiódł się"
//wystawienie dokumentu
WystawDokumentMagazynowy(id,1)
//Wyczyszczenie obiektu
ior.Clear()
//Backup pliku
endif
backupFilePath = "E:\\oracle\\oradata\\QPROD\\utl_file_dir_QPROD\\arc" + "\\" + MES_Communication.Method("GetFileName",filePath)
//message using "%s", backupFilePath
MES_Communication.Method("BackupFile",filePath,backupFilePath)
Next filesCounter
konieczadania2: