Что это? Библиотетики для FireBird для работы из процедур с zip, xml, dbf, тестовыми файлами, файлами. Критика принимается

Модератор: Модераторы


BEGIN
  v_handle = createtextfile('c:\test.html');
  v_result = RewriteTextFile(v_handle);
  v_result = WriteLNToTextFile(v_handle,'<html>');
  v_result = WriteLNToTextFile(v_handle,'<style>.table_up ,td{border-collapse: collapse;padding: 0px;border: 1px solid #111777;}</style>');
  v_result = WriteLNToTextFile(v_handle,'<table class=table_up>');
  v_result = WriteLNToTextFile(v_handle,'</table>');
  v_result = WriteLNToTextFile(v_handle,'</html>');
  v_result = flushtextfile(v_handle);
  v_result = CloseTextFile(v_handle);
  v_result = FreeAFObject(v_handle);
.... 
-- текст процедуры

BEGIN
  v_handle = createtextfile('c:\test.html');
  v_result = RewriteTextFile(v_handle);
  v_result = WriteLNToTextFile(v_handle,'<html>');
  v_result = WriteLNToTextFile(v_handle,'<style>.table_up ,td{border-collapse: collapse;padding: 0px;border: 1px solid #111777;}</style>');
  v_result = WriteLNToTextFile(v_handle,'<table class=table_up>');
  v_result = WriteLNToTextFile(v_handle,'</table>');
  v_result = WriteLNToTextFile(v_handle,'</html>');
  v_result = flushtextfile(v_handle);
  v_result = CloseTextFile(v_handle);
  v_result = FreeAFObject(v_handle);
  O_LINE = 'Дата та час формування звіту: '|| DateTimeToStr(CURRENT_TIMESTAMP); SUSPEND;
  O_LINE = ''; SUSPEND;
  O_LINE = 'Виписка'; O_JUSTIFY = 1; SUSPEND;
  O_LINE = 'за операціями по картковому рахунку'; SUSPEND;
  O_LINE = ''; SUSPEND;
  -- получаем все "статические" данные по договору
  SELECT O_FIO, O_STREET, O_ZIPCODE, O_COUNTRYNAME, O_CLIM, O_ACCNUM,
    O_MAINCCY, O_MINPAY, O_MINPAYDATE, O_BALANCESTATEMENTBEGIN, O_BALANCESTATEMENTEND, O_STATEMENTAMT, O_MAINACCID,
    O_PERIODPLUS, O_PERIODMINUS, O_SALDOPLUS, O_SALDOMINUS, O_MAINCCYUKR,
    O_STATEMENTMODEID,O_EMAILADDRESS,O_AMT1,O_AMT2,O_AMT3
   FROM AKTA_STATEMENTTAGS(:I_CONTRACTID, :I_STARTDATE, :I_ENDDATE, :I_OPERDATE)
  INTO v_FIO, v_STREET, v_ZIPCODE, v_COUNTRYNAME, v_CLIM, v_ACCNUM,
    v_MAINCCY,v_MINPAY, v_MINPAYDATE, v_BALANCESTATEMENTBEGIN, v_BALANCESTATEMENTEND, v_STATEMENTAMT, v_MAINACCID,
    v_PERIODPLUS, v_PERIODMINUS, v_SALDOPLUS, v_SALDOMINUS, v_MAINCCYUKR,
    v_STATEMENTMODEID,v_EMAILADDRESS,V_AMT1,V_AMT2,V_AMT3;
  v_balance = v_BALANCESTATEMENTBEGIN;
  v_D1 = 46;                                    -- правая граница первого столбца (Номер счета, валюта, лимит и т.д.)
                                                -- разбиение ФИО и адреса на строки (все, что может не влезть)
  EXECUTE PROCEDURE SplitString(V_FIO, I_PaperWidth-v_D1-20)
    RETURNING_VALUES v_Info1, v_Info2, x_tmp200, x_tmp200, x_tmp200, x_tmp200, x_tmp200;
  EXECUTE PROCEDURE SplitString(V_STREET, I_PaperWidth-v_D1-20)
    RETURNING_VALUES v_Info3, v_Info4, v_Info5, v_Info6, v_Info7, v_Info8, x_tmp200;
  O_JUSTIFY = 0;
  O_LINE = 'Номер рахунку: ';
  O_LINE = O_LINE||UDF_LPAD(v_accNum, v_D1-strlen(O_LINE));
  O_LINE = O_LINE||'    П.І.Б. Клієнта: '|| v_Info1; SUSPEND;
  O_LINE = 'Валюта рахунку: ';
  O_LINE = O_LINE||UDF_LPAD(V_MAINCCY, v_D1-strlen(O_LINE));
  -- ФИО или адрес
  IF (v_Info2='') THEN BEGIN
    O_LINE = O_LINE || V_CptAdr;
    v_line = 4;
  END ELSE BEGIN
    O_LINE = O_LINE ||UDF_LPAD(' ',20)||v_Info2;
    v_line = 3;
  END
  SUSPEND;
  v_CountryShow = 0;
  v_ZipShow = 0;
  O_LINE = 'Ліміт кредитування: ';
  O_LINE = O_LINE|| UDF_LPAD(FormatMoney(:v_Clim,: I_StatementAmountLength,2,',','',''),V_D1-strlen(O_LINE));
  IF (v_line = 3) THEN O_LINE = O_LINE ||v_CptAdr|| v_Info3;
  ELSE BEGIN
    IF (v_Info4='') THEN BEGIN O_LINE =O_LINE||v_CptZip||V_ZIPCODE; V_ZIPSHOW = 1; v_Line=-1;END
    ELSE O_LINE = O_LINE ||UDF_LPAD(' ',20)||v_Info4;
  END
  SUSPEND;
  v_line = v_line+1;
  O_LINE = 'Період: ';
  O_LINE = O_LINE||UDF_LPAD('з '||DATETOSTR(:I_StartDate)||' по '||DATETOSTR(:I_ENDDATE),v_D1-strlen(O_LINE));
  IF ((v_line = 4 AND v_Info4<>'')OR(v_line = 5 AND v_Info5<>'')) THEN BEGIN
    IF (v_line = 4) THEN O_LINE = O_LINE ||UDF_LPAD(' ',20)||v_Info4;ELSE
      O_LINE = O_LINE ||UDF_LPAD(' ',20)||v_Info5;
    v_line = v_line+1;
  END ELSE BEGIN
    v_line = 0;
    IF (V_ZIPSHOW = 0) THEN BEGIN O_LINE =O_LINE||v_CptZip||V_ZIPCODE; V_ZIPSHOW = 1; v_Line=-1;END
    ELSE BEGIN O_LINE = O_LINE||v_CptCountry|| V_COUNTRYNAME; v_CountryShow = 1; END
  END
  SUSPEND;
  IF (v_line> 0) THEN BEGIN
    IF (v_line = 5 AND v_Info5<>'') THEN BEGIN O_LINE = UDF_LPAD(' ',v_D1+20)||v_Info5;SUSPEND;END
      IF (v_line <= 6 AND v_Info6<>'') THEN BEGIN O_LINE = UDF_LPAD(' ',v_D1+20)||v_Info6;SUSPEND;END
    IF (v_line <= 7 AND v_Info7<>'') THEN BEGIN O_LINE = UDF_LPAD(' ',v_D1+20)||v_Info7;SUSPEND;END
    IF (v_line <= 8 AND v_Info8<>'') THEN BEGIN O_LINE = UDF_LPAD(' ',v_D1+20)||v_Info8;SUSPEND;END
  END
  IF (V_ZipShow = 0) THEN BEGIN O_LINE = UDF_LPAD(v_CptZip,v_D1+20)||V_ZipCode; SUSPEND; END
  IF (v_CountryShow = 0) THEN BEGIN O_LINE = UDF_LPAD(v_CptCountry,v_D1+20)|| V_COUNTRYNAME; SUSPEND; END
  O_LINE = ''; SUSPEND;
  O_LINE = 'Мінімальний платіж до сплати: '||FormatMoney(v_MINPAY,:I_StatementAmountLength,2,',','',''); SUSPEND;
  O_LINE = 'Сплатити до '||DATETOSTR(:v_MinPayDate);SUSPEND;
  O_LINE = ''; SUSPEND;
                                    
  O_LINE = 'Баланс на початок періоду: '||FormatMoney(v_BALANCESTATEMENTBEGIN,: I_StatementAmountLength,2,',','','');O_JUSTIFY = 2; SUSPEND;
  O_LINE ='Операції за період'; O_JUSTIFY = 1; SUSPEND;
  O_LINE = FORMATSTRING('',:I_PaperWidth,'-',0); O_JUSTIFY = 0; SUSPEND;
