;{ DDT SESTAVA - STANDARD } ;{ Import objednávek přijatých z formátu XML - import je možné provádět z webu nebo z lokálního disku } ;{ Verze: 23.5.2013 } ;{ Autor: WinDUO Team (BRM) } Name('Import objednávek ze souboru') Designed('OBJP_MAN') Author('Winduo Team','EMail: winduo@winduo.cz','http://www.winduo.com','http://www.winduo.cz') Descr('Import objednávek přijatých z formátu XML') ;{*******************************************************************************************************************************} WNSType(1) DeclareRec('Program') DeclareRec('ObjednavkaPrijata') DeclareRec('KeyObjednavkaPrijata1') DeclareRec('KeyObjednavkaPrijata2') DeclareRec('Objednavka') DeclareRec('KeyObjednavka2') DeclareRec('Adresar') DeclareRec('KeyAdresar1') DeclareRec('DalsiAdresy') DeclareRec('KeyDalsiAdresy1') DeclareRec('Sklad') DeclareRec('KeySklad2') OldAdresar:Adresar; ZmenyAdres:Boolean=false Veta :LongInt VetaO :LongInt VetaR :LongInt ExisR :LongInt VetaA :LongInt ExisA :Boolean VetaS :LongInt VetaOP :LongInt; INIPath :String=DataPath+'svsexmli.ini' Castka :Double CastkaR :Double CastkaObj :Double Cislo :LongInt=0 IC :LongInt Doklad :String[10] typ :String f :TextFile kod :Integer tf :TagFile objednavka :Boolean adresa :Boolean dadresy :Boolean radek :Boolean poznamka :Boolean Pozn :Note SouborLogu :String Otazka :Boolean Shoda :Boolean LocW :Word InDA :Word; DA :DalsiAdresy; VarStr :String; IsHead :Boolean NewWNS('NOBPXMLI.WNS'); ModifyMode(True) XMLName:String=GetDataIni('Exporty','Objednavky','ObjdnvkP.XML')) if(Length(XMLName)=0) XMLName='ObjdnvkP.XML'; XMLName=GetFileName(XMLName) if(Length(XMLName)=0) Exit; SetDataIni('Exporty','Objednavky',XMLName) Veta=0 While(Veta<255) begin Inc(Veta); VarStr='DA'+NulL(Str(Veta),3)+':DalsiAdresy'; StrCom(VarStr); end; SetDescr(0,0,TA_Right|descr_PageNum,'Strana: '); SetDescr(1,0,TA_Center,'Změny v adresáři'); SetDescr(2,0,TA_Left|descr_Date,'Datum: '); SetDescr(3,1,TA_Center,'Import '+StrDate(GetDate())+' '+StrTime(GetTime())); SetColumn(0,TA_Left,12); Zmena SetColumn(1,TA_RIGHT,10); ICO SetColumn(2,TA_LEFT,20); DIC SetColumn(3,TA_LEFT,35); Nazev SetColumn(4,TA_LEFT,35); Rozsireni SetColumn(5,TA_Left,35); Ulice SetColumn(6,TA_LEFT,35); Mesto SetColumn(7,TA_LEFT,6); PSC SetColumn(8,TA_LEFT,20); zastupce SetColumn(9,TA_LEFT,12); telefon SetColumn(10,TA_LEFT,20); email SetColumn(11,TA_LEFT,35); poznamka SetHead('\tIČ\tDIČ\tNázev\t\tulice\tměsto\tPSČ\tzástupce\ttelefon\temail\tpoznámka'); OprText :String Procedure DekodText(Vstup:String) OprText=StrFromUTF8(Vstup) OprText=ReplaceStr(OprText,'"','"') OprText=ReplaceStr(OprText,'<','<') OprText=ReplaceStr(OprText,'>','>') OprText=ReplaceStr(OprText,'&','&') END; ;{*******************************************************************************************************************************} ;{procedura importu} Open(tf,XMLName); objednavka=FindBranch(tf,'?xml','ObjednavkyPrijate','objednavka') while(objednavka) begin IsHead=false; 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 DekodText(GetBranchAttr(tf,'stav')) ObjednavkaPrijata.Stav =val(OprText) 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 Counter:LongInt=0 ;{radky} radek=FindBranch(tf,'radek') while(radek) begin Inc(Counter) 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 KeySklad2.Length=SizeOf(KeySklad2)-1 KeySklad2.sklad=Swap(GetBranchAttr(tf,'sklad')) DekodText(GetBranchAttr(tf,'material')) StrToChars(KeySklad2.material,Trim(oprText),' ') if(FindKey(KeySklad2,VetaS)) begin ReadRec(Sklad, VetaS) ; if(RoundPrice(Sklad.CenaA-GetBranchAttr(tf,'jedncena'))<>0) ; message('!!! POZOR !!!'+#13+'Nalezen rozdíl v ceně'+#13+ObjednavkaPrijata.Doklad+#13+Sklad.Material,mb_IconStop) 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 else Halt('Neexistuje zboží '+Trim(OprText)+' na skladě '+GetBranchAttr(tf,'sklad')); ; CastkaR = Sklad.CenaA 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(Counter<>0) BranchUp(tf); if(ObjednavkaPrijata.Castka-CastkaObj<>0) begin ObjednavkaPrijata.Castka=CastkaObj; ModifyRec(ObjednavkaPrijata,VetaOP); end end Objednavka=NextBranch(tf,'objednavka') end END