Merge branch 'develop' into sla_fix
This commit is contained in:
commit
056f20ccaa
@ -458,8 +458,9 @@ class JournalEntry(AccountsController):
|
||||
pay_to_recd_from = frappe.db.get_value(d.party_type, d.party,
|
||||
"customer_name" if d.party_type=="Customer" else "supplier_name")
|
||||
|
||||
party_amount += (d.debit_in_account_currency or d.credit_in_account_currency)
|
||||
party_account_currency = d.account_currency
|
||||
if pay_to_recd_from and pay_to_recd_from == d.party:
|
||||
party_amount += (d.debit_in_account_currency or d.credit_in_account_currency)
|
||||
party_account_currency = d.account_currency
|
||||
|
||||
elif frappe.db.get_value("Account", d.account, "account_type") in ["Bank", "Cash"]:
|
||||
bank_amount += (d.debit_in_account_currency or d.credit_in_account_currency)
|
||||
|
@ -46,6 +46,8 @@
|
||||
var range2 = report.columns[12].label;
|
||||
var range3 = report.columns[13].label;
|
||||
var range4 = report.columns[14].label;
|
||||
var range5 = report.columns[15].label;
|
||||
var range6 = report.columns[16].label;
|
||||
%}
|
||||
{% if(balance_row) { %}
|
||||
<table class="table table-bordered table-condensed">
|
||||
@ -56,8 +58,10 @@
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
<col style="width: 18mm;">
|
||||
</colgroup>
|
||||
|
||||
<thead>
|
||||
@ -67,16 +71,20 @@
|
||||
<th>{%= __(range2) %}</th>
|
||||
<th>{%= __(range3) %}</th>
|
||||
<th>{%= __(range4) %}</th>
|
||||
<th>{%= __(range5) %}</th>
|
||||
<th>{%= __(range6) %}</th>
|
||||
<th>{%= __("Total") %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{%= __("Total Outstanding") %}</td>
|
||||
<td class="text-right">{%= format_currency(balance_row[range1]) %}</td>
|
||||
<td class="text-right">{%= format_number(balance_row[range1], null, 2) %}</td>
|
||||
<td class="text-right">{%= format_currency(balance_row[range2]) %}</td>
|
||||
<td class="text-right">{%= format_currency(balance_row[range3]) %}</td>
|
||||
<td class="text-right">{%= format_currency(balance_row[range4]) %}</td>
|
||||
<td class="text-right">{%= format_currency(balance_row[range5]) %}</td>
|
||||
<td class="text-right">{%= format_currency(balance_row[range6]) %}</td>
|
||||
<td class="text-right">
|
||||
{%= format_currency(flt(balance_row[("outstanding_amount")]), data[data.length-1]["currency"]) %}
|
||||
</td>
|
||||
@ -86,6 +94,8 @@
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td class="text-right">
|
||||
{%= format_currency(flt(balance_row[("pdc/lc_amount")]), data[data.length-1]["currency"]) %}
|
||||
</td>
|
||||
@ -95,6 +105,8 @@
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th class="text-right">
|
||||
{%= format_currency(flt(balance_row[("outstanding_amount")]-balance_row[("pdc/lc_amount")]), data[data.length-1]["currency"]) %}</th>
|
||||
</tr>
|
||||
|
@ -40,7 +40,7 @@ def execute():
|
||||
# This is probably never used anywhere else as of now, but should be
|
||||
values = []
|
||||
for d in batch_transactions:
|
||||
values.append("('{}', {})".format(d.parent, d.qty))
|
||||
values.append("('{}', {})".format(frappe.db.escape(d.parent), d.qty))
|
||||
conditions = ",".join(values)
|
||||
frappe.db.sql("""
|
||||
INSERT INTO `tab{}` (name, total_qty) VALUES {}
|
||||
|
@ -60,8 +60,11 @@ class Gstr1Report(object):
|
||||
else:
|
||||
for inv, items_based_on_rate in self.items_based_on_tax_rate.items():
|
||||
invoice_details = self.invoices.get(inv)
|
||||
for rate, items in items_based_on_rate.items():
|
||||
row, taxable_value = self.get_row_data_for_invoice(inv, invoice_details, rate, items)
|
||||
for key, items in items_based_on_rate.items():
|
||||
rate = key[0]
|
||||
account = key[1]
|
||||
|
||||
row, taxable_value = self.get_row_data_for_invoice(inv, invoice_details, rate, account, items)
|
||||
|
||||
if self.filters.get("type_of_business") == "CDNR":
|
||||
row.append("Y" if invoice_details.posting_date <= date(2017, 7, 1) else "N")
|
||||
@ -100,7 +103,7 @@ class Gstr1Report(object):
|
||||
for key, value in iteritems(b2cs_output):
|
||||
self.data.append(value)
|
||||
|
||||
def get_row_data_for_invoice(self, invoice, invoice_details, tax_rate, items):
|
||||
def get_row_data_for_invoice(self, invoice, invoice_details, tax_rate, account, items):
|
||||
row = []
|
||||
for fieldname in self.invoice_fields:
|
||||
if self.filters.get("type_of_business") == "CDNR" and fieldname == "invoice_value":
|
||||
@ -117,8 +120,10 @@ class Gstr1Report(object):
|
||||
taxable_value = 0
|
||||
for item_code, net_amount in self.invoice_items.get(invoice).items():
|
||||
if item_code in items:
|
||||
if self.item_tax_rate.get(invoice) and tax_rate == self.item_tax_rate.get(invoice, {}).get(item_code):
|
||||
taxable_value += abs(net_amount)
|
||||
if self.item_tax_rate.get(invoice) and self.item_tax_rate.get(invoice, {}).get(item_code):
|
||||
item_tax_rate = self.item_tax_rate.get(invoice, {}).get(item_code)
|
||||
if account in item_tax_rate and tax_rate == item_tax_rate.get(account):
|
||||
taxable_value += abs(net_amount)
|
||||
elif not self.item_tax_rate.get(invoice):
|
||||
taxable_value += abs(net_amount)
|
||||
|
||||
@ -207,8 +212,7 @@ class Gstr1Report(object):
|
||||
item_tax_rate = json.loads(d.item_tax_rate)
|
||||
|
||||
if item_tax_rate:
|
||||
for account, rate in item_tax_rate.items():
|
||||
self.item_tax_rate.setdefault(d.parent, {}).setdefault(d.item_code, rate)
|
||||
self.item_tax_rate.setdefault(d.parent, {}).setdefault(d.item_code, item_tax_rate)
|
||||
|
||||
def get_items_based_on_tax_rate(self):
|
||||
self.tax_details = frappe.db.sql("""
|
||||
@ -248,7 +252,7 @@ class Gstr1Report(object):
|
||||
tax_rate *= 2
|
||||
|
||||
rate_based_dict = self.items_based_on_tax_rate\
|
||||
.setdefault(parent, {}).setdefault(tax_rate, [])
|
||||
.setdefault(parent, {}).setdefault((tax_rate, account), [])
|
||||
if item_code not in rate_based_dict:
|
||||
rate_based_dict.append(item_code)
|
||||
except ValueError:
|
||||
|
@ -676,35 +676,36 @@ class StockEntry(StockController):
|
||||
|
||||
ret = frappe._dict({
|
||||
'uom' : item.stock_uom,
|
||||
'stock_uom' : item.stock_uom,
|
||||
'stock_uom' : item.stock_uom,
|
||||
'description' : item.description,
|
||||
'image' : item.image,
|
||||
'image' : item.image,
|
||||
'item_name' : item.item_name,
|
||||
'expense_account' : args.get("expense_account"),
|
||||
'cost_center' : get_default_cost_center(args, item, item_group_defaults, brand_defaults),
|
||||
'qty' : args.get("qty"),
|
||||
'cost_center' : get_default_cost_center(args, item, item_group_defaults, brand_defaults, self.company),
|
||||
'qty' : args.get("qty"),
|
||||
'transfer_qty' : args.get('qty'),
|
||||
'conversion_factor' : 1,
|
||||
'batch_no' : '',
|
||||
'batch_no' : '',
|
||||
'actual_qty' : 0,
|
||||
'basic_rate' : 0,
|
||||
'serial_no' : '',
|
||||
'serial_no' : '',
|
||||
'has_serial_no' : item.has_serial_no,
|
||||
'has_batch_no' : item.has_batch_no,
|
||||
'sample_quantity' : item.sample_quantity
|
||||
})
|
||||
for d in [["Account", "expense_account", "default_expense_account"],
|
||||
["Cost Center", "cost_center", "cost_center"]]:
|
||||
company = frappe.db.get_value(d[0], ret.get(d[1]), "company")
|
||||
if not ret[d[1]] or (company and self.company != company):
|
||||
ret[d[1]] = frappe.get_cached_value('Company', self.company, d[2]) if d[2] else None
|
||||
|
||||
# update uom
|
||||
if args.get("uom") and for_update:
|
||||
ret.update(get_uom_details(args.get('item_code'), args.get('uom'), args.get('qty')))
|
||||
|
||||
if not ret["expense_account"]:
|
||||
ret["expense_account"] = frappe.get_cached_value('Company', self.company, "stock_adjustment_account")
|
||||
if self.purpose == 'Material Issue':
|
||||
ret["expense_account"] = (item.get("expense_account") or
|
||||
item_group_defaults.get("expense_account") or
|
||||
frappe.get_cached_value('Company', self.company, "default_expense_account"))
|
||||
|
||||
for company_field, field in {'stock_adjustment_account': 'expense_account',
|
||||
'cost_center': 'cost_center'}.items():
|
||||
if not ret.get(field):
|
||||
ret[field] = frappe.get_cached_value('Company', self.company, company_field)
|
||||
|
||||
args['posting_date'] = self.posting_date
|
||||
args['posting_time'] = self.posting_time
|
||||
@ -1084,8 +1085,7 @@ class StockEntry(StockController):
|
||||
return item_dict
|
||||
|
||||
def add_to_stock_entry_detail(self, item_dict, bom_no=None):
|
||||
expense_account, cost_center = frappe.db.get_values("Company", self.company, \
|
||||
["default_expense_account", "cost_center"])[0]
|
||||
cost_center = frappe.db.get_value("Company", self.company, 'cost_center')
|
||||
|
||||
for d in item_dict:
|
||||
stock_uom = item_dict[d].get("stock_uom") or frappe.db.get_value("Item", d, "stock_uom")
|
||||
@ -1099,7 +1099,7 @@ class StockEntry(StockController):
|
||||
se_child.uom = item_dict[d]["uom"] if item_dict[d].get("uom") else stock_uom
|
||||
se_child.stock_uom = stock_uom
|
||||
se_child.qty = flt(item_dict[d]["qty"], se_child.precision("qty"))
|
||||
se_child.expense_account = item_dict[d].get("expense_account") or expense_account
|
||||
se_child.expense_account = item_dict[d].get("expense_account")
|
||||
se_child.cost_center = item_dict[d].get("cost_center") or cost_center
|
||||
se_child.allow_alternative_item = item_dict[d].get("allow_alternative_item", 0)
|
||||
se_child.subcontracted_item = item_dict[d].get("main_item_code")
|
||||
|
@ -423,7 +423,7 @@ def get_default_deferred_account(args, item, fieldname=None):
|
||||
else:
|
||||
return None
|
||||
|
||||
def get_default_cost_center(args, item, item_group, brand):
|
||||
def get_default_cost_center(args, item, item_group, brand, company=None):
|
||||
cost_center = None
|
||||
if args.get('project'):
|
||||
cost_center = frappe.db.get_value("Project", args.get("project"), "cost_center", cache=True)
|
||||
@ -434,7 +434,13 @@ def get_default_cost_center(args, item, item_group, brand):
|
||||
else:
|
||||
cost_center = item.get('buying_cost_center') or item_group.get('buying_cost_center') or brand.get('buying_cost_center')
|
||||
|
||||
return cost_center or args.get("cost_center")
|
||||
cost_center = cost_center or args.get("cost_center")
|
||||
|
||||
if (company and cost_center
|
||||
and frappe.get_cached_value("Cost Center", cost_center, "company") != company):
|
||||
return None
|
||||
|
||||
return cost_center
|
||||
|
||||
def get_default_supplier(args, item, item_group, brand):
|
||||
return (item.get("default_supplier")
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
{% macro null_card() %}
|
||||
<div class="col-sm-4 mb-4 text-left">
|
||||
<div class="h-100" style="border: 1px solid rgba(209,216,221,0.5);border-radius: 0.25rem;background-color: rgb(250, 251, 252);">
|
||||
<div class="h-100 d-none d-sm-block" style="border: 1px solid rgba(209,216,221,0.5);border-radius: 0.25rem;background-color: rgb(250, 251, 252);">
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
Loading…
Reference in New Issue
Block a user