смотреть тут: http://shamangrad.net/news.php?prj=AFUDF
Что это? Библиотетики для 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
Вернуться в Разработки на нашем сайте
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5