Z powodu braku funkcjonalności, która drukowała by na fakturze stan konta klientów, wziąłem sprawy w swoje ręce.
W konfigu doszły dwie zmienne w dziale [invoice]: 1. print_balance Jeśli ustawiona to wyświetla na fakturze informacje o aktualnym zadłużeniu klienta.
2. print_balance_save (uogólniona zmienna print_balance_history_save, która leżała w kodzie i nie miała opisu w konfigu IU) W kodzie odgrzebałem zmienną print_balance_history_save, która powodowała wyświetlanie historii na fakturach, ale tylko do daty wystawienia faktury, czyli jeśli coś się zmieni na koncie po dacie wystawienia faktury, to na fakturze się już nie pojawi. Uogólniłem zmienną, żeby działała również na stan konta i zmieniłem jej nazwę. Jeśli ustawisz print_balance na true to na fakturze pojawi się stan konta z dnia wystawienia faktury, jeśli do tego masz drukowaną historię konta, to również wyświetli się do dnia wystawienia faktury... nowsze wpisy pojawią się na nowszych fakturach.
Na fakturze między pozycją "Wystawił:", a uwagami, pojawia się "*Twój aktualny stan konta: 0,00 zł". Swoją drogą poprawcie "Wystawił:" na "Wystawił(a):".
Patch niestety tylko dla języka EN i PL (innych nie znam :P).
W załączniku patch, który na pewno działa na LMS 1.11.5 ... w UTF8. Patch na licencji GPL, jeśli twórcy uznają, że spełnia wszelkie normy to proszę o dołączenie do kolejnej wersji LMSa.
Jak działają fakturki w PDF? Chętnie bym przeniósł to na PDFa też... *
!DSPAM:49809ebb153361322221663!
--- lms/lib/LMS.class.php 2009-01-24 14:23:20.000000000 +0100 +++ lms_testowy/lib/LMS.class.php 2009-01-28 17:48:02.683872867 +0100 @@ -899,9 +899,10 @@ return $result; }
- function GetCustomerBalance($id) + function GetCustomerBalance($id, $totime=NULL) { - return $this->DB->GetOne('SELECT SUM(value) FROM cash WHERE customerid=?', array($id)); + return $this->DB->GetOne('SELECT SUM(value) FROM cash WHERE customerid=?' + .($totime ? ' AND time <= '.$totime : ''), array($id)); }
function GetCustomerBalanceList($id, $totime=NULL) @@ -2044,13 +2045,22 @@ // NOTE: don't waste CPU/mem when printing history is not set: if(chkconfig($this->CONFIG['invoices']['print_balance_history'])) { - if(isset($this->CONFIG['invoices']['print_balance_history_save']) && chkconfig($this->CONFIG['invoices']['print_balance_history_save'])) + if(isset($this->CONFIG['invoices']['print_balance_save']) && chkconfig($this->CONFIG['invoices']['print_balance_save'])) $result['customerbalancelist'] = $this->GetCustomerBalanceList($result['customerid'], $result['cdate']); else $result['customerbalancelist'] = $this->GetCustomerBalanceList($result['customerid']); $result['customerbalancelistlimit'] = $this->CONFIG['invoices']['print_balance_history_limit']; }
+ // NOTE: don't waste CPU/mem when printing balance is not set: + if(chkconfig($this->CONFIG['invoices']['print_balance'])) + { + if(isset($this->CONFIG['invoices']['print_balance_save']) && chkconfig($this->CONFIG['invoices']['print_balance_save'])) + $result['customerbalance'] = $this->GetCustomerBalance($result['customerid'], $result['cdate']); + else + $result['customerbalance'] = $this->GetCustomerBalance($result['customerid']); + } + // for backward compat. $result['totalg'] = round( ($result['value'] - floor($result['value'])) * 100); $result['year'] = date('Y',$result['cdate']); --- lms/templates/invoice.html 2009-01-28 17:30:02.873873345 +0100 +++ lms_testowy/templates/invoice.html 2009-01-28 17:45:25.357875337 +0100 @@ -347,11 +347,21 @@ {/if} </TD> </TR> +{if $invoice.customerbalance} + <TR><TD WIDTH="100%" COLSPAN="2"> </TD></TR> + <TR> + <TD WIDTH="100%" COLSPAN="2"> + <B>{t}Your current account balance:{/t} {$invoice.customerbalance|money_format}</B> + </TD> + </TR> + <TR><TD WIDTH="100%" COLSPAN="2"> </TD></TR> +{else} <TR> <TD WIDTH="100%" COLSPAN="2"> </TD> </TR> +{/if} <TR> <TD WIDTH="100%" COLSPAN="2"> <B>{t}Cautions:{/t}</B><BR> --- lms/modules/configlist.php 2009-01-24 14:23:20.000000000 +0100 +++ lms_testowy/modules/configlist.php 2009-01-28 18:22:35.368876733 +0100 @@ -365,9 +365,17 @@ $config[$idx]['description'] = trans('Documents type. You can use "html" or "pdf". Default: html.'); break;
+ case 'print_balance': + $config[$idx]['description'] = trans('If true on invoice (html) will be printed current customer account balance. Default: not set.'); + break; + case 'print_balance_history': $config[$idx]['description'] = trans('If true on invoice (html) will be printed history of financial operations on customer account. Default: not set.'); break; + + case 'print_balance_save': + $config[$idx]['description'] = trans('If true customer account balance and history of financial operations will be counted only to date of invoice. Default: not set.'); + break; case 'print_balance_history_limit': $config[$idx]['description'] = trans('Number of Records on customer balance list on invoice. Specify last x records. Default: 10.'); --- lms/lib/locale/pl/strings.php 2009-01-24 14:23:20.000000000 +0100 +++ lms_testowy/lib/locale/pl/strings.php 2009-01-28 18:35:05.580874072 +0100 @@ -1445,6 +1445,7 @@ $_LANG['You have to specify alias name!'] = 'Musisz wybrać nazwę aliasu!'; $_LANG['You have to specify event day!'] = 'Musisz wybrać dzień wpisu!'; $_LANG['Your/company name or whatever you want to put here:'] = 'Nazwa/nazwisko i imię lub cokolwiek innego:'; +$_LANG['Your current account balance:'] = 'Twój aktualny stan konta:'; $_LANG['Your installation is unregistered!'] = 'Twoja instalacja nie jest zarejestrowana!'; $_LANG['Your PHP does not support GD library required for map generation!'] = 'Twoja wersja PHP nie obsługuje biblioteki graficznej GD wymaganej do wygenerowania mapy!'; $_LANG['Your PHP does not support Ming library required for map generation!'] = 'Twoja wersja PHP nie obsługuje biblioteki Ming wymaganej do wygenerowania mapy!'; @@ -1600,6 +1601,8 @@ $_LANG['duplicate'] = 'duplikat'; $_LANG['DUPLICATE'] = 'DUPLIKAT'; $_LANG['Duplicate draw-up date:'] = 'Data wyst. duplikatu:'; +$_LANG['If true customer account balance and history of financial operations will be counted only to date of invoice. Default: not set.'] = 'Jeśli prawdziwe to stan konta i historia operacji obliczane są tylko do daty wystawienia faktury. Domyślnie: nie ustawiona.'; +$_LANG['If true on invoice (html) will be printed current customer account balance. Default: not set.'] = 'Określa czy na fakturze (html) drukować aktualny stan konta klienta. Domyślnie: nie ustawiona.'; $_LANG['If true on invoice (html) will be printed history of financial operations on customer account. Default: not set.'] = 'Określa czy na fakturze (html) drukować listę operacji finansowych na koncie klienta. Domyślnie: nie ustawiona.'; $_LANG['Number of Records on customer balance list on invoice. Specify last x records. Default: 10.'] = 'Liczba rekordów na liście operacji finansowych na fakturze. Domyślnie: 10.'; $_LANG['Expense:'] = 'Rozchód:';
!DSPAM:49809ebb153361322221663!