Zaznaczanie FV jako nierozliczone - skrypt.
Witam, W nawiązaniu do ostatniego wątku o rozliczaniu faktur w LMSie na podstawie kwoty wpłaty, przyszedł mi do głowy taki pomysł, żeby zabrać się za to od drugiej strony. Tzn, zamiast rozliczać faktury na podstawie wpłaty, wymyśliłem, że już po zaksięgowaniu wpłat można przejrzeć saldo klientów i na podstawie aktualnego salda zaznaczyć odpowiednią ilość najmłodszych faktur jako nierozliczone. Poniżej skrypt w perlu, który to właśnie robi. Może się komuś przyda.
Skrypt najpierw rozlicza *WSZYSTKIE* faktury niezależnie od salda a następnie przegląda każdego klienta z ujemnym saldem i zaznacza faktury jako nierozliczone, zaczynając od najnowszej. Nierozliczone pozostają faktury na łączną wartość przynajmniej równą saldu (co do wartości bezwzględnej). Jeśli faktura ma wartość <= 0 (korekty) pozostaje rozliczona. W efekcie rozliczone są faktury najstarsze, zerowe i ujemne. Saldo klienta nawet -0,01 zł skutkuje nierozliczoną fakturą.
Skrypt ma kilka wad: - pętla while ($customer_balance < 0) nie zatrzyma się jeśli saldo klienta jest mniejsze od sumy wartości wszystkich wystawionych faktur i korekt - u mnie się to nie zdarzyło, - nie bierze pod uwagę not obciążeniowych - na razie nie miałem takiej potrzeby, - nie bierze pod uwagę tego co jest na dowodach wpłat, czyli jeśli rozliczyliśmy *nie najstarszą* fakturę dowodem wpłaty, a klient ma nadal saldo ujemne, to ta faktura rozliczona dowodem wpłaty może zostać zaznaczona przez skrypt jako nierozliczona. Wystawienie dowodu wpłaty na *nie najstarszą* fakturę jest złamaniem założenia, że rozliczamy najpierw najstarsze należności.
Proponuję popatrzeć sobie na środowisku testowym lub zrobić backup danych przed zabawą. Pozdrawiam.
Łukasz Bujek
----------------------------------------- start -------------------------------------- #!/usr/bin/perl use DBI; $dsn = 'DBI:mysql:lms:localhost'; $db_user_name = 'lms'; $db_password = 'xxxxx'; $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#rozliczanie wszystkich faktur i korekt $close_invoices = $dbh->prepare(qq{ update documents set closed = 1 where type = 1 or type = 3;} ); $close_invoices->execute();
#wybieranie klientów z ujemnym saldem $select_customerid = $dbh->prepare(qq{ select customerid from cash where customerid >0 group by customerid having sum(value) < 0;} ); $select_customerid->execute(); $count = $select_customerid->rows();
#przegladanie faktur klientów z ujemnym saldem for ($i = 1; $i <= $count; $i ++) {
#obliczanie salda klienta $customer_id = $select_customerid->fetchrow_array(); $get_customer_balance = $dbh->prepare(qq{ select sum(value) from cash where customerid = $customer_id;} ); $get_customer_balance->execute(); $customer_balance = $get_customer_balance->fetchrow_array();
print "id: $customer_id, balance: $customer_balance, ";
#wybranie wszystkich faktur (i korekt) danego klienta w kolejnosci od najmlodszej $get_invoices = $dbh->prepare(qq{ select id,type from documents where (type=3 or type=1) and customerid = $customer_id order by cdate desc;} ); $get_invoices->execute();
#przegladamy faktury, zaznaczajac jako nierozliczone te z wartoscia dodatnia, zaznaczamy tyle faktur az ich laczna wartosc pokryje uj emne saldo klienta while ($customer_balance < 0) { @invoice_data = $get_invoices->fetchrow_array(); $invoice_id = $invoice_data[0]; $invoice_type = $invoice_data[1];
# jeśli faktura, wartosc liczymy jako suma (wartosc towaru * ilosc) if ($invoice_type == 1) { $get_invoice_value = $dbh->prepare(qq{ select sum(value*count) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } else # jesli korekta, wartosc liczymy jako suma wartosci towaru (w moich korektach czesto w polu count bylo 0, stad oddzielny przypadek) { $get_invoice_value = $dbh->prepare(qq{ select sum(value) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } print "value: $invoice_value, ";
if ($invoice_value > 0) { $customer_balance += $invoice_value; $open_invoice = $dbh->prepare(qq{ update documents set closed = 0 where id = $invoice_id;} ); $open_invoice->execute(); }
print "balance after: $customer_balance \n"; } } ----------------------------------------- koniec --------------------------------------
Skrypt ma kilka wad:
- pętla while ($customer_balance < 0) nie zatrzyma się jeśli saldo
klienta jest mniejsze od sumy wartości wszystkich wystawionych faktur i korekt - u mnie się to nie zdarzyło,
w sumie to skrypt jest calkim ok po za tym powyzej. u najstarszych klientow zdarza sie ze faktury wystawiane byly poza lmsem i dzieje sie tak jak napisalem wyzej (znam kilka takich osob, w tym ja). wydaje mi sie ze wystarczylo by wyrzucic na ekran informacje ze dla tego klienta wszystkie faktury pozostana nierozliczone i takie wlasnie je zostawic.
W dniu 12 września 2011 15:44 użytkownik Robert cyberm@sarocom.net napisał:
Skrypt ma kilka wad:
- pętla while ($customer_balance < 0) nie zatrzyma się jeśli saldo
klienta jest mniejsze od sumy wartości wszystkich wystawionych faktur i korekt - u mnie się to nie zdarzyło,
w sumie to skrypt jest calkim ok po za tym powyzej. u najstarszych klientow zdarza sie ze faktury wystawiane byly poza lmsem i dzieje sie tak jak napisalem wyzej (znam kilka takich osob, w tym ja). wydaje mi sie ze wystarczylo by wyrzucic na ekran informacje ze dla tego klienta wszystkie faktury pozostana nierozliczone i takie wlasnie je zostawic.
No to ciach. Już się nie zapętla. Wyrzuca informację o wszystkich fakturach nierozliczonych (choć w rzeczywistości ujemne i zerowe rozliczy, ale to szczegół). Jeśli saldo jest mniejsze niż wynikałoby to z wystawionych faktur - informuje o tym. Proszę o dalsze testy/uwagi.
Pozdrawiam.
Łukasz Bujek
---------- start ---------- #!/usr/bin/perl use DBI; $dsn = 'DBI:mysql:lms:localhost'; $db_user_name = 'lms'; $db_password = '123dupa12333'; $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#rozliczanie wszystkich faktur i korekt $close_invoices = $dbh->prepare(qq{ update documents set closed = 1 where type = 1 or type = 3;} ); $close_invoices->execute();
#wybieranie klientów z ujemnym saldem $select_customerid = $dbh->prepare(qq{ select customerid from cash where customerid >0 group by customerid having sum(value) < 0;} ); $select_customerid->execute(); $count = $select_customerid->rows();
#przegladanie faktur klientów z ujemnym saldem for ($i = 1; $i <= $count; $i ++) {
#obliczanie salda klienta $customer_id = $select_customerid->fetchrow_array(); $get_customer_balance = $dbh->prepare(qq{ select sum(value) from cash where customerid = $customer_id;} ); $get_customer_balance->execute(); $customer_balance = $get_customer_balance->fetchrow_array();
print "id: $customer_id, balance: $customer_balance, ";
#wybranie wszystkich faktur danego klienta w kolejnosci od najmlodszej $get_invoices = $dbh->prepare(qq{ select id,type from documents where (type=3 or type=1) and customerid = $customer_id order by cdate desc;} ); $get_invoices->execute(); $invoice_count = $get_invoices->rows();
#przegladamy faktury, zaznaczajac jako nierozliczone te z wartoscia dodatnia, zaznaczamy tyle faktur az ich laczna wartosc pokryje ujemne saldo klienta while ($customer_balance < 0 && $invoice_count > 0) { @invoice_data = $get_invoices->fetchrow_array(); $invoice_id = $invoice_data[0]; $invoice_type = $invoice_data[1];
# jeśli faktura, wartosc liczymy jako suma (wartosc towaru * ilosc) if ($invoice_type == 1) { $get_invoice_value = $dbh->prepare(qq{ select sum(value*count) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } else # jesli korekta, wartosc liczymy jako suma wartosci towaru (w moich korektach czesto w polu count bylo 0) { $get_invoice_value = $dbh->prepare(qq{ select sum(value) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } print "value: $invoice_value, ";
if ($invoice_value > 0) { $customer_balance += $invoice_value; $open_invoice = $dbh->prepare(qq{ update documents set closed = 0 where id = $invoice_id;} ); $open_invoice->execute(); }
print "balance after: $customer_balance \n";
$invoice_count--;
if ($invoice_count == 0) { print "Wszystkie faktury klienta $customer_id pozostaja nierozliczone.\n"; if ($customer_balance < 0) { print "UWAGA! Saldo klienta $customer_id jest nizsze niz wynika to z wystawionych faktur. Petla przerwana.\n"; } } } } ---------- koniec ----------
No to ciach. Już się nie zapętla. Wyrzuca informację o wszystkich fakturach nierozliczonych (choć w rzeczywistości ujemne i zerowe rozliczy, ale to szczegół). Jeśli saldo jest mniejsze niż wynikałoby to z wystawionych faktur - informuje o tym. Proszę o dalsze testy/uwagi.
no teraz do ewentualnych poprawek recznych zostaje nie wiele (przy zalozeniu ze skrypt zostanie odpalony raz "naprawczo"). mysle ze mozna by tego uniknac polegajac na tabeli cash zamiast documents tzn. gdyby brac pod uwage wartosc zobowiazan nie powiazanych w faktura w sensie dokumentu. np. u mnie mam klienta u ktorego skrypt zwraca "saldo klienta jest nizsze..." choc kwotowo to nie prawda (w tabeli cash sa stosowne obciazenia tyle ze nie ma dla nich faktur w documents).
poza tym drobiazgiem mysle ze zrobiles dobra robote :) u mnie do zrobienia recznie zostalo raptem 6 klientow z odleglych lat (przed 2004 rokiem)
poza tym drobiazgiem mysle ze zrobiles dobra robote :) u mnie do zrobienia recznie zostalo raptem 6 klientow z odleglych lat (przed 2004 rokiem)
przeanalizowałem te 6 przypadków i wychodzi że w 3 jest chyba problem z liczeniem. wszyscy 3 mają saldo ujemne i brak wpłat (jakichkolwiek może to ma znaczenie). kwota zobowiązań jest równa kwocie na fakturach. mimo to dostalem zwrotke "saldo klienta jest nizsze...". w sumie nie powoduje to problemu bo dłużnik ma faktury nierozliczone ale komunikat może siać zamęt ;-) może to pomoże: id: xxx, balance: -142.74, value: 47.5800, balance after: -95.16 value: 47.5800, balance after: -47.58 value: 47.5800, balance after: -1.4210854715202e-14 Wszystkie faktury klienta xxx pozostaja nierozliczone. UWAGA! Saldo klienta xxx jest nizsze niz wynika to z wystawionych faktur. Petla przerwana.
z lmsa wynika że: abonament=47,58 saldo=-142,74 wystawiono 3 faktury
W dniu 12 września 2011 17:17 użytkownik Robert cyberm@sarocom.net napisał:
może to pomoże: id: xxx, balance: -142.74, value: 47.5800, balance after: -95.16 value: 47.5800, balance after: -47.58 value: 47.5800, balance after: -1.4210854715202e-14 Wszystkie faktury klienta xxx pozostaja nierozliczone. UWAGA! Saldo klienta xxx jest nizsze niz wynika to z wystawionych faktur. Petla przerwana.
z lmsa wynika że: abonament=47,58 saldo=-142,74 wystawiono 3 faktury
Dzięki za testy. Faktycznie perl coś ma problem z liczeniem, u mnie to samo na tych danych. Dorzuciłem zaokrąglanie salda do drugiego miejsca po przecinku i poprawiłem wyświetlanie liczb. Do działania potrzeby moduł perla Math::Round. Pozdrawiam.
Łukasz Bujek
------ start ------- #!/usr/bin/perl use DBI; use Math::Round; $dsn = 'DBI:mysql:lms:localhost'; $db_user_name = 'lms'; $db_password = '123dupa12333'; $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#rozliczanie wszystkich faktur i korekt $close_invoices = $dbh->prepare(qq{ update documents set closed = 1 where type = 1 or type = 3;} ); $close_invoices->execute();
#wybieranie klientów z ujemnym saldem $select_customerid = $dbh->prepare(qq{ select customerid from cash where customerid >0 group by customerid having sum(value) < 0;} ); $select_customerid->execute(); $count = $select_customerid->rows();
#przegladanie faktur klientów z ujemnym saldem for ($i = 1; $i <= $count; $i ++) {
#obliczanie salda klienta $customer_id = $select_customerid->fetchrow_array(); $get_customer_balance = $dbh->prepare(qq{ select sum(value) from cash where customerid = $customer_id;} ); $get_customer_balance->execute(); $customer_balance = $get_customer_balance->fetchrow_array();
printf "id: $customer_id, balance: %.2f, ",$customer_balance;
#wybranie wszystkich faktur danego klienta w kolejnosci od najmlodszej $get_invoices = $dbh->prepare(qq{ select id,type from documents where (type=3 or type=1) and customerid = $customer_id order by cdate desc;} ); $get_invoices->execute(); $invoice_count = $get_invoices->rows();
#przegladamy faktury, zaznaczajac jako nierozliczone te z wartoscia dodatnia, zaznaczamy tyle faktur az ich laczna wartosc pokryje ujemne saldo klienta while ($customer_balance < 0 && $invoice_count > 0) { @invoice_data = $get_invoices->fetchrow_array(); $invoice_id = $invoice_data[0]; $invoice_type = $invoice_data[1];
# jeśli faktura, wartosc liczymy jako suma (wartosc towaru * ilosc) if ($invoice_type == 1) { $get_invoice_value = $dbh->prepare(qq{ select sum(value*count) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } else # jesli korekta, wartosc liczymy jako suma wartosci towaru (w moich korektach czesto w polu count bylo 0) { $get_invoice_value = $dbh->prepare(qq{ select sum(value) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } printf "value: %.2f, ",$invoice_value;
if ($invoice_value > 0) { $customer_balance += $invoice_value; $open_invoice = $dbh->prepare(qq{ update documents set closed = 0 where id = $invoice_id;} ); $open_invoice->execute(); } $customer_balance = round($customer_balance*100)/100; printf "balance after: %.2f\n",$customer_balance;
$invoice_count--;
if ($invoice_count == 0) { print "Wszystkie faktury klienta $customer_id pozostaja nierozliczone.\n"; if ($customer_balance < 0) { print "UWAGA! Saldo klienta $customer_id jest nizsze niz wynika to z wystawionych faktur! Petla przerwana.\n"; } } } } ---------- koniec ---------
Dzięki za testy. Faktycznie perl coś ma problem z liczeniem, u mnie to samo na tych danych. Dorzuciłem zaokrąglanie salda do drugiego miejsca po przecinku i poprawiłem wyświetlanie liczb. Do działania potrzeby moduł perla Math::Round. Pozdrawiam. Łukasz Bujek
Wygląda, że teraz działa poprawnie. Swoją drogą działa to bardzo szybko w przeciwieństwie do modułu z lmsa. Rozliczanie faktur w trakcie ich wystawiania trwa i trwa... robię to w nocy bo nieźle daje w proca. Twoje rozwiązanie nawet w labie na antyku wykonuje się błyskawicznie. Może warto to jakoś pożenić na stałe z lmsem w całości albo w części (hmm jako dawcę kodu/koncepcję) jeśli Łukasz wyrazi zgodę bo nie ma w skrypcie wzmianki o rodzaju licencji ;-)
W dniu 12 września 2011 17:17 użytkownik Robert cyberm@sarocom.net napisał:
może to pomoże: id: xxx, balance: -142.74, value: 47.5800, balance after: -95.16 value: 47.5800, balance after: -47.58 value: 47.5800, balance after: -1.4210854715202e-14 Wszystkie faktury klienta xxx pozostaja nierozliczone. UWAGA! Saldo klienta xxx jest nizsze niz wynika to z wystawionych faktur. Petla przerwana.
z lmsa wynika że: abonament=47,58 saldo=-142,74 wystawiono 3 faktury
Dzięki za testy. Faktycznie perl coś ma problem z liczeniem, u mnie to samo na tych danych. Dorzuciłem zaokrąglanie salda do drugiego miejsca po przecinku i poprawiłem wyświetlanie liczb. Do działania potrzeby moduł perla Math::Round. Pozdrawiam.
Łukasz Bujek
------ start ------- #!/usr/bin/perl use DBI; use Math::Round; $dsn = 'DBI:mysql:lms:localhost'; $db_user_name = 'lms'; $db_password = '123dupa12333'; $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#rozliczanie wszystkich faktur i korekt $close_invoices = $dbh->prepare(qq{ update documents set closed = 1 where type = 1 or type = 3;} ); $close_invoices->execute();
#wybieranie klientów z ujemnym saldem $select_customerid = $dbh->prepare(qq{ select customerid from cash where customerid >0 group by customerid having sum(value) < 0;} ); $select_customerid->execute(); $count = $select_customerid->rows();
#przegladanie faktur klientów z ujemnym saldem for ($i = 1; $i <= $count; $i ++) {
#obliczanie salda klienta $customer_id = $select_customerid->fetchrow_array(); $get_customer_balance = $dbh->prepare(qq{ select sum(value) from cash where customerid = $customer_id;} ); $get_customer_balance->execute(); $customer_balance = $get_customer_balance->fetchrow_array();
printf "id: $customer_id, balance: %.2f, ",$customer_balance; - Pokaż cytowany tekst - printf "value: %.2f, ",$invoice_value;
if ($invoice_value > 0) { $customer_balance += $invoice_value; $open_invoice = $dbh->prepare(qq{ update documents set closed = 0 where id = $invoice_id;} ); $open_invoice->execute(); } $customer_balance = round($customer_balance*100)/100; printf "balance after: %.2f\n",$customer_balance;
$invoice_count--;
if ($invoice_count == 0) { print "Wszystkie faktury klienta $customer_id pozostaja nierozliczone.\n"; if ($customer_balance < 0) { print "UWAGA! Saldo klienta $customer_id jest nizsze niz wynika to z wystawionych faktur! Petla przerwana.\n"; } } } } ---------- koniec ---------
Witam,
Ja do tego spłodziłem sobie trigger + procedurę w MySQL. Działa tak, że jeżeli jest insert na tabeli z wartością powyżej 0, to odpala się procedura która sprawdza czy saldo umożliwia odznaczenie faktur jako rozliczonych, jeżeli tak to odznacza bez do wysokości środków które klient wpłacił. Rozwiązanie o tyle lepsze, że działa bez crona i zmian kodu w lmsie, czyli automagicznie i transparętnie.
W dniu 12 września 2011 16:28 użytkownik Łukasz Bujek booyas@gmail.com napisał:
W dniu 12 września 2011 15:44 użytkownik Robert cyberm@sarocom.net napisał:
Skrypt ma kilka wad:
- pętla while ($customer_balance < 0) nie zatrzyma się jeśli saldo
klienta jest mniejsze od sumy wartości wszystkich wystawionych faktur i korekt - u mnie się to nie zdarzyło,
w sumie to skrypt jest calkim ok po za tym powyzej. u najstarszych klientow zdarza sie ze faktury wystawiane byly poza lmsem i dzieje sie tak jak napisalem wyzej (znam kilka takich osob, w tym ja). wydaje mi sie ze wystarczylo by wyrzucic na ekran informacje ze dla tego klienta wszystkie faktury pozostana nierozliczone i takie wlasnie je zostawic.
No to ciach. Już się nie zapętla. Wyrzuca informację o wszystkich fakturach nierozliczonych (choć w rzeczywistości ujemne i zerowe rozliczy, ale to szczegół). Jeśli saldo jest mniejsze niż wynikałoby to z wystawionych faktur - informuje o tym. Proszę o dalsze testy/uwagi.
Pozdrawiam.
Łukasz Bujek
---------- start ---------- #!/usr/bin/perl use DBI; $dsn = 'DBI:mysql:lms:localhost'; $db_user_name = 'lms'; $db_password = '123dupa12333'; $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#rozliczanie wszystkich faktur i korekt $close_invoices = $dbh->prepare(qq{ update documents set closed = 1 where type = 1 or type = 3;} ); $close_invoices->execute();
#wybieranie klientów z ujemnym saldem $select_customerid = $dbh->prepare(qq{ select customerid from cash where customerid >0 group by customerid having sum(value) < 0;} ); $select_customerid->execute(); $count = $select_customerid->rows();
#przegladanie faktur klientów z ujemnym saldem for ($i = 1; $i <= $count; $i ++) {
#obliczanie salda klienta $customer_id = $select_customerid->fetchrow_array(); $get_customer_balance = $dbh->prepare(qq{ select sum(value) from cash where customerid = $customer_id;} ); $get_customer_balance->execute(); $customer_balance = $get_customer_balance->fetchrow_array();
print "id: $customer_id, balance: $customer_balance, ";
#wybranie wszystkich faktur danego klienta w kolejnosci od najmlodszej $get_invoices = $dbh->prepare(qq{ select id,type from documents where (type=3 or type=1) and customerid = $customer_id order by cdate desc;} ); $get_invoices->execute(); $invoice_count = $get_invoices->rows();
#przegladamy faktury, zaznaczajac jako nierozliczone te z wartoscia dodatnia, zaznaczamy tyle faktur az ich laczna wartosc pokryje ujemne saldo klienta while ($customer_balance < 0 && $invoice_count > 0) { @invoice_data = $get_invoices->fetchrow_array(); $invoice_id = $invoice_data[0]; $invoice_type = $invoice_data[1];
# jeśli faktura, wartosc liczymy jako suma (wartosc towaru * ilosc) if ($invoice_type == 1) { $get_invoice_value = $dbh->prepare(qq{ select sum(value*count) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } else # jesli korekta, wartosc liczymy jako suma wartosci towaru (w moich korektach czesto w polu count bylo 0) { $get_invoice_value = $dbh->prepare(qq{ select sum(value) from invoicecontents where docid = $invoice_id;} ); $get_invoice_value->execute(); $invoice_value = $get_invoice_value->fetchrow_array(); } print "value: $invoice_value, ";
if ($invoice_value > 0) { $customer_balance += $invoice_value; $open_invoice = $dbh->prepare(qq{ update documents set closed = 0 where id = $invoice_id;} ); $open_invoice->execute(); }
print "balance after: $customer_balance \n";
$invoice_count--;
if ($invoice_count == 0) { print "Wszystkie faktury klienta $customer_id pozostaja nierozliczone.\n"; if ($customer_balance < 0) { print "UWAGA! Saldo klienta $customer_id jest nizsze niz wynika to z wystawionych faktur. Petla przerwana.\n"; } } } } ---------- koniec ---------- _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
W dniu 12 września 2011 18:10 użytkownik Rafał Ramocki rafal.ramocki@gmail.com napisał:
Witam,
Ja do tego spłodziłem sobie trigger + procedurę w MySQL. Działa tak, że jeżeli jest insert na tabeli z wartością powyżej 0, to odpala się procedura która sprawdza czy saldo umożliwia odznaczenie faktur jako rozliczonych, jeżeli tak to odznacza bez do wysokości środków które klient wpłacił. Rozwiązanie o tyle lepsze, że działa bez crona i zmian kodu w lmsie, czyli automagicznie i transparętnie.
Czy możesz podzielić się tym rozwiązaniem? Pozdrawiam.
Łukasz Bujek
uczestnicy (3)
-
Rafał Ramocki
-
Robert
-
Łukasz Bujek