fix: Fixes in flow

This commit is contained in:
Deepesh Garg
2020-12-27 10:53:52 +05:30
parent afef92a88b
commit 9d4bf040e9
11 changed files with 54 additions and 39 deletions

View File

@@ -1222,7 +1222,9 @@
"fieldname": "inter_company_invoice_reference",
"fieldtype": "Link",
"label": "Inter Company Invoice Reference",
"no_copy": 1,
"options": "Sales Invoice",
"print_hide": 1,
"read_only": 1
},
{
@@ -1364,7 +1366,7 @@
"idx": 204,
"is_submittable": 1,
"links": [],
"modified": "2020-12-25 23:44:48.551116",
"modified": "2020-12-26 20:49:03.305063",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice",

View File

@@ -591,16 +591,17 @@ class PurchaseInvoice(BuyingController):
)
else:
gl_entries.append(
self.get_gl_dict({
"account": item.expense_account,
"against": self.supplier,
"debit": warehouse_debit_amount,
"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"cost_center": item.cost_center,
"project": item.project or self.project
}, account_currency, item=item)
)
if not self.is_internal_transfer():
gl_entries.append(
self.get_gl_dict({
"account": item.expense_account,
"against": self.supplier,
"debit": warehouse_debit_amount,
"remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"cost_center": item.cost_center,
"project": item.project or self.project
}, account_currency, item=item)
)
# Amount added through landed-cost-voucher
if landed_cost_entries:
@@ -652,13 +653,14 @@ class PurchaseInvoice(BuyingController):
if expense_booked_in_pr:
expense_account = service_received_but_not_billed_account
gl_entries.append(self.get_gl_dict({
"account": expense_account,
"against": self.supplier,
"debit": amount,
"cost_center": item.cost_center,
"project": item.project or self.project
}, account_currency, item=item))
if not self.is_internal_transfer():
gl_entries.append(self.get_gl_dict({
"account": expense_account,
"against": self.supplier,
"debit": amount,
"cost_center": item.cost_center,
"project": item.project or self.project
}, account_currency, item=item))
# If asset is bought through this document and not linked to PR
if self.update_stock and item.landed_cost_voucher_amount:

View File

@@ -1600,6 +1600,8 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
currency = frappe.db.get_value('Supplier', details.get('party'), 'default_currency')
target_doc.company = details.get("company")
target_doc.supplier = details.get("party")
target_doc.is_internal_supplier = 1
target_doc.ignore_pricing_rule = 1
target_doc.buying_price_list = source_doc.selling_price_list
if currency:
@@ -1620,7 +1622,11 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
"expense_account",
"cost_center",
"warehouse"
]
],
"field_map": {
'rate': 'rate',
'name': 'sales_invoice_item'
}
}
if source_doc.get('update_stock'):
@@ -1629,7 +1635,6 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
source_document_warehouse_field: target_document_warehouse_field,
'batch_no': 'batch_no',
'serial_no': 'serial_no',
'name': 'sales_invoice_item'
}
})

View File

