Witam!

W liście datowanym 24 czerwca 2012 (10:28:41) napisano:




W dniu 23 czerwca 2012 23:47 użytkownik JOYNET <joynet@vp.pl> napisał:
dzieki za wytlumaczenie tego co znaczy cutoff, jak wiesz ma on tez funkcje only_warning

czyli zamiast odłączać ma włączyć tylko ostrzeżenia. adekwatne do tego co pisałem wcześniej. robi update u klienta jedynie w dzień deadline.
generalnie jak już odłączysz hosta to ponownie już go nie musisz wyłączać. uruchamiasz go dopiero po wpłacie ręcznie, czy ze skryptu.
 
pozatym jakbym chcial zeby wysylal codziennie to bym sobie to w cronie odpalil

sam piszesz, że wyłącza w jeden dzień, a teraz że nie chcesz tego codziennie odpalać. co Ty konkretnie chcesz osiągnąć?
 
postaram sie poprawic to zapytanie z cutoff zeby nie sprawdzal faktur rozliczonych tylko na podstawie ostatnio naliczonego salda
 
-- 
Pozdrawiam
Marcin / nicraM


w sumie prosta sprawa ale sie to wszystko zagmantwalo, napisze dokladnie co chce osiagnac:
np klient ma naliaczanie zobowiazania 1 czerwca, termin platnosci do 11 czerwca
miedzy 18 a 22 czerwca ma dostawac komunikat raz dziennie, miedzy 22 a 26 co godzine
i tylko tyle, potem zablokuje go jak przerkoczy saldo o 200% ale z tym nie ma zadnego problemu

tak jak pisalem wczesniej nie ustawie tego za pomoca crona bo klienci maja rozne dni w ktorych jest naliczane te saldo
nie chce ich tez niepokoic wysylaniem wiadomosci po naliczeniu salda ale przed uplywem terminu platnosci

no i najwazniejsze do tej pory nie uzywalem rozliaczania faktur i chcialbym to osiagnac bez uzywania tej opcji
na podstawie aktualnego salda - oraz bez tego zapytania ktore automatycznie rozlicza faktury klientom z dodatnim kontem


plik cutoff.c sprawdza to naliczanie w sposob:

// not payed invoices
                query = strdup(
                        "SELECT DISTINCT d.customerid AS id "
                        "FROM documents d "
                        "JOIN customers c ON (d.customerid = c.id) "
                        "WHERE d.type = 1 "
                                "AND d.closed = 0 "
                                "AND d.cdate + d.paytime * 86400 + 86400 * ? < %NOW% "
                                "AND c.deleted = 0 "
                                "AND c.cutoffstop < %NOW%"
                                "%groups%egroups%nets%enets"
                );


jesli dobrze rozumiem to sprawdza na nierozlicznej fakturze termin platnosci i jesli jest mniejszy od aktualnej daty to zaczyna reagowac

mysle ze zmiana tego zapytania w ten sposob, zeby sprawdzal aktualne saldo danego klienta oraz dzien naliczenenia ostatniego salda + deadline rozwiaze sprawe

czyli jesli klient ma naliczone saldo 1 czerwca, i deadline jest ustawione na 17 dni to 18 czerwca dostanie wiadomosc o tym ze jest zablokowany (bez sprawdzania rozliczonych faktur) pod warunkiem ze jego saldo jest ujemne
ta instancja bedzie sprawdzana raz dziennie

potem ustawie sobie identyczna ktora bedzie sprawdzana co godzine ale z wydluzonym deadline na 21 dni 

zapytanie powinno wygladac mniej wiecej tak:
  // not payed invoices
                query = strdup(
                        "SELECT d.customerid AS id, MAX(ca.time)"
                        "FROM documents d "
                        "JOIN customers c ON (d.customerid = c.id) LEFT JOIN cash ca ON (d.customerid = ca.customerid) "
                        "WHERE d.type = 1 "
                                "AND d.cdate + d.paytime * 86400 + 86400 * ? < %NOW% "
                                "AND c.deleted = 0 "
                                "AND c.cutoffstop < %NOW%"
                                "%groups%egroups%nets%enets GROUP BY d.customerid HAVING SUM(ca.value) < 0 "


ale cos w nim jest jeszcze skopane



-- 
Pozdrowienia,
 JOYNET