;DDT - Import objednávek XML (fy. GLOBALTEK) Name('Import objednávek XML') Designed('OBJP_MAN') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Import objednávek z formátu XML') ;****************************************************************************************************************** ;verze DatumZmeny :Word=ValDate('22.02.2012') ;Datum vytvoření (změny) Verze :String='1.1.' ;Vytvoření sestavy ;****************************************************************************************************************** ;parametry skriptu WWWPage :String='http://globaltek.pertlik.cz/erp/winduoexport.aspx' WWWUser :String='Key' WWWPass :String='Basic: 858b909e8607f29bac31f19d894d7b1f' ;****************************************************************************************************************** ;proměnné WNSType(-1) DeclareRec('Program') DeclareRec('ObjednavkaPrijata') DeclareRec('KeyObjednavkaPrijata1') DeclareRec('KeyObjednavkaPrijata2') DeclareRec('Objednavka') DeclareRec('KeyObjednavka2') DeclareRec('Sklad') DeclareRec('KeySklad1') DeclareRec('KeySklad2') FileXML :String='s:\testicek.xml' ;GetTempFileName() Veta :LongInt VetaO :LongInt VetaR :LongInt ExisR :LongInt VetaS :LongInt ExisS :Boolean MinSklad :Integer VetaOP :LongInt INIPath :String=DataPath+'svsexmli.ini' Castka :Double CastkaR :Double CastkaObj :Double Cislo :LongInt=0 IC :LongInt Doklad :String[10] typ :String tf :TagFile xobjednavky :Boolean xobjednavka :Boolean adresa :Boolean dadresy :Boolean radek :Boolean poznamka :Boolean Pozn :Note SouborLogu :String ;****************************************************************************************************************** ;pomocne procedury OprText :String Procedure DekodText(Vstup:String) OprText=StrFromUTF8(Vstup) OprText=ReplaceStr(OprText,'"','"') OprText=ReplaceStr(OprText,'<','<') OprText=ReplaceStr(OprText,'>','>') OprText=ReplaceStr(OprText,'&','&') OprText=Trim(OprText) END; ;****************************************************************************************************************** ;nacteni xml ModifyMode(True) NewPost() AddToPost(WWWUser,WWWPass) ;HTTPPost(WWWPage,FileXML) ;****************************************************************************************************************** ;načtení objednávek Open(tf,FileXML) InitStatus(1, 'Zpracovávám objednávky z webu') xobjednavky=FindBranch(tf,'?xml','objednavky') while(xobjednavky) begin xobjednavka=FindBranch(tf,'objednavka') while(xobjednavka) begin DekodText(GetBranchAttr(tf,'doklad')) Doklad=OprText KeyObjednavkaPrijata1.Doklad=Doklad if(not FindKey(KeyObjednavkaPrijata1,VetaO)) begin ;{hlavicka} ClearRec(ObjednavkaPrijata) ObjednavkaPrijata.Doklad=Doklad ObjednavkaPrijata.dt_create =GetDate()*65536+GetTime() ObjednavkaPrijata.create =GetUserName() GetItem(ObjednavkaPrijata.ico,GetBranchAttr(tf,'ico')) IC =ObjednavkaPrijata.ico Cislo =GetNewIdent() ObjednavkaPrijata.cislo =Cislo GetItem(ObjednavkaPrijata.obdobi,GetBranchAttr(tf,'obdobi')) GetItem(ObjednavkaPrijata.datum,GetBranchAttr(tf,'datum')) GetItem(ObjednavkaPrijata.datum_zp,GetBranchAttr(tf,'datum_zp')) GetItem(ObjednavkaPrijata.castka,GetBranchAttr(tf,'castka')) GetItem(ObjednavkaPrijata.mena,GetBranchAttr(tf,'mena')) GetItem(ObjednavkaPrijata.castkam,GetBranchAttr(tf,'castkam')) GetItem(ObjednavkaPrijata.counter,GetBranchAttr(tf,'counter')) GetItem(ObjednavkaPrijata.xxx,GetBranchAttr(tf,'xxx')) GetItem(ObjednavkaPrijata.rozkont,GetBranchAttr(tf,'rozkont')) DekodText(GetBranchAttr(tf,'popis')) ObjednavkaPrijata.popis =OprText GetItem(ObjednavkaPrijata.polozek,GetBranchAttr(tf,'polozek')) GetItem(ObjednavkaPrijata.sklpolozek,GetBranchAttr(tf,'sklpolozek')) GetItem(ObjednavkaPrijata.objflags,GetBranchAttr(tf,'objflags')) GetItem(ObjednavkaPrijata.objsysid,GetBranchAttr(tf,'objsysid')) DekodText(GetBranchAttr(tf,'dic')) ObjednavkaPrijata.DIC =OprText DekodText(GetBranchAttr(tf,'odberatel')) ObjednavkaPrijata.Odberatel =OprText DekodText(GetBranchAttr(tf,'rozsireni')) ObjednavkaPrijata.Rozsireni =OprText DekodText(GetBranchAttr(tf,'ulice')) ObjednavkaPrijata.Ulice =OprText DekodText(GetBranchAttr(tf,'mesto')) ObjednavkaPrijata.Mesto =OprText DekodText(GetBranchAttr(tf,'psc')) ObjednavkaPrijata.PSC =OprText DekodText(GetBranchAttr(tf,'stat')) ObjednavkaPrijata.Stat =OprText DekodText(GetBranchAttr(tf,'prijemcenazev')) ObjednavkaPrijata.PrijemceNazev =OprText DekodText(GetBranchAttr(tf,'prijemcerozs')) ObjednavkaPrijata.PrijemceRozs =OprText DekodText(GetBranchAttr(tf,'prijemceulice')) ObjednavkaPrijata.PrijemceUlice =OprText DekodText(GetBranchAttr(tf,'prijemcemesto')) ObjednavkaPrijata.PrijemceMesto =OprText DekodText(GetBranchAttr(tf,'prijemcepsc')) ObjednavkaPrijata.PrijemcePSC =OprText DekodText(GetBranchAttr(tf,'prijemcestat')) ObjednavkaPrijata.PrijemceStat =OprText DekodText(GetBranchAttr(tf,'objednavka')) ObjednavkaPrijata.Objednavka =OprText ObjednavkaPrijata.Stav =8 ;{k vyřízení} GetItem(ObjednavkaPrijata.dodani,GetBranchAttr(tf,'dodani')) DekodText(GetBranchAttr(tf,'dodanistr')) ObjednavkaPrijata.DodaniStr =OprText GetItem(ObjednavkaPrijata.platba,GetBranchAttr(tf,'platba')) GetItem(ObjednavkaPrijata.TerminPo,GetBranchAttr(tf,'terminpo')) GetItem(ObjednavkaPrijata.TerminDo,GetBranchAttr(tf,'termindo')) GetItem(ObjednavkaPrijata.Vyrizeno,GetBranchAttr(tf,'vyrizeno')) DekodText(GetBranchAttr(tf,'vyridil')) ObjednavkaPrijata.Vyridil =OprText DekodText(GetBranchAttr(tf,'vyrdokl')) ObjednavkaPrijata.VyrDokl =OprText GetItem(ObjednavkaPrijata.vyrcis,GetBranchAttr(tf,'vyrcis')) GetItem(ObjednavkaPrijata.odeslano,GetBranchAttr(tf,'odeslano')) ObjednavkaPrijata.DokladOdsl ='' DekodText(GetBranchAttr(tf,'email')) ObjednavkaPrijata.EMail =OprText DekodText(GetBranchAttr(tf,'telefon')) ObjednavkaPrijata.Telefon =OprText GetItem(ObjednavkaPrijata.fakturace,GetBranchAttr(tf,'fakturace')) DekodText(GetBranchAttr(tf,'faktdokl')) ObjednavkaPrijata.FaktDokl =OprText GetItem(ObjednavkaPrijata.faktcis,GetBranchAttr(tf,'faktcis')) VetaOP=AddRec(ObjednavkaPrijata) if(VetaOP=0) Halt() ;{poznamka objednávky} GetBranchToNote(tf,Pozn,'poznobj',True) SetNote(Pozn,ObjednavkaPrijata,Val(Rok(2)),Cislo) CastkaObj=0 ;{radky} radek=FindBranch(tf,'radek') while(radek) begin DekodText(GetBranchAttr(tf,'typ')) typ=OprText if(CompareStr(typ,'0')) begin ClearRec(Objednavka) Objednavka.cislo =GetNewIdent() Objednavka.Vydaj =False Objednavka.Objednavka =Cislo GetItem(Objednavka.subobj,GetBranchAttr(tf,'subobj')) GetItem(Objednavka.wflags,GetBranchAttr(tf,'wflags')) GetItem(Objednavka.typ,GetBranchAttr(tf,'typ')) DekodText(GetBranchAttr(tf,'text')) Objednavka.Text =OprText AddRec(Objednavka) end if((CompareStr(typ,'1'))or(CompareStr(typ,'3'))) begin ClearRec(Objednavka) if(CompareStr(typ,'1')) begin KeySklad1.Length=SizeOf(KeySklad1)-1 DekodText(GetBranchAttr(tf,'material')) KeySklad1.material=OprText if(FindKey(KeySklad1,VetaS)) begin ReadRec(Sklad, VetaS) ExisS=True MinSklad=Sklad.Sklad while((CompareStr(KeySklad1.material,OprText))and(ExisS)) begin ReadRec(Sklad, VetaS) if(MinSklad>Sklad.Sklad) MinSklad=Sklad.Sklad ExisS=NextKey(KeySklad1, VetaS) end end else Message('Neexistuje zboží '+Trim(OprText)+' na skladě '+GetBranchAttr(tf,'sklad')) KeySklad2.Length=SizeOf(KeySklad2)-1 KeySklad2.sklad=Swap(MinSklad) StrToChars(KeySklad2.material,Trim(oprText),' ') if(FindKey(KeySklad2,VetaS)) begin ReadRec(Sklad, VetaS) if(Sklad.SazbaDPH=0) begin Objednavka.DPH=SazbaDPH(True,ObjednavkaPrijata.Datum) end else if(Sklad.SazbaDPH=1) begin Objednavka.DPH=SazbaDPH(False,ObjednavkaPrijata.Datum) end end ;CastkaR = Sklad.CenaD CastkaR = GetBranchAttr(tf,'jedncena') end else CastkaR = GetBranchAttr(tf,'jedncena') Objednavka.cislo =GetNewIdent() Objednavka.Vydaj =False Objednavka.Objednavka =Cislo GetItem(Objednavka.subobj,GetBranchAttr(tf,'subobj')) GetItem(Objednavka.wflags,GetBranchAttr(tf,'wflags')) GetItem(Objednavka.typ,GetBranchAttr(tf,'typ')) DekodText(GetBranchAttr(tf,'material')) Objednavka.material =OprText DekodText(GetBranchAttr(tf,'nazev')) Objednavka.Nazev =OprText DekodText(GetBranchAttr(tf,'mj')) Objednavka.MJ =OprText GetItem(Objednavka.flags,GetBranchAttr(tf,'flags')) if(Objednavka.DPH=0) GetItem(Objednavka.dph,GetBranchAttr(tf,'dph')) Objednavka.CisloMat =Sklad.Cislo GetItem(Objednavka.mnozstvi,GetBranchAttr(tf,'mnozstvi')) Objednavka.JednCena =CastkaR GetItem(Objednavka.sleva,GetBranchAttr(tf,'sleva')) GetItem(Objednavka.cisloceny,GetBranchAttr(tf,'cisloceny')) DekodText(GetBranchAttr(tf,'poznamka')) Objednavka.Poznamka =OprText GetItem(Objednavka.subcislo,GetBranchAttr(tf,'subcislo')) Objednavka.JednCenaBS =CastkaR Objednavka.CastkaBS =CastkaR*Objednavka.mnozstvi Objednavka.Castka =CastkaR*Objednavka.mnozstvi GetItem(Objednavka.uspokojeno,GetBranchAttr(tf,'uspokojeno')) Objednavka.Dispozice =Sklad.Zustatek Castka =Castka+Objednavka.Castka CastkaObj =CastkaObj+RoundFloat(Objednavka.Castka*(1+Objednavka.DPH/100),-2) AddRec(Objednavka) end radek=NextBranch(tf,'radek') end ;if(ObjednavkaPrijata.Castka-CastkaObj<>0) ;begin ; ObjednavkaPrijata.Castka=CastkaObj ; ModifyRec(ObjednavkaPrijata,VetaOP) ;end BranchUp(tf,'objednavka') end xObjednavka=NextBranch(tf,'objednavka') end ;objednavka xObjednavky=NextBranch(tf,'objednavky') end ;objednavky END