Dear Support,
We notice when deleting a Purchase Return the system does not allow making a modification on the Purchase transaction because it still considering a Return is still exist.
I can summarize steps taken as below : -
1- Create a PO 2- Receive the PO 3- Create Purchase Return against the PO 4- Try to edit the Purchase Return, the system does not allowing to edit. 5- Delete the Purchase Return 6- Try to edit the PO, the system does not allowing to edit, it alert that there is a Purchase Return exists !
Is it a bug need fix ? how could we get rid of this error?
Regards, Mazyad
- MSAnswered
Hello,
I am sorry as I missed replying to this question.
The orders will be locked for further editing after return. This is due to the background sync of quantity. There is no alternative to this till the next major release.
Thank you
- MAAnswered
Hello,
Thank you for reply and clarification.
When is the next major release expected to be available?
Regards,
- MSAnswered
Hello,
I am planning to have separate backend and frontends. As I am just starting to re-write and this app has grown quite a lot in last few years so the update will take more than 6 months.
Thank you
- EGAnswered
Hello @Mazyad ALArdhi and [@Mian Saleem](/u/saleem)
You can actually add this block to the
deletePurchase
function inPurchases_model
line192
to be able to edit the purchase entries again after deleting the returned purchase.if ($purchase->status == 'returned') { $this->db->update('purchases', ['return_id' => null, 'return_purchase_ref' => null, 'return_purchase_total' => 0], ['id' => $purchase->purchase_id]); }
So the updated
deletePurchase()
will be as shown below. You can copy and replace.public function deletePurchase($id) { $this->db->trans_start(); $purchase = $this->getPurchaseByID($id); $purchase_items = $this->site->getAllPurchaseItems($id); $this->site->log('Purchase', ['model' => $purchase, 'items' => $purchase_items]); if ($this->db->delete('purchase_items', ['purchase_id' => $id]) && $this->db->delete('purchases', ['id' => $id])) { $this->db->delete('payments', ['purchase_id' => $id]); if ($purchase->status == 'received' || $purchase->status == 'partial') { foreach ($purchase_items as $oitem) { $this->updateAVCO(['product_id' => $oitem->product_id, 'warehouse_id' => $oitem->warehouse_id, 'quantity' => (0 - $oitem->quantity), 'cost' => $oitem->real_unit_cost]); $received = $oitem->quantity_received ? $oitem->quantity_received : $oitem->quantity; if ($oitem->quantity_balance < $received) { $clause = ['purchase_id' => null, 'transfer_id' => null, 'product_id' => $oitem->product_id, 'warehouse_id' => $oitem->warehouse_id, 'option_id' => $oitem->option_id]; $this->site->setPurchaseItem($clause, ($oitem->quantity_balance - $received)); } } } if ($purchase->status == 'returned') { $this->db->update('purchases', ['return_id' => null, 'return_purchase_ref' => null, 'return_purchase_total' => 0], ['id' => $purchase->purchase_id]); } $this->db->delete('attachments', ['subject_id' => $id, 'subject_type' => 'purchase']); $this->site->syncQuantity(null, null, $purchase_items); } $this->db->trans_complete(); if ($this->db->trans_status() === false) { log_message('error', 'An errors has been occurred while adding the sale (Delete:Purchases_model.php)'); } else { return true; } return false; }
- EGAnswered
My name is @Enyinnaya Gift . I am an
Independent Software Developer
with in-depth knowledge of SMA system. I have done a lot of customization for many happy clients across the globe.You can check out highlights and a demo of my latest customization by Clicking HERE - Highlights
You can also reach me via any of the following mediums for a real-time discussion on your customization request:
-Skype ID:
enyinnayag
-Wechat ID:genyinnaya
-Email:[email protected]
-WhatsApp:+2348068355192
- Login to Reply