GpStructuredStorage file  7  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~sqli.vtd sqliForm.vtdsqliFormName.vtd. sqliStep.vtd2sqliStepFile.vtd8sqliStepStr.vtdKsqliStepStrEvent.vtd sqliVar.vtd sqliVer.vtdsqliReports.vtdsqliTranslation.vtdracKeyacNamed acIsDebugacType acVarInINI acAutoStart acAutoClose acEndMessageacLocalization2acFormNameAuthoracActive anVersion acLogType acInstCoded anUserChg anUserIns adTimeChg adTimeIns acIsLocalizedacRunOnInstall acRunOnUpdate acRunOnDelete anOldVersion acCryptPassacCompiledScriptacNote acAresLite acUseCompiled acAutoCompile100001UIzvoz ZbsXML v2.2T0DSBiBFFFFFFF acKey acFormName2 acDocType acObjectName2acType acKeyShortCut2acTabSheetName2 anUserChg anUserIns adTimeChg adTimeIns acFormType acFormName2acName2 acKeyanNoacViewacSetOfacDescracReportacFileCreateTableanFileDelimiter acFileNameacFileTableName acFileDest acFileType acFileTypeXML acShowIfEmptyacTitleButtons anTitleLinesanBeginFromRecord anUserChg anUserIns adTimeChg adTimeIns acCharSet2 acStyleSheet acUnitNamed acNewThreadacDFMacPAS acSQLExport2acSQLExpacNoteacPCU acCompiled100001UGPFAENFZOBZOB windows-1250F\/program AresProject; uses SysUtils, Classes, Forms, Dialogs, dlDatabase, Variants, DateUtils, dlGLcommon; function CurrDateTime() : string; var Year, Month, Day, Hour, Min, Sec, MSec: Word; begin DecodeDateTime(now, Year, Month, Day, Hour, Min, Sec, MSec); result := IntToStr(Year)+'-'+StrZero(Month,2)+'-'+StrZero(Day,2)+'T'+StrZero(Hour,2)+':'+StrZero(Min,2)+':'+StrZero(Sec,2); end; var xmlZbs : TdlXMLBase; dsPayOrd, dsOur, dsSupp : TdlDataSet; FcPartPath, FcType, FcOurTrRn, cSuppTrRn, cPayOrdType : string; cFileName, cDocType, cBankNo, cPayDate, cPoDatumuValute : string; nSumAmount : Currency; begin //FcPartPath := 'Data.Content.EmbeddedData.Paket.StandardniNalogiVEvrih'; if not VarIsNull(Ares.Variables.AsString['FileName']) then cFileName:= Ares.Variables.AsString['FileName'] else cFileName := 'c:\zbsxmlv22.xml'; // used when called from Ares IDE if not VarIsNull(Ares.Variables.AsString['DocType']) then cDocType := Ares.Variables.AsString['DocType'] else cDocType := 'LI00'; if not VarIsNull(Ares.Variables.AsString['BankNo']) then cBankNo := Ares.Variables.AsString['BankNo'] else cBankNo := '10'; if not VarIsNull(Ares.Variables.AsString['PayDate']) then cPayDate := StringReplace(Ares.Variables.AsString['PayDate'], '/', '-', [rfReplaceAll]) else cPayDate := '2010-01-10'; if not VarIsNull(Ares.Variables.AsString['PayOrdType']) then cPayOrdType := Ares.Variables.AsString['PayOrdType'] else cPayOrdType := '3'; FcType := 'D'; xmlZbs := TdlXMLBase.Create('1.0', 'UTF-8'); xmlZbs.DeclareNamespace('Document', 'cd','http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0'); xmlZbs.DeclareNamespace('Document', '','http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2'); xmlZbs.DeclareNamespace('Document', 'xsi','http://www.w3.org/2001/XMLSchema-instance'); xmlZbs.ValueWrite('', 'http://www.crea.si/Schemas/2004/Document/ZBSxml/2.0..\ZbsCreaDoc.xsd', 'xsi:SchemaLocation'); xmlZbs.ValueWrite('Data.DataFormat.MimeType','text/xml'); dsOur := TdlDataSet.Create(nil); dsPayOrd := TdlDataSet.Create(nil); try dsPayOrd.sql.Text := 'select P.acSubject, P.acKey, (Case when PRM.acSubjName1 = ''T'' then P.acDebitor2 else T.acName2 end) as acDebitor2, (Case when PRM.acSubjName1 = ''T'' then P.acCreditor2 else S.acName2 end) as acCreditor2, P.anAmount, P.acCurrency, P.acPayPurpose2, P.acDebtorAcct1, P.acCreditorAcct1, P.adDateDue, ' + 'S.acAddress, S.acPost, PC.acName as acPlace, C.acISOCode, ' + 'B1.acIBANPrefix, B2.acIBANPrefix as acIBANPrefix2, ' + 'S1.acSWIFTCode, S2.acSWIFTCode as acSWIFTCode2, P.acUpnRFCode, '; dsPayOrd.sql.Add('P.acCreditorAcct2, P.acCreditorAcct3, ' + 'P.acDebtorAcct2, P.acDebtorAcct3, ' + 'P.acCode1, P.acCode2, P.acCode3, P.acReferenceDebt, P.acRefControlDebt, P.acReferenceCred, P.acRefControlCred '); dsPayOrd.sql.Add('from tHE_PayOrder P ' + ' join tHE_SetSubj S on P.acSubject = S.acSubject ' + ' join tHE_SetSubj T on P.acDebitor2 = T.acSubject ' + ' left join tHE_SetPostCode PC on S.acPost = PC.acPost ' + ' left join tHE_SetCountry C on C.acCountry = S.acCountry ' + ' left join vHE_SetSubjBank B1 on B1.acBnkAcctNo1 = P.acDebtorAcct1 and B1.acSubject = P.acDebitor2 and B1.acType = ''D'' and B1.anNo = ' + cBankNo + ' ' + ' left join vHE_SetSubjBank B2 on B2.acBnkAcctNo1 = P.acCreditorAcct1 and B2.acSubject = P.acCreditor2 and B2.acType = ''D'' and B2.anNo = ' + cBankNo + ' ' + ' left join tHE_SetSubj S1 on S1.acSubject = B1.acBank ' + ' left join tHE_SetSubj S2 on S2.acSubject = B2.acBank ' + ' cross join tHE_SetParam PRM ' + 'where P.acStatus = ''P'' and P.acDocType = ' + QuotedStr(cDocType) + ' and P.anBankNo = ' + cBankNo); dsPayOrd.Open; dsOur.SQL.Text := 'select S.acSubject, S.acAddress, S.acPost, PC.acName as acPlace, C.acISOCode, S.acCode ' + 'from the_SetSubj S ' + ' left join tHE_SetPostCode PC on S.acPost = PC.acPost ' + ' left join tHE_SetCountry C on C.acCountry = S.acCountry ' + 'where acSubject = ' + QuotedStr(dsPayOrd.FieldByName('acDebitor2').asString); dsOur.Open; if dsOur.Eof then begin dlMessageDlg('Our company not defined!', mtError, [mbOK], 0); exit; end; cPoDatumuValute := GetValueInTable('acFillSalePrice', 'tPA_SetDocType', 'acDocType=' + QuotedStr(cDocType)); if not dsPayOrd.Eof then begin if FcType = 'D' then FcOurTrRn := 'SI56' + StringReplace(StringReplace(dsPayOrd.FieldByName('acDebtorAcct1').asString, '-', '', [rfReplaceAll]), ' ', '', [rfReplaceAll]); xmlZbs.NodeNameSpace('Data.Content.EmbeddedData.Paket','','http://www.zbs-giz.si/Schemas/2006/ZBSxml/2.2'); xmlZbs.ValueWrite('Data.Content.EmbeddedData.Paket.VodilniZapis.StevilkaRacunaNalogodajalca', FcOurTrRn); xmlZbs.ValueWrite('Data.Content.EmbeddedData.Paket.VodilniZapis.StevilkaPaketa', '000001'); // ? xmlZbs.ValueWrite('Data.Content.EmbeddedData.Paket.VodilniZapis.DatumPaketa', cPayDate); xmlZbs.ValueWrite('Data.Content.EmbeddedData.Paket.VodilniZapis.NacinObdelave', 'SNGL'); end; while (not dsPayOrd.eof) and (not dsOur.eof) do begin if dsPayOrd.FieldByName('acSWIFTCode').asString = '' then begin //dlMessageDlg('Payers SWIFT(BIC) code not entered!', mtError, [mbOK], 0); end; if dsPayOrd.FieldByName('acSWIFTCode2').asString = '' then begin //dlMessageDlg('Receivers SWIFT(BIC) code not entered!', mtError, [mbOK], 0); end; dsSupp := TdlDataSet.Create(nil); dsSupp.SQL.Text := 'select S.acAddress, S.acPost, PC.acName as acPlace, C.acISOCode, S.acSubject, S.acCode ' + 'from the_SetSubj S ' + ' left join tHE_SetPostCode PC on S.acPost = PC.acPost ' + ' left join tHE_SetCountry C on C.acCountry = S.acCountry ' + 'where acSubject = ' + QuotedStr(dsPayOrd.FieldByName('acSubject').asString); dsSupp.Open; FcPartPath := 'Data.Content.EmbeddedData.Paket.StandardniNalogiVEvrih.StandardniNalogVEvrih'; if FcType = 'D' then xmlZbs.ValueWrite('Data.Content.EmbeddedData.Paket.StandardniNalogiVEvrih.StandardniNalogVEvrih','','') else xmlZbs.ValueWrite('Data.Content.EmbeddedData.Paket.NalogiTujina','',''); if cPayOrdType = '3' then // UPN xmlZbs.ValueWrite(FcPartPath+ '.ReferencnaOznakaNalogaNalogodajalca', dsPayOrd.FieldByName('acReferenceDebt').asString + dsPayOrd.FieldByName('acDebtorAcct2').asString + dsPayOrd.FieldByName('acDebtorAcct3').asString) else xmlZbs.ValueWrite(FcPartPath+ '.ReferencnaOznakaNalogaNalogodajalca', dsPayOrd.FieldByName('acDebtorAcct2').asString + ' ' + dsPayOrd.FieldByName('acDebtorAcct3').asString); xmlZbs.ValueWrite(FcPartPath+ '.Prioriteta','51'); // can be 51-99 xmlZbs.ValueWrite(FcPartPath+ '.StevilkaRacunaNalogodajalca', FcOurTrRn); xmlZbs.ValueWrite(FcPartPath+ '.Nalogodajalec', '', ''); xmlZbs.ValueWrite(FcPartPath+ '.Nalogodajalec.Naziv', dsOur.FieldByname('acSubject').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Nalogodajalec.Naslov', dsOur.FieldByname('acAddress').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Nalogodajalec.Naslov1', DSOur.FieldByName('acPost').AsString + ' ' + DSOur.FieldByName('acPlace').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Nalogodajalec.Drzava', DSOur.FieldByName('acISOCode').AsString); xmlZbs.ValueWrite(FcPartPath+ '.IdentifikacijaNalogodajalca.PravnaOseba.DrugaIdentifikacija.Identifikacija', DSOur.FieldByName('acCode').AsString); xmlZbs.ValueWrite(FcPartPath+ '.IdentifikacijaNalogodajalca.PravnaOseba.DrugaIdentifikacija.Shema.Koda', 'TXID'); cSuppTrRn := 'SI56' + StringReplace(StringReplace(dsPayOrd.FieldByName('acCreditorAcct1').asString, '-', '', [rfReplaceAll]), ' ', '', [rfReplaceAll]); xmlZbs.ValueWrite(FcPartPath+ '.StevilkaRacunaPrejemnika', cSuppTrRn); xmlZbs.ValueWrite(FcPartPath+ '.Prejemnik', '', ''); xmlZbs.ValueWrite(FcPartPath+ '.Prejemnik.Naziv', dsSupp.FieldByName('acSubject').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Prejemnik.Naslov', dsSupp.FieldByName('acAddress').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Prejemnik.Naslov1', dsSupp.FieldByName('acPost').AsString + ' ' + dsSupp.FieldByName('acPlace').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Prejemnik.Drzava', dsSupp.FieldByName('acISOCode').AsString); xmlZbs.ValueWrite(FcPartPath+ '.Prejemnik.KodaSWIFT', dsPayOrd.FieldByName('acSwiftCode').AsString); //!!!! xmlZbs.ValueWrite(FcPartPath+ '.IdentifikacijaPrejemnika.PravnaOseba.DrugaIdentifikacija.Identifikacija', dsSupp.FieldByName('acCode').AsString); xmlZbs.ValueWrite(FcPartPath+ '.IdentifikacijaPrejemnika.PravnaOseba.DrugaIdentifikacija.Shema.Koda', 'TXID'); xmlZbs.ValueWrite(FcPartPath+ '.VrstaPlacilnegaInstrumenta', 'SEPA'); if cPayOrdType = '3' then // UPN xmlZbs.ValueWrite(FcPartPath+ '.PodatkiONakazilu.StrukturiranaReferenca.Referenca', dsPayOrd.FieldByName('acReferenceCred').asString + dsPayOrd.FieldByName('acCreditorAcct2').asString + dsPayOrd.FieldByName('acCreditorAcct3').asString) else xmlZbs.ValueWrite(FcPartPath+ '.PodatkiONakazilu.StrukturiranaReferenca.Referenca', dsPayOrd.FieldByName('acCreditorAcct2').asString + ' ' + dsPayOrd.FieldByName('acCreditorAcct3').asString); xmlZbs.ValueWrite(FcPartPath+ '.PodatkiONakazilu.StrukturiranaReferenca.DodatenOpisNamena', dsPayOrd.FieldByName('acPayPurpose2').asString); xmlZbs.ValueWrite(FcPartPath+ '.ZnesekPlacila.Znesek', StringReplace(FormatFloat('#0.00', dsPayOrd.FieldByName('anAmount').asCurrency), ',', '.', [])); xmlZbs.ValueWrite(FcPartPath+ '.ZnesekPlacila.OznakaValute', 'EUR'); xmlZbs.ValueWrite(FcPartPath+ '.DatumObdelave', FormatDateTime('yyyy-mm-dd', now)); if cPayOrdType = '3' then // UPN xmlZbs.ValueWrite(FcPartPath+ '.KodaEksterna', dsPayOrd.FieldByName('acUpnRFCode').asString) else xmlZbs.ValueWrite(FcPartPath+ '.VrstaPosla', dsPayOrd.FieldByName('acCode1').asString + dsPayOrd.FieldByName('acCode2').asString + dsPayOrd.FieldByName('acCode3').asString); //xmlZbs.ValueWrite(FcPartPath+ '.KategorijaNamena', 'SG01'); //Element ni obvezen. xmlZbs.ValueWrite(FcPartPath+ '.VrstaSporocila', '0'); dsPayOrd.Next; end; finally dsPayOrd.Free; dsOur.Free; dsSupp.Free; end; xmlZBS.SaveToFile(cFileName); dlMessageDlg(Format(cMsg0243, [cFileName]), mtInformation, [mbOK], 0); // 'Kreiranje datoteke konano (%s)!' xmlZBS.Free; DefDatabase.ExecSQL('update tHE_PayOrder set acStatus = ''O'', adDateOfAppr = ' + QuotedStr(cPayDate) + ' where acStatus = ''P'' and acDocType = ' +QuotedStr(cDocType)+ ' and anBankNo = ' +cBankNo, []); end. acKeyanNoanSeqNoacHField2acHType anHLengthanHDecacPField2acPTypeanPLegthanPDec acPFormat acPSeparator anUserChg anUserIns adTimeChg adTimeIns acKeyanNoanSeqNo acFieldName2 anFieldSize acFieldTitleacFieldReadOnly acEditType acFieldConst anUserChg anUserIns adTimeIns adTimeChg acFieldFormatacFieldDefault acLookupSQL acKeyanNo acDataEventacDataReturnValue acKeyAndNo anUserChg anUserIns adTimeChg adTimeIns acKey acWhereKeyanNo acFieldName acParamVar acFieldType acFieldREQacFieldCaption2 acDefaultExpacDefaultValue acLookUpSQL acOperator acVarHint2 acAddApostrof anUserChg anUserIns adTimeChg adTimeIns acPrtCrit ACKEY ANVERSIONANNOACSQLEXPACNOTE ADTIMECHG ANUSERCHG ADTIMEINS ANUSERINSACREPORTACLANGIDACLOCALIZATION2 ACFORMNAMEdACNAMEdACDEFAULTPRINTER ACPREVIEWANMAXPRSTLEVELACSUBSTITUTESIGNACPRINTIFEMPTY ACPRINTTOTEXT ANNOOFCOPY ACORDERBY ACREGUSERCODEACACTIVE ACKEYSHORTCUT2 ANUSERINS ADTIMEINS ANUSERCHG ADTIMECHG ACTEXT1ACTEXT2ACTEXT3ACNOTE ACREPORTDATAacKey acUnitName acObjectName acTranslationacLocalisation