-- изменяемые колонки по ширине сдвинуты влево на
  v_LeftOperFrom = strlen(
          '   Дата        Дата     Номер ');
-- длина колонки наименование и места операции для заданной ширины бумаги
  v_LeftOperLength = (I_PaperWidth - v_LeftOperFrom - (:I_StatementAmountLength*2+1));
  O_LINE ='   Дата        Дата     Номер '||UDF_CPAD(' Найменування та місце',v_LeftOperLength-20)||UDF_CPAD('Суми,',(I_StatementAmountLength+4)*2+1)||UDF_CPAD('Баланс',I_StatementAmountLength+5); SUSPEND;
  O_LINE ='проведення  проведення картки '||UDF_CPAD(' проведення операції',v_LeftOperLength-20)||UDF_CPAD('По операції',I_StatementAmountLength+4)||' '||UDF_CPAD('По рахунку',I_StatementAmountLength+4)||UDF_CPAD('рахунку',I_StatementAmountLength+5); SUSPEND;
  O_LINE =' операції  за рахунком        '; SUSPEND;
--         01.01.2001  01.01.2001  *1234
  O_LINE = FORMATSTRING('',:I_PaperWidth,'-',0); SUSPEND;
  FOR
    SELECT s.O_LINE , s.O_ID , s.O_AccAmt, s.O_AccCCY, s.O_LINENUMBER, s.O_OpAmt,s.O_OpCCY, s.O_OPERID
      FROM AKTA_S_CUSTOMSTATEMENTOPS(:I_CONTRACTID, :I_STARTDATE, :I_ENDDATE, :I_StatementAmountLength, :I_PaperWidth,
       :v_LEFTOPERFROM, :v_LEFTOPERLENGTH,:v_MAINACCID) s
     ORDER BY O_ID, O_OPDATE, O_LINENUMBER
    INTO O_LINE, v_NewID, v_AccAmt, v_AccCCY, V_LINEID, V_OpAmt, V_OpCCY, V_OPERID
  DO BEGIN
    if (V_OPERID=1) then begin
                             v_AccAmt=V_OpAmt;
                             v_AccCCY=V_OpCCY;
                         end
    IF (V_LINEID=1) THEN v_balance=v_balance + v_AccAmt;
    v_sBalance = FormatMoney(v_balance, i_StatementAmountLength, 2, ',', '', ' ');
    o_line = o_line||' '||v_sBalance||' '||V_AccCCY;
    IF (v_LastId <> v_NewID) THEN O_TICK = 1 - O_TICK;
    SUSPEND;
    v_LastId = v_NewID;
  END
  o_Tick = 0;
  O_LINE = FORMATSTRING('',:I_PaperWidth,'-',0); SUSPEND;
  O_LINE = UDF_RPAD('Всього за період дебет:',I_PaperWidth-I_StatementAmountLength-4)||
           UDF_LPAD(FormatMoney(v_PERIODPLUS, I_StatementAmountLength, 2, ',', '', ' '), I_StatementAmountLength)||' '||V_MAINCCY;
  SUSPEND;
  O_LINE = UDF_RPAD('Всього за період кредит:',I_PaperWidth-I_StatementAmountLength-4)||
           UDF_LPAD(FormatMoney(v_PERIODMINUS, I_StatementAmountLength, 2, ',', '', ' '),I_StatementAmountLength)||' '||V_MAINCCY;
  SUSPEND;
  O_LINE = ''; SUSPEND;
  O_LINE = UDF_LPAD('Баланс на кінець періоду:',30)||FormatMoney(v_BALANCESTATEMENTEND,: I_StatementAmountLength,2,',','',' ');O_JUSTIFY = 2; SUSPEND;
  O_LINE = UDF_LPAD('Проценти за кредит:',30)||FormatMoney(v_Amt1,: I_StatementAmountLength,2,',','',' '); SUSPEND;
  O_LINE = UDF_LPAD('Комісії:',30)||FormatMoney(v_Amt2,: I_StatementAmountLength,2,',','',' '); SUSPEND;
  O_LINE = UDF_LPAD('Прострочена заборгованість:',30)||FormatMoney(v_Amt3,: I_StatementAmountLength,2,',','',' '); SUSPEND;
  O_LINE = ''; SUSPEND;
  O_LINE = 'Доступний залишок на кінець періоду:'||FormatMoney(v_STATEMENTAMT,: I_StatementAmountLength,2,',','',' '); SUSPEND;
END

Вернуться в Разработки на нашем сайте
Сейчас этот форум просматривают: Google [Bot] и гости: 1