resolved merge conflicts
This commit is contained in:
commit
ab8c7e616e
@ -5,7 +5,7 @@ import frappe
|
|||||||
from erpnext.hooks import regional_overrides
|
from erpnext.hooks import regional_overrides
|
||||||
from frappe.utils import getdate
|
from frappe.utils import getdate
|
||||||
|
|
||||||
__version__ = '10.0.20'
|
__version__ = '10.0.21'
|
||||||
|
|
||||||
def get_default_company(user=None):
|
def get_default_company(user=None):
|
||||||
'''Get default company for user'''
|
'''Get default company for user'''
|
||||||
|
@ -297,36 +297,6 @@
|
|||||||
"set_only_once": 0,
|
"set_only_once": 0,
|
||||||
"unique": 0
|
"unique": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fieldname": "allow_print_before_pay",
|
|
||||||
"fieldtype": "Check",
|
|
||||||
"hidden": 1,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Allow Print Before Pay ",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"permlevel": 0,
|
|
||||||
"precision": "",
|
|
||||||
"print_hide": 1,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"read_only": 1,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
"allow_bulk_edit": 0,
|
||||||
"allow_on_submit": 0,
|
"allow_on_submit": 0,
|
||||||
@ -432,7 +402,7 @@
|
|||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
"in_global_search": 0,
|
"in_global_search": 0,
|
||||||
"in_list_view": 1,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Date",
|
"label": "Date",
|
||||||
"length": 0,
|
"length": 0,
|
||||||
@ -669,6 +639,126 @@
|
|||||||
"set_only_once": 0,
|
"set_only_once": 0,
|
||||||
"unique": 0
|
"unique": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 1,
|
||||||
|
"collapsible_depends_on": "po_no",
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "customer_po_details",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"label": "Customer PO Details",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": "",
|
||||||
|
"print_hide": 0,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 1,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "po_no",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"label": "Customer's Purchase Order",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": "",
|
||||||
|
"print_hide": 1,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"read_only": 1,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "column_break_23",
|
||||||
|
"fieldtype": "Column Break",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": "",
|
||||||
|
"print_hide": 0,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 1,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "po_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"label": "Customer's Purchase Order Date",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": "",
|
||||||
|
"print_hide": 0,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"read_only": 1,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
"allow_bulk_edit": 0,
|
||||||
"allow_on_submit": 0,
|
"allow_on_submit": 0,
|
||||||
@ -4593,7 +4683,7 @@
|
|||||||
"istable": 0,
|
"istable": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"menu_index": 0,
|
"menu_index": 0,
|
||||||
"modified": "2018-01-09 09:48:00.152026",
|
"modified": "2018-01-12 15:19:54.711885",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Sales Invoice",
|
"name": "Sales Invoice",
|
||||||
|
@ -1177,8 +1177,17 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
|
|||||||
$(this.wrapper).on("change", ".pos-item-disc", function () {
|
$(this.wrapper).on("change", ".pos-item-disc", function () {
|
||||||
var item_code = $(this).parents(".pos-selected-item-action").attr("data-item-code");
|
var item_code = $(this).parents(".pos-selected-item-action").attr("data-item-code");
|
||||||
var discount = $(this).val();
|
var discount = $(this).val();
|
||||||
me.update_discount(item_code, discount)
|
if(discount > 100){
|
||||||
me.update_value()
|
discount = $(this).val('');
|
||||||
|
frappe.show_alert({
|
||||||
|
indicator: 'red',
|
||||||
|
message: __('Discount amount cannot be greater than 100%')
|
||||||
|
});
|
||||||
|
me.update_discount(item_code, discount);
|
||||||
|
}else{
|
||||||
|
me.update_discount(item_code, discount);
|
||||||
|
me.update_value();
|
||||||
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
<style>
|
||||||
|
@media screen {
|
||||||
|
.print-format {
|
||||||
|
padding: 8mm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<h2 class="text-center">{%= __(report.report_name) %}</h2>
|
<h2 class="text-center">{%= __(report.report_name) %}</h2>
|
||||||
<h4 class="text-center">{%= filters.customer || filters.supplier %} </h4>
|
<h4 class="text-center">{%= filters.customer || filters.supplier %} </h4>
|
||||||
<h5 class="text-center">
|
<h5 class="text-center">
|
||||||
@ -6,17 +14,90 @@
|
|||||||
{%= dateutil.str_to_user(filters.report_date) %}
|
{%= dateutil.str_to_user(filters.report_date) %}
|
||||||
</h5>
|
</h5>
|
||||||
<hr>
|
<hr>
|
||||||
|
{% if(filters.show_pdc_in_print) { %}
|
||||||
|
{% var balance_row = data.slice(-1).pop();
|
||||||
|
var range1 = report.columns[11].label;
|
||||||
|
var range2 = report.columns[12].label;
|
||||||
|
var range3 = report.columns[13].label;
|
||||||
|
var range4 = report.columns[14].label;
|
||||||
|
%}
|
||||||
|
{% if(balance_row) { %}
|
||||||
|
<table class="table table-bordered table-condensed table-sm small">
|
||||||
|
<caption class="text-right">(Amount in {%= data[0][__("currency")] || "" %})</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 30mm;">
|
||||||
|
<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>
|
||||||
|
<tr>
|
||||||
|
<th>{%= __(" ") %}</th>
|
||||||
|
<th>{%= __(range1) %}</th>
|
||||||
|
<th>{%= __(range2) %}</th>
|
||||||
|
<th>{%= __(range3) %}</th>
|
||||||
|
<th>{%= __(range4) %}</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_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(flt(balance_row[__("Outstanding Amount")]), data[data.length-1]["currency"]) %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<td>{%= __("PDC/LC") %}</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>
|
||||||
|
<tr class="cvs-footer">
|
||||||
|
<th class="text-left">{%= __("Cheques Required") %}</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>
|
||||||
|
</tbody>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
{% } %}
|
||||||
|
{% } %}
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
|
{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
|
||||||
<th style="width: 14%">{%= __("Date") %}</th>
|
<th style="width: 10%">{%= __("Date") %}</th>
|
||||||
<th style="width: 16%">{%= __("Ref") %}</th>
|
<th style="width: 10%">{%= __("Ref") %}</th>
|
||||||
<th style="width: 30%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
<th style="width: 20%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
||||||
<th style="width: 10%">{%= __("Invoiced Amount") %}</th>
|
<th style="width: 10%">{%= __("Invoiced Amount") %}</th>
|
||||||
|
{% if(!filters.show_pdc_in_print) { %}
|
||||||
<th style="width: 10%">{%= __("Paid Amount") %}</th>
|
<th style="width: 10%">{%= __("Paid Amount") %}</th>
|
||||||
<th style="width: 10%">{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}</th>
|
<th style="width: 10%">{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}</th>
|
||||||
<th style="width: 10%">{%= __("Outstanding Amount") %}</th>
|
{% } %}
|
||||||
|
<th style="width: 6%">{%= __("Outstanding Amount") %}</th>
|
||||||
|
{% if(filters.show_pdc_in_print) { %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
|
<th style="width: 6%">{%= __("Customer LPO No.") %}</th>
|
||||||
|
{% } %}
|
||||||
|
<th style="width: 6%">{%= __("PDC/LC Date") %}</th>
|
||||||
|
<th style="width: 6%">{%= __("PDC/LC Ref") %}</th>
|
||||||
|
<th style="width: 6%">{%= __("PDC/LC Amount") %}</th>
|
||||||
|
{% } %}
|
||||||
{% } else { %}
|
{% } else { %}
|
||||||
<th style="width: 40%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
<th style="width: 40%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
|
||||||
<th style="width: 15%">{%= __("Total Invoiced Amount") %}</th>
|
<th style="width: 15%">{%= __("Total Invoiced Amount") %}</th>
|
||||||
@ -48,23 +129,49 @@
|
|||||||
</td>
|
</td>
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
|
{% if(!filters.show_pdc_in_print) { %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Paid Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["Paid Amount"], data[i]["currency"]) %}</td>
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["Credit Note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %}</td>
|
{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["Credit Note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %}</td>
|
||||||
|
{% } %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Outstanding Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["Outstanding Amount"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
|
{% if(filters.show_pdc_in_print) { %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= data[i][__("Customer LPO")] %}</td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">{%= frappe.datetime.str_to_user(data[i][__("PDC/LC Date")]) %}</td>
|
||||||
|
<td style="text-align: right">{%= data[i][__("PDC/LC Ref")] %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i][__("PDC/LC Amount")], data[i]["currency"]) %}</td>
|
||||||
|
{% } %}
|
||||||
{% } else { %}
|
{% } else { %}
|
||||||
<td></td>
|
<td></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td><b>{%= __("Total") %}</b></td>
|
<td><b>{%= __("Total") %}</b></td>
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"] ) %}</td>
|
{%= format_currency(data[i]["Invoiced Amount"], data[i]["currency"] ) %}</td>
|
||||||
|
|
||||||
|
{% if(!filters.show_pdc_in_print) { %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Paid Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["Paid Amount"], data[i]["currency"]) %}</td>
|
||||||
<td style="text-align: right">{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["Credit Note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %} </td>
|
<td style="text-align: right">{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["Credit Note"], data[i]["currency"]) : format_currency(data[i]["Debit Note"], data[i]["currency"]) %} </td>
|
||||||
|
{% } %}
|
||||||
<td style="text-align: right">
|
<td style="text-align: right">
|
||||||
{%= format_currency(data[i]["Outstanding Amount"], data[i]["currency"]) %}</td>
|
{%= format_currency(data[i]["Outstanding Amount"], data[i]["currency"]) %}</td>
|
||||||
|
|
||||||
|
{% if(filters.show_pdc_in_print) { %}
|
||||||
|
{% if(report.report_name === "Accounts Receivable") { %}
|
||||||
|
<td style="text-align: right">
|
||||||
|
{%= data[i][__("Customer LPO")] %}</td>
|
||||||
|
{% } %}
|
||||||
|
<td style="text-align: right">{%= frappe.datetime.str_to_user(data[i][__("PDC/LC Date")]) %}</td>
|
||||||
|
<td style="text-align: right">{%= data[i][__("PDC/LC Ref")] %}</td>
|
||||||
|
<td style="text-align: right">{%= format_currency(data[i][__("PDC/LC Amount")], data[i]["currency"]) %}</td>
|
||||||
|
{% } %}
|
||||||
{% } %}
|
{% } %}
|
||||||
{% } else { %}
|
{% } else { %}
|
||||||
{% if(data[i][__("Customer")] || data[i][__("Supplier")]|| " ") { %}
|
{% if(data[i][__("Customer")] || data[i][__("Supplier")]|| " ") { %}
|
||||||
|
@ -82,6 +82,11 @@ frappe.query_reports["Accounts Receivable"] = {
|
|||||||
"fieldtype": "Int",
|
"fieldtype": "Int",
|
||||||
"default": "90",
|
"default": "90",
|
||||||
"reqd": 1
|
"reqd": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname":"show_pdc_in_print",
|
||||||
|
"label": __("Show PDC in Print"),
|
||||||
|
"fieldtype": "Check",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -72,6 +72,18 @@ class ReceivablePayableReport(object):
|
|||||||
"options": "Currency",
|
"options": "Currency",
|
||||||
"width": 100
|
"width": 100
|
||||||
})
|
})
|
||||||
|
|
||||||
|
columns += [
|
||||||
|
_("PDC/LC Date") + ":Date:110",
|
||||||
|
_("PDC/LC Ref") + ":Data:110",
|
||||||
|
_("PDC/LC Amount") + ":Currency/currency:130",
|
||||||
|
_("Remaining Balance") + ":Currency/currency:130"
|
||||||
|
]
|
||||||
|
|
||||||
|
if args.get('party_type') == 'Customer':
|
||||||
|
columns += [_("Customer LPO") + ":Data:100"]
|
||||||
|
columns += [_("Delivery Note") + ":Data:100"]
|
||||||
|
|
||||||
if args.get("party_type") == "Customer":
|
if args.get("party_type") == "Customer":
|
||||||
columns += [
|
columns += [
|
||||||
_("Territory") + ":Link/Territory:80",
|
_("Territory") + ":Link/Territory:80",
|
||||||
@ -89,7 +101,8 @@ class ReceivablePayableReport(object):
|
|||||||
currency_precision = get_currency_precision() or 2
|
currency_precision = get_currency_precision() or 2
|
||||||
dr_or_cr = "debit" if args.get("party_type") == "Customer" else "credit"
|
dr_or_cr = "debit" if args.get("party_type") == "Customer" else "credit"
|
||||||
|
|
||||||
voucher_details = self.get_voucher_details(args.get("party_type"))
|
dn_details = get_dn_details(args.get("party_type"))
|
||||||
|
voucher_details = self.get_voucher_details(args.get("party_type"), dn_details)
|
||||||
|
|
||||||
future_vouchers = self.get_entries_after(self.filters.report_date, args.get("party_type"))
|
future_vouchers = self.get_entries_after(self.filters.report_date, args.get("party_type"))
|
||||||
|
|
||||||
@ -101,6 +114,8 @@ class ReceivablePayableReport(object):
|
|||||||
return_entries = self.get_return_entries(args.get("party_type"))
|
return_entries = self.get_return_entries(args.get("party_type"))
|
||||||
|
|
||||||
data = []
|
data = []
|
||||||
|
pdc_details = get_pdc_details(args.get("party_type"))
|
||||||
|
|
||||||
for gle in self.get_entries_till(self.filters.report_date, args.get("party_type")):
|
for gle in self.get_entries_till(self.filters.report_date, args.get("party_type")):
|
||||||
if self.is_receivable_or_payable(gle, dr_or_cr, future_vouchers):
|
if self.is_receivable_or_payable(gle, dr_or_cr, future_vouchers):
|
||||||
outstanding_amount, credit_note_amount = self.get_outstanding_amount(gle,
|
outstanding_amount, credit_note_amount = self.get_outstanding_amount(gle,
|
||||||
@ -144,6 +159,18 @@ class ReceivablePayableReport(object):
|
|||||||
else:
|
else:
|
||||||
row.append(company_currency)
|
row.append(company_currency)
|
||||||
|
|
||||||
|
pdc = pdc_details.get(gle.voucher_no, {})
|
||||||
|
remaining_balance = outstanding_amount - flt(pdc.get("pdc_amount"))
|
||||||
|
row += [pdc.get("pdc_date"), pdc.get("pdc_ref"),
|
||||||
|
flt(pdc.get("pdc_amount")), remaining_balance]
|
||||||
|
|
||||||
|
if args.get('party_type') == 'Customer':
|
||||||
|
# customer LPO
|
||||||
|
row += [voucher_details.get(gle.voucher_no, {}).get("po_no")]
|
||||||
|
|
||||||
|
# Delivery Note
|
||||||
|
row += [voucher_details.get(gle.voucher_no, {}).get("delivery_note")]
|
||||||
|
|
||||||
# customer territory / supplier type
|
# customer territory / supplier type
|
||||||
if args.get("party_type") == "Customer":
|
if args.get("party_type") == "Customer":
|
||||||
row += [self.get_territory(gle.party), self.get_customer_group(gle.party)]
|
row += [self.get_territory(gle.party), self.get_customer_group(gle.party)]
|
||||||
@ -225,12 +252,13 @@ class ReceivablePayableReport(object):
|
|||||||
|
|
||||||
return self.party_map
|
return self.party_map
|
||||||
|
|
||||||
def get_voucher_details(self, party_type):
|
def get_voucher_details(self, party_type, dn_details):
|
||||||
voucher_details = frappe._dict()
|
voucher_details = frappe._dict()
|
||||||
|
|
||||||
if party_type == "Customer":
|
if party_type == "Customer":
|
||||||
for si in frappe.db.sql("""select name, due_date
|
for si in frappe.db.sql("""select name, due_date, po_no
|
||||||
from `tabSales Invoice` where docstatus=1""", as_dict=1):
|
from `tabSales Invoice` where docstatus=1""", as_dict=1):
|
||||||
|
si['delivery_note'] = dn_details.get(si.name)
|
||||||
voucher_details.setdefault(si.name, si)
|
voucher_details.setdefault(si.name, si)
|
||||||
|
|
||||||
if party_type == "Supplier":
|
if party_type == "Supplier":
|
||||||
@ -363,3 +391,39 @@ def get_ageing_data(first_range, second_range, third_range, age_as_on, entry_dat
|
|||||||
outstanding_range[index] = outstanding_amount
|
outstanding_range[index] = outstanding_amount
|
||||||
|
|
||||||
return [age] + outstanding_range
|
return [age] + outstanding_range
|
||||||
|
|
||||||
|
def get_pdc_details(party_type):
|
||||||
|
pdc_details = frappe._dict()
|
||||||
|
|
||||||
|
for pdc in frappe.db.sql("""
|
||||||
|
select
|
||||||
|
pref.reference_name as invoice_no, pent.party, pent.party_type,
|
||||||
|
max(pent.reference_date) as pdc_date, sum(ifnull(pref.allocated_amount,0)) as pdc_amount,
|
||||||
|
GROUP_CONCAT(pent.reference_no SEPARATOR ', ') as pdc_ref
|
||||||
|
from
|
||||||
|
`tabPayment Entry` as pent inner join `tabPayment Entry Reference` as pref
|
||||||
|
on
|
||||||
|
(pref.parent = pent.name)
|
||||||
|
where
|
||||||
|
pent.docstatus = 0 and pent.reference_date > pent.posting_date
|
||||||
|
and pent.party_type = %s
|
||||||
|
group by pref.reference_name""", party_type, as_dict=1):
|
||||||
|
pdc_details.setdefault(pdc.invoice_no, pdc)
|
||||||
|
|
||||||
|
return pdc_details
|
||||||
|
|
||||||
|
def get_dn_details(party_type):
|
||||||
|
dn_details = frappe._dict()
|
||||||
|
|
||||||
|
if party_type == "Customer":
|
||||||
|
for si in frappe.db.sql("""select parent, GROUP_CONCAT(delivery_note SEPARATOR ', ') as dn
|
||||||
|
from `tabSales Invoice Item`
|
||||||
|
where docstatus=1 and delivery_note is not null and delivery_note != '' group by parent
|
||||||
|
Union
|
||||||
|
select against_sales_invoice as parent, GROUP_CONCAT(parent SEPARATOR ', ') as dn
|
||||||
|
from `tabDelivery Note Item`
|
||||||
|
where docstatus=1 and against_sales_invoice is not null
|
||||||
|
and against_sales_invoice != '' group by against_sales_invoice""", as_dict=1):
|
||||||
|
dn_details.setdefault(si.parent, si.dn)
|
||||||
|
|
||||||
|
return dn_details
|
||||||
|
@ -415,13 +415,15 @@ class calculate_taxes_and_totals(object):
|
|||||||
|
|
||||||
self.doc.total_advance = flt(total_allocated_amount, self.doc.precision("total_advance"))
|
self.doc.total_advance = flt(total_allocated_amount, self.doc.precision("total_advance"))
|
||||||
|
|
||||||
|
grand_total = self.doc.rounded_total or self.doc.grand_total
|
||||||
|
|
||||||
if self.doc.party_account_currency == self.doc.currency:
|
if self.doc.party_account_currency == self.doc.currency:
|
||||||
invoice_total = flt(self.doc.grand_total - flt(self.doc.write_off_amount),
|
invoice_total = flt(grand_total - flt(self.doc.write_off_amount),
|
||||||
self.doc.precision("grand_total"))
|
self.doc.precision("grand_total"))
|
||||||
else:
|
else:
|
||||||
base_write_off_amount = flt(flt(self.doc.write_off_amount) * self.doc.conversion_rate,
|
base_write_off_amount = flt(flt(self.doc.write_off_amount) * self.doc.conversion_rate,
|
||||||
self.doc.precision("base_write_off_amount"))
|
self.doc.precision("base_write_off_amount"))
|
||||||
invoice_total = flt(self.doc.grand_total * self.doc.conversion_rate,
|
invoice_total = flt(grand_total * self.doc.conversion_rate,
|
||||||
self.doc.precision("grand_total")) - base_write_off_amount
|
self.doc.precision("grand_total")) - base_write_off_amount
|
||||||
|
|
||||||
if invoice_total > 0 and self.doc.total_advance > invoice_total:
|
if invoice_total > 0 and self.doc.total_advance > invoice_total:
|
||||||
|
@ -458,7 +458,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
var party = me.frm.doc[frappe.model.scrub(party_type)];
|
var party = me.frm.doc[frappe.model.scrub(party_type)];
|
||||||
if(party) {
|
if(party && me.frm.doc.company) {
|
||||||
return frappe.call({
|
return frappe.call({
|
||||||
method: "erpnext.accounts.party.get_party_account",
|
method: "erpnext.accounts.party.get_party_account",
|
||||||
args: {
|
args: {
|
||||||
|
@ -3529,8 +3529,8 @@
|
|||||||
"issingle": 0,
|
"issingle": 0,
|
||||||
"istable": 0,
|
"istable": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2017-12-19 14:51:52.710612",
|
"modified": "2018-01-12 15:56:12.483019",
|
||||||
"modified_by": "nabinhait@gmail.com",
|
"modified_by": "Administrator",
|
||||||
"module": "Selling",
|
"module": "Selling",
|
||||||
"name": "Sales Order",
|
"name": "Sales Order",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
|
@ -476,13 +476,10 @@ def make_project(source_name, target_doc=None):
|
|||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def make_delivery_note(source_name, target_doc=None):
|
def make_delivery_note(source_name, target_doc=None):
|
||||||
def set_missing_values(source, target):
|
def set_missing_values(source, target):
|
||||||
if source.po_no:
|
so = [d.against_sales_order for d in target.items]
|
||||||
if target.po_no:
|
if so:
|
||||||
target_po_no = target.po_no.split(", ")
|
po_no_list = frappe.get_all('Sales Order', 'po_no', filters = {'name': ('in', so)})
|
||||||
target_po_no.append(source.po_no)
|
target.po_no = ', '.join(d.po_no for d in po_no_list if d.po_no)
|
||||||
target.po_no = ", ".join(list(set(target_po_no))) if len(target_po_no) > 1 else target_po_no[0]
|
|
||||||
else:
|
|
||||||
target.po_no = source.po_no
|
|
||||||
|
|
||||||
target.ignore_pricing_rule = 1
|
target.ignore_pricing_rule = 1
|
||||||
target.run_method("set_missing_values")
|
target.run_method("set_missing_values")
|
||||||
|
@ -780,12 +780,20 @@ class POSCart {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.selected_item.active_field == 'discount_percentage' && this.numpad.get_value() > cint(100)) {
|
||||||
|
frappe.show_alert({
|
||||||
|
indicator: 'red',
|
||||||
|
message: __('Discount amount cannot be greater than 100%')
|
||||||
|
});
|
||||||
|
this.numpad.reset_value();
|
||||||
|
} else {
|
||||||
const item_code = this.selected_item.attr('data-item-code');
|
const item_code = this.selected_item.attr('data-item-code');
|
||||||
const field = this.selected_item.active_field;
|
const field = this.selected_item.active_field;
|
||||||
const value = this.numpad.get_value();
|
const value = this.numpad.get_value();
|
||||||
|
|
||||||
this.events.on_field_change(item_code, field, value);
|
this.events.on_field_change(item_code, field, value);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.events.on_numpad(btn_value);
|
this.events.on_numpad(btn_value);
|
||||||
}
|
}
|
||||||
|
@ -398,73 +398,6 @@
|
|||||||
"set_only_once": 0,
|
"set_only_once": 0,
|
||||||
"unique": 0
|
"unique": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"fieldname": "po_no",
|
|
||||||
"fieldtype": "Data",
|
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Customer's Purchase Order No",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"oldfieldname": "po_no",
|
|
||||||
"oldfieldtype": "Data",
|
|
||||||
"permlevel": 0,
|
|
||||||
"print_hide": 1,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"print_width": "100px",
|
|
||||||
"read_only": 1,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0,
|
|
||||||
"width": "100px"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"allow_bulk_edit": 0,
|
|
||||||
"allow_on_submit": 0,
|
|
||||||
"bold": 0,
|
|
||||||
"collapsible": 0,
|
|
||||||
"columns": 0,
|
|
||||||
"depends_on": "eval:doc.po_no",
|
|
||||||
"fieldname": "po_date",
|
|
||||||
"fieldtype": "Date",
|
|
||||||
"hidden": 0,
|
|
||||||
"ignore_user_permissions": 0,
|
|
||||||
"ignore_xss_filter": 0,
|
|
||||||
"in_filter": 0,
|
|
||||||
"in_global_search": 0,
|
|
||||||
"in_list_view": 0,
|
|
||||||
"in_standard_filter": 0,
|
|
||||||
"label": "Customer's Purchase Order Date",
|
|
||||||
"length": 0,
|
|
||||||
"no_copy": 0,
|
|
||||||
"oldfieldname": "po_date",
|
|
||||||
"oldfieldtype": "Data",
|
|
||||||
"permlevel": 0,
|
|
||||||
"print_hide": 1,
|
|
||||||
"print_hide_if_no_value": 0,
|
|
||||||
"print_width": "100px",
|
|
||||||
"read_only": 1,
|
|
||||||
"remember_last_selected_value": 0,
|
|
||||||
"report_hide": 0,
|
|
||||||
"reqd": 0,
|
|
||||||
"search_index": 0,
|
|
||||||
"set_only_once": 0,
|
|
||||||
"unique": 0,
|
|
||||||
"width": "100px"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
"allow_bulk_edit": 0,
|
||||||
"allow_on_submit": 0,
|
"allow_on_submit": 0,
|
||||||
@ -527,6 +460,133 @@
|
|||||||
"set_only_once": 0,
|
"set_only_once": 0,
|
||||||
"unique": 0
|
"unique": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 1,
|
||||||
|
"collapsible_depends_on": "po_no",
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "customer_po_details",
|
||||||
|
"fieldtype": "Section Break",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"label": "Customer PO Details",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": "",
|
||||||
|
"print_hide": 0,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "po_no",
|
||||||
|
"fieldtype": "Data",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"label": "Customer's Purchase Order No",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"oldfieldname": "po_no",
|
||||||
|
"oldfieldtype": "Data",
|
||||||
|
"permlevel": 0,
|
||||||
|
"print_hide": 1,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"print_width": "100px",
|
||||||
|
"read_only": 1,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0,
|
||||||
|
"width": "100px"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"fieldname": "column_break_17",
|
||||||
|
"fieldtype": "Column Break",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"permlevel": 0,
|
||||||
|
"precision": "",
|
||||||
|
"print_hide": 0,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"read_only": 0,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"allow_bulk_edit": 0,
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"bold": 0,
|
||||||
|
"collapsible": 0,
|
||||||
|
"columns": 0,
|
||||||
|
"depends_on": "eval:doc.po_no",
|
||||||
|
"fieldname": "po_date",
|
||||||
|
"fieldtype": "Date",
|
||||||
|
"hidden": 0,
|
||||||
|
"ignore_user_permissions": 0,
|
||||||
|
"ignore_xss_filter": 0,
|
||||||
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
|
"in_list_view": 0,
|
||||||
|
"in_standard_filter": 0,
|
||||||
|
"label": "Customer's Purchase Order Date",
|
||||||
|
"length": 0,
|
||||||
|
"no_copy": 0,
|
||||||
|
"oldfieldname": "po_date",
|
||||||
|
"oldfieldtype": "Data",
|
||||||
|
"permlevel": 0,
|
||||||
|
"print_hide": 1,
|
||||||
|
"print_hide_if_no_value": 0,
|
||||||
|
"print_width": "100px",
|
||||||
|
"read_only": 1,
|
||||||
|
"remember_last_selected_value": 0,
|
||||||
|
"report_hide": 0,
|
||||||
|
"reqd": 0,
|
||||||
|
"search_index": 0,
|
||||||
|
"set_only_once": 0,
|
||||||
|
"unique": 0,
|
||||||
|
"width": "100px"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"allow_bulk_edit": 0,
|
"allow_bulk_edit": 0,
|
||||||
"allow_on_submit": 0,
|
"allow_on_submit": 0,
|
||||||
@ -3730,7 +3790,7 @@
|
|||||||
"istable": 0,
|
"istable": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"menu_index": 0,
|
"menu_index": 0,
|
||||||
"modified": "2018-01-11 14:40:21.152015",
|
"modified": "2018-01-12 15:27:44.471335",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Delivery Note",
|
"name": "Delivery Note",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user