-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Zmiana wartości last_cash_id dla billtech_customer_info #82
base: master
Are you sure you want to change the base?
Conversation
* @return bool | ||
*/ | ||
private function checkIfCustomerCashIdExists(integer $customerId, integer $cashId): bool | ||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
format
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ta funkcja nie zwraca bool. Dodałbym castowanie albo poprawił sygnaturę.
@@ -113,7 +124,7 @@ public function updateCustomerBalance($customerId) | |||
where bci.customer_id = ? | |||
group by bci.customer_id", array($customerId)); | |||
|
|||
if ($customerInfo['new_last_cash_id'] > $customerInfo['last_cash_id']) { | |||
if ($customerInfo['new_last_cash_id'] > $customerInfo['last_cash_id'] || ($customerInfo['new_last_cash_id'] < $customerInfo['last_cash_id'] && !$this->checkIfCustomerCashIdExists($customerId, $customerInfo['last_cash_id']))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trzeba trochę poprawiać ten kod. Dałbym te warunki pod funkcje pomocnicze o odpowiednich nazwach.
@@ -410,19 +421,18 @@ private function getCustomerIdsForUpdate() | |||
left join billtech_customer_info bci on bci.customer_id = cu.id | |||
left join cash ca on ca.customerid = cu.id | |||
group by bci.customer_id, bci.last_cash_id | |||
having bci.last_cash_id <= coalesce(max(ca.id), 0);"); | |||
having bci.last_cash_id != coalesce(max(ca.id), 0);")?: array(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Postarałbym się oddzielić SQL od PHP. Chociaż poprzez formatowanie.
Aktualnie w tabeli billtech_customer_info przetrzymujemy pary customer_id | last_cash_id. Niestety ten last_cash_id nie odpowiada realnie rekordowi cash danego użytkownika, tylko najwyższego id na całej tabeli cash w momencie wykonania ostatniej aktualizacji.
Ułatwi to trakowanie aktualizacji u danego usera, bo będzie jasno widać, który cash był ostatni aktualizowany przez wtyczkę i dodatkowo w przypadku ręcznych usuwań (na przykład faktura jest opłacona, ale rekord wpłaty zostaje jednak usunięty ręcznie przez dostawcę) wracamy z cash_id do poprzedniej faktury i dokonujemy przeliczenia (bo wykrywane jest i przeliczany jest bilans).