From acec0227c5b9e9a629ee614642ab03d11c657f9e Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Tue, 26 Mar 2013 12:33:43 +0530 Subject: [PATCH] fixes in stock entry --- .../Purchase Order-Purchase Receipt.txt | 144 ++++++++---------- stock/doctype/stock_entry/stock_entry.py | 6 + stock/doctype/stock_entry/stock_entry.txt | 22 +-- stock/doctype/stock_entry/test_stock_entry.py | 2 +- utilities/transaction_base.py | 3 +- 5 files changed, 83 insertions(+), 94 deletions(-) diff --git a/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt b/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt index 8d7fab1235..0833aaa849 100644 --- a/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt +++ b/stock/DocType Mapper/Purchase Order-Purchase Receipt/Purchase Order-Purchase Receipt.txt @@ -1,189 +1,169 @@ [ { - "owner": "Administrator", + "creation": "2013-02-22 01:28:05", "docstatus": 0, - "creation": "2010-08-08 17:09:35", + "modified": "2013-03-26 07:58:20", "modified_by": "Administrator", - "modified": "2012-04-02 14:03:39" + "owner": "Administrator" }, { + "doctype": "Table Mapper Detail", "name": "__common__", "parent": "Purchase Order-Purchase Receipt", - "doctype": "Table Mapper Detail", - "parenttype": "DocType Mapper", - "parentfield": "table_mapper_details" + "parentfield": "table_mapper_details", + "parenttype": "DocType Mapper" }, { + "doctype": "Field Mapper Detail", "map": "Yes", "name": "__common__", "parent": "Purchase Order-Purchase Receipt", - "doctype": "Field Mapper Detail", - "parenttype": "DocType Mapper", - "parentfield": "field_mapper_details" + "parentfield": "field_mapper_details", + "parenttype": "DocType Mapper" }, { - "name": "__common__", - "to_doctype": "Purchase Receipt", - "module": "Stock", "doctype": "DocType Mapper", + "from_doctype": "Purchase Order", + "module": "Stock", + "name": "__common__", "ref_doc_submitted": 1, - "from_doctype": "Purchase Order" + "to_doctype": "Purchase Receipt" }, { - "name": "Purchase Order-Purchase Receipt", - "doctype": "DocType Mapper" + "doctype": "DocType Mapper", + "name": "Purchase Order-Purchase Receipt" }, { - "match_id": 0, - "to_field": "supplier", + "checking_operator": "=", "doctype": "Field Mapper Detail", "from_field": "supplier", - "checking_operator": "=" + "match_id": 0, + "to_field": "supplier" }, { - "match_id": 0, - "to_field": "company", + "checking_operator": "=", "doctype": "Field Mapper Detail", "from_field": "company", - "checking_operator": "=" + "match_id": 0, + "to_field": "company" }, { - "match_id": 0, - "to_field": "currency", + "checking_operator": "=", "doctype": "Field Mapper Detail", "from_field": "currency", - "checking_operator": "=" + "match_id": 0, + "to_field": "currency" }, { - "to_field": "prevdoc_detail_docname", "doctype": "Field Mapper Detail", + "from_field": "name", "match_id": 1, - "from_field": "name" + "to_field": "prevdoc_detail_docname" }, { - "to_field": "prevdoc_docname", "doctype": "Field Mapper Detail", + "from_field": "parent", "match_id": 1, - "from_field": "parent" + "to_field": "prevdoc_docname" }, { - "to_field": "prevdoc_doctype", "doctype": "Field Mapper Detail", + "from_field": "parenttype", "match_id": 1, - "from_field": "parenttype" + "to_field": "prevdoc_doctype" }, { - "match_id": 1, - "to_field": "item_code", + "checking_operator": "=", "doctype": "Field Mapper Detail", "from_field": "item_code", - "checking_operator": "=" - }, - { - "to_field": "received_qty", - "doctype": "Field Mapper Detail", "match_id": 1, - "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) " + "to_field": "item_code" }, { - "to_field": "qty", "doctype": "Field Mapper Detail", + "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) ", "match_id": 1, - "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) " + "to_field": "received_qty" }, { - "to_field": "stock_qty", "doctype": "Field Mapper Detail", + "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) ", "match_id": 1, - "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) * flt(obj.conversion_factor)" + "to_field": "qty" }, { - "to_field": "import_amount", "doctype": "Field Mapper Detail", + "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) * flt(obj.conversion_factor)", "match_id": 1, - "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) * flt(obj.import_rate)" + "to_field": "stock_qty" }, { - "to_field": "amount", "doctype": "Field Mapper Detail", + "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) * flt(obj.import_rate)", "match_id": 1, - "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) * flt(obj.purchase_rate)" + "to_field": "import_amount" }, { - "to_field": "schedule_date", "doctype": "Field Mapper Detail", + "from_field": "eval:(flt(obj.qty) - flt(obj.received_qty)) * flt(obj.purchase_rate)", "match_id": 1, - "from_field": "schedule_date" + "to_field": "amount" }, { - "to_field": "net_total", "doctype": "Field Mapper Detail", + "from_field": "schedule_date", + "match_id": 1, + "to_field": "schedule_date" + }, + { + "doctype": "Field Mapper Detail", + "from_field": "net_total", "match_id": 0, - "from_field": "net_total" + "to_field": "net_total" }, { - "to_field": "grand_total", "doctype": "Field Mapper Detail", + "from_field": "grand_total", "match_id": 0, - "from_field": "grand_total" + "to_field": "grand_total" }, { - "to_field": "total_tax", "doctype": "Field Mapper Detail", + "from_field": "total_tax", "match_id": 0, - "from_field": "total_tax" + "to_field": "total_tax" }, { - "to_field": "conversion_rate", "doctype": "Field Mapper Detail", + "from_field": "conversion_rate", "match_id": 0, - "from_field": "conversion_rate" + "to_field": "conversion_rate" }, { - "reference_key": "prevdoc_detail_docname", - "match_id": 1, - "reference_doctype_key": "prevdoc_doctype", - "to_field": "purchase_receipt_details", "doctype": "Table Mapper Detail", "from_field": "po_details", "from_table": "Purchase Order Item", + "match_id": 1, + "reference_doctype_key": "prevdoc_doctype", + "reference_key": "prevdoc_detail_docname", + "to_field": "purchase_receipt_details", "to_table": "Purchase Receipt Item", "validation_logic": "docstatus=1 and qty > ifnull(received_qty,0)" }, { - "reference_key": "prevdoc_detail_docname", - "match_id": 1, - "reference_doctype_key": "prevdoc_doctype", - "to_field": "purchase_receipt_details", - "doctype": "Table Mapper Detail", - "from_field": "po_details", - "from_table": "Purchase Order Item", - "to_table": "Purchase Receipt Item", - "validation_logic": "docstatus=1 and qty > ifnull(received_qty,0)" - }, - { - "reference_key": "prevdoc_docname", - "match_id": 0, "doctype": "Table Mapper Detail", "from_table": "Purchase Order", + "match_id": 0, + "reference_key": "prevdoc_docname", "to_table": "Purchase Receipt", "validation_logic": "docstatus = 1" }, { - "match_id": 2, - "to_field": "purchase_tax_details", "doctype": "Table Mapper Detail", "from_field": "purchase_tax_details", "from_table": "Purchase Taxes and Charges", - "to_table": "Purchase Taxes and Charges", - "validation_logic": "docstatus = 1" - }, - { "match_id": 2, "to_field": "purchase_tax_details", - "doctype": "Table Mapper Detail", - "from_field": "purchase_tax_details", - "from_table": "Purchase Taxes and Charges", "to_table": "Purchase Taxes and Charges", "validation_logic": "docstatus = 1" } diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py index d89d95b272..c437135ad6 100644 --- a/stock/doctype/stock_entry/stock_entry.py +++ b/stock/doctype/stock_entry/stock_entry.py @@ -55,6 +55,7 @@ class DocType(StockController): self.validate_finished_goods() self.validate_return_reference_doc() self.validate_with_material_request() + self.validate_fiscal_year() def on_submit(self): self.update_serial_no(1) @@ -68,6 +69,11 @@ class DocType(StockController): self.update_production_order(0) self.make_gl_entries() + def validate_fiscal_year(self): + import accounts.utils + accounts.utils.validate_fiscal_year(self.doc.posting_date, self.doc.fiscal_year, + self.meta.get_label("posting_date")) + def validate_purpose(self): valid_purposes = ["Material Issue", "Material Receipt", "Material Transfer", "Manufacture/Repack", "Subcontract", "Sales Return", "Purchase Return"] diff --git a/stock/doctype/stock_entry/stock_entry.txt b/stock/doctype/stock_entry/stock_entry.txt index df5b613baf..91f9bb4fc0 100644 --- a/stock/doctype/stock_entry/stock_entry.txt +++ b/stock/doctype/stock_entry/stock_entry.txt @@ -1,8 +1,8 @@ [ { - "creation": "2013-03-11 12:34:40", + "creation": "2013-03-26 06:51:17", "docstatus": 0, - "modified": "2013-03-19 17:48:29", + "modified": "2013-03-26 07:24:53", "modified_by": "Administrator", "owner": "Administrator" }, @@ -542,6 +542,16 @@ "reqd": 0, "search_index": 0 }, + { + "doctype": "DocField", + "fieldname": "fiscal_year", + "fieldtype": "Select", + "in_filter": 0, + "label": "Fiscal Year", + "options": "link:Fiscal Year", + "print_hide": 1, + "reqd": 1 + }, { "allow_on_submit": 0, "doctype": "DocField", @@ -610,13 +620,5 @@ { "doctype": "DocPerm", "role": "Manufacturing User" - }, - { - "doctype": "DocPerm", - "role": "Manufacturing Manager" - }, - { - "doctype": "DocPerm", - "role": "Material Manager" } ] \ No newline at end of file diff --git a/stock/doctype/stock_entry/test_stock_entry.py b/stock/doctype/stock_entry/test_stock_entry.py index 25018930dd..3f8012a726 100644 --- a/stock/doctype/stock_entry/test_stock_entry.py +++ b/stock/doctype/stock_entry/test_stock_entry.py @@ -490,7 +490,7 @@ class TestStockEntry(unittest.TestCase): def test_make_return_jv_for_purchase_receipt(self): se, pr_name = self.test_purchase_receipt_return() self._test_purchase_return_jv(se) - + se, pr_name = self._test_purchase_return_return_against_purchase_order() self._test_purchase_return_jv(se) diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py index 2dc8c6a2d7..c43a456687 100644 --- a/utilities/transaction_base.py +++ b/utilities/transaction_base.py @@ -250,4 +250,5 @@ class TransactionBase(DocListController): def validate_posting_time(self): if not self.doc.posting_time: - self.doc.posting_time = now_datetime().strftime('%H:%M:%S') \ No newline at end of file + self.doc.posting_time = now_datetime().strftime('%H:%M:%S') + \ No newline at end of file