@@ -965,7 +965,7 @@ class AccountsController(TransactionBase):
"""
if self.doctype in ('Sales Invoice', 'Delivery Note'):
internal_party_field = 'is_internal_customer'
elif self.doctype in ('Purchase Invoice', 'Purchase Invoice Item'):
elif self.doctype in ('Purchase Invoice', 'Purchase Receipt'):
internal_party_field = 'is_internal_supplier'
if self.get(internal_party_field) and (self.represents_company == self.company):

View File

@@ -243,7 +243,7 @@ class BuyingController(StockController):
"allow_zero_valuation": d.get("allow_zero_valuation")
}, raise_error_if_no_rate=False)
rate = flt(outgoing_rate * d.conversion_factor)
rate = flt(outgoing_rate * d.conversion_factor, d.precision('rate'))
else:
rate = frappe.db.get_value(ref_doctype, d.get(frappe.scrub(ref_doctype)), 'rate')

View File

@@ -333,9 +333,11 @@ class SellingController(StockController):
# For internal transfers use incoming rate as the valuation rate
if self.get('is_internal_customer') and d.get('target_warehouse'):
d.rate = flt(d.incoming_rate * d.conversion_factor)
frappe.msgprint(_("Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer")
.format(d.idx), alert=1)
rate = flt(d.incoming_rate * d.conversion_factor, d.precision('rate'))
if d.rate != rate:
d.rate = rate
frappe.msgprint(_("Row {0}: Item rate has been updated as per valuation rate since its an internal stock transfer")
.format(d.idx), alert=1)
elif self.get("return_against"):
# Get incoming rate of return entry from reference document

View File

@@ -407,15 +407,15 @@ class StockController(AccountsController):
self.validate_inter_company_reference()
def validate_in_transit_warehouses(self):
if self.doctype in ('Sales Invoice', 'Delivery Note'):
if (self.doctype == 'Sales Invoice' and self.get('update_stock')) or self.doctype == 'Delivery Note':
for item in self.get('items'):
if not item.target_warehouse:
frappe.throw(_("Row {0}: Target Warehouse is mandatory for internal transfers"))
frappe.throw(_("Row {0}: Target Warehouse is mandatory for internal transfers").format(item.idx))
if self.doctype in ('Purchase Invoice', 'Purchase Receipt'):
if (self.doctype == 'Purchase Invoice' and self.get('update_stock')) or self.doctype == 'Purchase Receipt':
for item in self.get('items'):
if not item.from_warehouse:
frappe.throw(_("Row {0}: From Warehouse is mandatory for internal transfers"))
frappe.throw(_("Row {0}: From Warehouse is mandatory for internal transfers").format(item.idx))
def validate_multi_currency(self):
if self.currency != self.company_currency:
@@ -428,9 +428,9 @@ class StockController(AccountsController):
def validate_inter_company_reference(self):
if self.doctype in ('Purchase Invoice', 'Purchase Receipt'):
if not (self.get('inter_company_reference') or self.get('inter_company_invoice_reference')):
msg = _("Internal Sale or Delivery Reference needed for internal purchase")
msg += _("Please create purchase from the internal sale or delivery document itself")
frappe.throw(msg)
msg = _("Internal Sale or Delivery Reference missing. ")
msg += _("Please create purchase from internal sale or delivery document itself")
frappe.throw(msg, title=_("Internal Sales Reference Missing"))
def repost_future_sle_and_gle(self):
args = frappe._dict({

View File

@@ -655,7 +655,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
args: item_args
},
callback: function(r) {
frappe.model.set_value(item.doctype, item.name, 'rate', r.message);
frappe.model.set_value(item.doctype, item.name, 'rate', r.message * item.conversion_factor);
}
});
},

View File

@@ -723,7 +723,9 @@ def make_inter_company_transaction(doctype, source_name, target_doc=None):
"doctype": target_doctype + " Item",
"field_map": {
source_document_warehouse_field: target_document_warehouse_field,
'name': 'delivery_note_item'
'name': 'delivery_note_item',
'batch_no': 'batch_no',
'serial_no': 'serial_no'
},
"field_no_map": [
"warehouse"

View File

@@ -1088,7 +1088,9 @@
"fieldname": "inter_company_reference",
"fieldtype": "Link",
"label": "Inter Company Reference",
"no_copy": 1,
"options": "Delivery Note",
"print_hide": 1,
"read_only": 1
},
{
@@ -1138,7 +1140,7 @@
"idx": 261,
"is_submittable": 1,
"links": [],
"modified": "2020-12-26 17:10:00.798835",
"modified": "2020-12-26 20:49:39.106049",
"modified_by": "Administrator",
"module": "Stock",
"name": "Purchase Receipt",

View File

@@ -381,13 +381,13 @@ class update_entries_after(object):
update_taxes_and_totals(sle.voucher_type, sle.voucher_no, outgoing_rate)
purchase_doctype = 'Purchase Invoice' if sle.voucher_type == 'Sales Invoice' else 'Purchase Receipt'
ref_field = frappe.scrub(sle.voucher_type + ' Item')
ref_doc_field = frappe.scrub(sle.voucher_type + ' Item')
purchase_document_list = frappe.db.get_all(purchase_doctype, {'inter_company_invoice_reference':
sle.voucher_no}, ['name'])
reference_field = 'inter_company_invoice_reference' if purchase_doctype == 'Purchase Invoice' else 'inter_company_reference'
purchase_document_list = frappe.db.get_all(purchase_doctype, {reference_field: sle.voucher_no}, ['name'])
for d in purchase_document_list:
frappe.db.set_value(purchase_doctype + ' Item', {ref_field: sle.voucher_detail_no}, 'rate', outgoing_rate)
frappe.db.set_value(purchase_doctype + ' Item', {ref_doc_field: sle.voucher_detail_no}, 'rate', outgoing_rate)
update_taxes_and_totals(purchase_doctype, d.name, outgoing_rate)
# Update item's incoming rate on transaction