purchase invoice with write off feature
This commit is contained in:
parent
15230eb955
commit
51834a45a7
@ -0,0 +1,131 @@
|
||||
# GL Mapper, Purchase Invoice with write off
|
||||
[
|
||||
|
||||
# These values are common in all dictionaries
|
||||
{
|
||||
'creation': '2012-04-23 11:43:56',
|
||||
'docstatus': 0,
|
||||
'modified': '2012-04-23 11:43:56',
|
||||
'modified_by': u'Administrator',
|
||||
'owner': u'Administrator'
|
||||
},
|
||||
|
||||
# These values are common for all GL Mapper
|
||||
{
|
||||
'doc_type': u'Purchase Invoice with write off',
|
||||
'doctype': 'GL Mapper',
|
||||
'name': '__common__'
|
||||
},
|
||||
|
||||
# These values are common for all GL Mapper Detail
|
||||
{
|
||||
'doctype': u'GL Mapper Detail',
|
||||
'name': '__common__',
|
||||
'parent': u'Purchase Invoice with write off',
|
||||
'parentfield': u'fields',
|
||||
'parenttype': u'GL Mapper'
|
||||
},
|
||||
|
||||
# GL Mapper, Purchase Invoice with write off
|
||||
{
|
||||
'doctype': 'GL Mapper',
|
||||
'name': u'Purchase Invoice with write off'
|
||||
},
|
||||
|
||||
# GL Mapper Detail
|
||||
{
|
||||
'account': u'expense_head',
|
||||
'against': u'parent:credit_to',
|
||||
'aging_date': u'parent:aging_date',
|
||||
'company': u'parent:company',
|
||||
'cost_center': u'cost_center',
|
||||
'credit': u'value:0',
|
||||
'debit': u'amount',
|
||||
'doctype': u'GL Mapper Detail',
|
||||
'fiscal_year': u'parent:fiscal_year',
|
||||
'is_opening': u'parent:is_opening',
|
||||
'posting_date': u'parent:posting_date',
|
||||
'remarks': u'parent:remarks',
|
||||
'table_field': u'entries',
|
||||
'transaction_date': u'parent:voucher_date',
|
||||
'voucher_no': u'parent:name',
|
||||
'voucher_type': u'parent:doctype'
|
||||
},
|
||||
|
||||
# GL Mapper Detail
|
||||
{
|
||||
'account': u'account_head',
|
||||
'against': u'parent:credit_to',
|
||||
'aging_date': u'parent:aging_date',
|
||||
'company': u'parent:company',
|
||||
'cost_center': u'cost_center',
|
||||
'credit': u"value:d.fields.get('category') != 'For Valuation' and d.fields.get('add_deduct_tax') == 'Deduct' and d.fields.get('tax_amount') or 0",
|
||||
'debit': u"value:d.fields.get('category') != 'For Valuation' and d.fields.get('add_deduct_tax') == 'Add' and d.fields.get('tax_amount') or 0",
|
||||
'doctype': u'GL Mapper Detail',
|
||||
'fiscal_year': u'parent:fiscal_year',
|
||||
'is_opening': u'parent:is_opening',
|
||||
'posting_date': u'parent:posting_date',
|
||||
'remarks': u'parent:remarks',
|
||||
'table_field': u'purchase_tax_details',
|
||||
'transaction_date': u'parent:voucher_date',
|
||||
'voucher_no': u'parent:name',
|
||||
'voucher_type': u'parent:doctype'
|
||||
},
|
||||
|
||||
# GL Mapper Detail
|
||||
{
|
||||
'account': u'tax_code',
|
||||
'against': u'credit_to',
|
||||
'aging_date': u'aging_date',
|
||||
'company': u'company',
|
||||
'credit': u'ded_amount',
|
||||
'debit': u'value:0',
|
||||
'doctype': u'GL Mapper Detail',
|
||||
'fiscal_year': u'fiscal_year',
|
||||
'is_opening': u'is_opening',
|
||||
'posting_date': u'posting_date',
|
||||
'remarks': u'remarks',
|
||||
'transaction_date': u'voucher_date',
|
||||
'voucher_no': u'name',
|
||||
'voucher_type': u'doctype'
|
||||
},
|
||||
|
||||
# GL Mapper Detail
|
||||
{
|
||||
'account': u'credit_to',
|
||||
'against': u'against_expense_account',
|
||||
'against_voucher': u'name',
|
||||
'against_voucher_type': u"value:'Purchase Invoice'",
|
||||
'aging_date': u'aging_date',
|
||||
'company': u'company',
|
||||
'credit': u'total_amount_to_pay',
|
||||
'debit': u'value:0',
|
||||
'doctype': u'GL Mapper Detail',
|
||||
'fiscal_year': u'fiscal_year',
|
||||
'is_opening': u'is_opening',
|
||||
'posting_date': u'posting_date',
|
||||
'remarks': u'remarks',
|
||||
'transaction_date': u'voucher_date',
|
||||
'voucher_no': u'name',
|
||||
'voucher_type': u'doctype'
|
||||
},
|
||||
|
||||
# GL Mapper Detail
|
||||
{
|
||||
'account': u'write_off_account',
|
||||
'against': u'credit_to',
|
||||
'aging_date': u'aging_date',
|
||||
'company': u'company',
|
||||
'cost_center': u'write_off_cost_center',
|
||||
'credit': u'write_off_amount',
|
||||
'debit': u'value:0',
|
||||
'doctype': u'GL Mapper Detail',
|
||||
'fiscal_year': u'fiscal_year',
|
||||
'is_opening': u'is_opening',
|
||||
'posting_date': u'posting_date',
|
||||
'remarks': u'remarks',
|
||||
'transaction_date': u'voucher_date',
|
||||
'voucher_no': u'name',
|
||||
'voucher_type': u'doctype'
|
||||
}
|
||||
]
|
@ -158,6 +158,14 @@ cur_frm.cscript.is_opening = function(doc, dt, dn) {
|
||||
if (doc.is_opening == 'Yes') unhide_field('aging_date');
|
||||
}
|
||||
|
||||
cur_frm.cscript.write_off_amount = function(doc) {
|
||||
doc.total_amount_to_pay = flt(doc.grand_total) - flt(doc.ded_amount) - flt(doc.write_off_amount);
|
||||
doc.outstanding_amount = flt(doc.total_amount_to_pay) - flt(doc.total_advance);
|
||||
refresh_many(['outstanding_amount', 'total_amount_to_pay']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Recalculate Button
|
||||
// -------------------
|
||||
cur_frm.cscript.recalculate = function(doc, cdt, cdn) {
|
||||
@ -347,7 +355,7 @@ calc_total_advance = function(doc,cdt,cdn) {
|
||||
tot_tds += flt(el[i].tds_allocated)
|
||||
}
|
||||
}
|
||||
doc.total_amount_to_pay = flt(doc.grand_total) - flt(doc.ded_amount);
|
||||
doc.total_amount_to_pay = flt(doc.grand_total) - flt(doc.ded_amount) - flt(doc.write_off_amount);
|
||||
doc.tds_amount_on_advance = flt(tot_tds);
|
||||
doc.total_advance = flt(total_advance);
|
||||
doc.outstanding_amount = flt(doc.total_amount_to_pay) - flt(total_advance);
|
||||
|
@ -52,11 +52,7 @@ class DocType(TransactionBase):
|
||||
# ----------
|
||||
def get_credit_to(self):
|
||||
acc_head = sql("select name, credit_days from `tabAccount` where (name = %s or (master_name = %s and master_type = 'supplier')) and docstatus != 2", (cstr(self.doc.supplier) + " - " + self.get_company_abbr(),self.doc.supplier))
|
||||
#supp_detail = sql("select supplier_name,address from `tabSupplier` where name = %s", self.doc.supplier, as_dict =1)
|
||||
#ret = {
|
||||
# 'supplier_name' : supp_detail and supp_detail[0]['supplier_name'] or '',
|
||||
# 'supplier_address': supp_detail and supp_detail[0]['address'] or ''
|
||||
#}
|
||||
|
||||
ret = {}
|
||||
if acc_head and acc_head[0][0]:
|
||||
ret['credit_to'] = acc_head[0][0]
|
||||
@ -364,7 +360,8 @@ class DocType(TransactionBase):
|
||||
else:
|
||||
get_obj('TDS Control').get_tds_amount(self)
|
||||
self.doc.total_tds_on_voucher = self.doc.ded_amount
|
||||
self.doc.total_amount_to_pay=flt(self.doc.grand_total)-flt(self.doc.ded_amount)-flt(self.doc.other_tax_deducted)
|
||||
self.doc.total_amount_to_pay=flt(self.doc.grand_total) - flt(self.doc.ded_amount) - self.doc.write_off_amount
|
||||
self.doc.outstanding_amount = self.doc.total_amount_to_pay - flt(self.doc.total_advance)
|
||||
elif self.doc.tds_applicable == 'No':
|
||||
self.doc.tds_category = ''
|
||||
self.doc.tax_code = ''
|
||||
@ -416,6 +413,10 @@ class DocType(TransactionBase):
|
||||
msgprint("Purchase Receipt No. required against item %s"%d.item_code)
|
||||
raise Exception
|
||||
|
||||
def validate_write_off_account(self):
|
||||
if self.doc.write_off_amount and not self.doc.write_off_account:
|
||||
msgprint("Please enter Write Off Account", raise_exception=1)
|
||||
|
||||
# VALIDATE
|
||||
# ====================================================================================
|
||||
def validate(self):
|
||||
@ -456,6 +457,8 @@ class DocType(TransactionBase):
|
||||
#FY validation
|
||||
get_obj('Sales Common').validate_fiscal_year(self.doc.fiscal_year,self.doc.posting_date,'Posting Date')
|
||||
|
||||
self.validate_write_off_account()
|
||||
|
||||
#get Purchase Common Obj
|
||||
pc_obj = get_obj(dt='Purchase Common')
|
||||
|
||||
@ -507,6 +510,8 @@ class DocType(TransactionBase):
|
||||
if lst:
|
||||
get_obj('GL Control').reconcile_against_document(lst)
|
||||
|
||||
|
||||
|
||||
# On Submit
|
||||
#--------------------------------------------------------------------
|
||||
def on_submit(self):
|
||||
@ -517,13 +522,19 @@ class DocType(TransactionBase):
|
||||
|
||||
|
||||
# this sequence because outstanding may get -negative
|
||||
get_obj(dt='GL Control').make_gl_entries(self.doc, self.doclist)
|
||||
self.make_gl_entries()
|
||||
|
||||
self.update_against_document_in_jv()
|
||||
|
||||
get_obj(dt = 'Purchase Common').update_prevdoc_detail(self, is_submit = 1)
|
||||
|
||||
|
||||
def make_gl_entries(self, is_cancel = 0):
|
||||
get_obj(dt='GL Control').make_gl_entries(self.doc, self.doclist, cancel = is_cancel, \
|
||||
use_mapper = (self.doc.write_off_account and self.doc.write_off_amount and 'Purchase Invoice with write off' or ''))
|
||||
|
||||
|
||||
|
||||
|
||||
# ********************************* CANCEL *********************************
|
||||
# Check Next Document's docstatus
|
||||
@ -542,7 +553,7 @@ class DocType(TransactionBase):
|
||||
# Check whether tds payment voucher has been created against this voucher
|
||||
self.check_tds_payment_voucher()
|
||||
|
||||
get_obj(dt='GL Control').make_gl_entries(self.doc, self.doclist, cancel=1)
|
||||
self.make_gl_entries(is_cancel=1)
|
||||
get_obj(dt = 'Purchase Common').update_prevdoc_detail(self, is_submit = 0)
|
||||
|
||||
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
# These values are common in all dictionaries
|
||||
{
|
||||
'creation': '2012-04-11 13:17:19',
|
||||
'creation': '2012-04-13 11:56:17',
|
||||
'docstatus': 0,
|
||||
'modified': '2012-04-12 18:09:05',
|
||||
'modified': '2012-04-23 12:08:52',
|
||||
'modified_by': u'Administrator',
|
||||
'owner': u'Administrator'
|
||||
},
|
||||
@ -26,7 +26,7 @@
|
||||
'server_code_error': u' ',
|
||||
'show_in_menu': 0,
|
||||
'subject': u'From %(supplier_name)s worth %(grand_total)s due on %(due_date)s | %(outstanding_amount)s outstanding',
|
||||
'version': 522
|
||||
'version': 1
|
||||
},
|
||||
|
||||
# These values are common for all DocField
|
||||
@ -520,6 +520,18 @@
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'net_total_import',
|
||||
'fieldtype': u'Currency',
|
||||
'label': u'Net Total (Import)',
|
||||
'oldfieldname': u'net_total_import',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1,
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'colour': u'White:FFF',
|
||||
@ -935,6 +947,32 @@
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'grand_total',
|
||||
'fieldtype': u'Currency',
|
||||
'label': u'Grand Total',
|
||||
'oldfieldname': u'grand_total',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1,
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'colour': u'White:FFF',
|
||||
'description': u'In Words will be visible once you save the Purchase Invoice.',
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'in_words',
|
||||
'fieldtype': u'Data',
|
||||
'label': u'In Words',
|
||||
'oldfieldname': u'in_words',
|
||||
'oldfieldtype': u'Data',
|
||||
'permlevel': 1,
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'doctype': u'DocField',
|
||||
@ -965,11 +1003,12 @@
|
||||
# DocField
|
||||
{
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'total_advance',
|
||||
'fieldname': u'total_amount_to_pay',
|
||||
'fieldtype': u'Currency',
|
||||
'label': u'Total Advance (Incl. TDS)',
|
||||
'hidden': 0,
|
||||
'label': u'Total Amount To Pay',
|
||||
'no_copy': 1,
|
||||
'oldfieldname': u'total_advance',
|
||||
'oldfieldname': u'total_amount_to_pay',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1,
|
||||
'print_hide': 1
|
||||
@ -978,12 +1017,11 @@
|
||||
# DocField
|
||||
{
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'total_amount_to_pay',
|
||||
'fieldname': u'total_advance',
|
||||
'fieldtype': u'Currency',
|
||||
'hidden': 0,
|
||||
'label': u'Total Amount To Pay',
|
||||
'label': u'Total Advance (Incl. TDS)',
|
||||
'no_copy': 1,
|
||||
'oldfieldname': u'total_amount_to_pay',
|
||||
'oldfieldname': u'total_advance',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1,
|
||||
'print_hide': 1
|
||||
@ -1018,38 +1056,39 @@
|
||||
# DocField
|
||||
{
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'grand_total',
|
||||
'fieldname': u'write_off_amount',
|
||||
'fieldtype': u'Currency',
|
||||
'label': u'Grand Total',
|
||||
'oldfieldname': u'grand_total',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1,
|
||||
'label': u'Write Off Amount',
|
||||
'no_copy': 1,
|
||||
'permlevel': 0,
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'colour': u'White:FFF',
|
||||
'description': u'In Words will be visible once you save the Purchase Invoice.',
|
||||
'depends_on': u'eval:flt(doc.write_off_amount)!=0',
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'in_words',
|
||||
'fieldtype': u'Data',
|
||||
'label': u'In Words',
|
||||
'oldfieldname': u'in_words',
|
||||
'oldfieldtype': u'Data',
|
||||
'permlevel': 1,
|
||||
'fieldname': u'write_off_account',
|
||||
'fieldtype': u'Link',
|
||||
'label': u'Write Off Account',
|
||||
'no_copy': 1,
|
||||
'options': u'Account',
|
||||
'permlevel': 0,
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
# DocField
|
||||
{
|
||||
'colour': u'White:FFF',
|
||||
'depends_on': u'eval:flt(doc.write_off_amount)!=0',
|
||||
'doctype': u'DocField',
|
||||
'fieldname': u'net_total_import',
|
||||
'fieldtype': u'Currency',
|
||||
'label': u'Net Total (Import)',
|
||||
'oldfieldname': u'net_total_import',
|
||||
'oldfieldtype': u'Currency',
|
||||
'permlevel': 1,
|
||||
'fieldname': u'write_off_cost_center',
|
||||
'fieldtype': u'Link',
|
||||
'label': u'Write Off Cost Center',
|
||||
'no_copy': 1,
|
||||
'options': u'Account',
|
||||
'permlevel': 0,
|
||||
'print_hide': 1
|
||||
},
|
||||
|
||||
|
@ -82,6 +82,9 @@ def execute():
|
||||
# Reload GL Mapper
|
||||
for d in webnotes.conn.sql("select name from `tabGL Mapper`"):
|
||||
reload_doc('accounts', 'GL Mapper', d[0])
|
||||
reload_doc('accounts', 'GL Mapper', 'Purchase Invoice with write off')
|
||||
|
||||
|
||||
|
||||
#gl entry, stock ledger entry,
|
||||
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
# These values are common in all dictionaries
|
||||
{
|
||||
'creation': '2012-03-27 14:36:46',
|
||||
'creation': '2012-04-13 11:56:40',
|
||||
'docstatus': 0,
|
||||
'modified': '2012-03-27 14:36:46',
|
||||
'modified': '2012-04-23 12:27:38',
|
||||
'modified_by': u'Administrator',
|
||||
'owner': u'Administrator'
|
||||
},
|
||||
@ -21,7 +21,7 @@
|
||||
'section_style': u'Simple',
|
||||
'server_code_error': u' ',
|
||||
'show_in_menu': 0,
|
||||
'version': 3
|
||||
'version': 1
|
||||
},
|
||||
|
||||
# These values are common for all DocField
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
# These values are common for all DocPerm
|
||||
{
|
||||
'create': 0,
|
||||
'doctype': u'DocPerm',
|
||||
'name': '__common__',
|
||||
'parent': u'GL Mapper',
|
||||
@ -55,7 +56,6 @@
|
||||
{
|
||||
'amend': 0,
|
||||
'cancel': 0,
|
||||
'create': 0,
|
||||
'doctype': u'DocPerm',
|
||||
'role': u'Accounts User',
|
||||
'submit': 0,
|
||||
|
Loading…
Reference in New Issue
Block a user