Compare commits

...

37 Commits

Author SHA1 Message Date
Pratik Vyas
2f6a20a93a Merge branch 'develop' 2014-12-19 18:13:55 +05:30
Pratik Vyas
5d1543f241 bumped to version 4.15.0 2014-12-19 18:43:55 +06:00
Nabin Hait
c56650c773 Merge pull request #2516 from nabinhait/fix1
Customer should not copied from lead to opoortunity
2014-12-19 10:52:52 +05:30
Nabin Hait
cb11f27558 Customer should not copied from lead to opoortunity 2014-12-19 10:51:59 +05:30
Anand Doshi
98be98816c Merge pull request #2515 from anandpdoshi/anand-dec-18
[fix] In Setup Wizard, load languages from languages.txt
2014-12-18 17:40:58 +05:30
Anand Doshi
ca2c297f72 [fix] In Setup Wizard, load languages from languages.txt 2014-12-18 17:31:21 +05:30
Nabin Hait
d6e49150a8 Merge pull request #2505 from nabinhait/fix1
Reapply price list if pricing rule reset as blank
2014-12-17 15:39:28 +05:30
Nabin Hait
49a2729663 Reapply price list if pricing rule reset as blank 2014-12-17 11:24:00 +05:30
Pratik Vyas
06baf20edd Merge branch 'develop' 2014-12-16 15:47:07 +05:30
Pratik Vyas
13553c2bf0 bumped to version 4.14.0 2014-12-16 16:17:06 +06:00
Nabin Hait
f638c1acd5 Merge pull request #2503 from nabinhait/fix1
packing list index
2014-12-16 15:17:27 +05:30
Nabin Hait
e4c659386a packing list index 2014-12-16 15:16:55 +05:30
Anand Doshi
cd7a1661c6 Merge pull request #2498 from anandpdoshi/anand-dec-15
[minor] use frappe.attach_print() in salary slip and recurring document
2014-12-16 12:42:40 +05:30
Nabin Hait
96962e2101 Merge pull request #2501 from nabinhait/fix1
Fecth contact details on change of contact in purchase transactions
2014-12-16 11:57:11 +05:30
Nabin Hait
7eedebc970 Fecth contact details on change of contact in purchase transactions 2014-12-16 11:56:21 +05:30
Nabin Hait
437e34accb Merge pull request #2500 from nabinhait/fix1
no copy property for customer's po no
2014-12-16 11:26:08 +05:30
Nabin Hait
0f2137be18 no copy property for customer's po no 2014-12-16 10:37:55 +05:30
Anand Doshi
f87a622ef0 [minor] use frappe.attach_print() in salary slip and recurring document 2014-12-15 23:14:35 +05:30
Nabin Hait
07722b835c Merge pull request #2495 from nabinhait/fix1
Translation fixes
2014-12-15 15:00:12 +05:30
Nabin Hait
3cd7a45c1b Translation fixes 2014-12-15 14:56:58 +05:30
Nabin Hait
90b5174256 minor fix 2014-12-15 11:48:43 +05:30
Pratik Vyas
bffad26226 Merge branch 'develop' 2014-12-12 16:52:09 +05:30
Pratik Vyas
a578f3e23a bumped to version 4.13.1 2014-12-12 17:22:09 +06:00
Nabin Hait
870dd43268 Merge pull request #2489 from nabinhait/fix1
Pull all customer's po no in delivery note when made from multiple SO
2014-12-12 12:50:41 +05:30
Nabin Hait
ad0bd4ca92 Pull all customer's po no in delivery note when made from multiple sales order 2014-12-12 12:49:45 +05:30
Nabin Hait
eba480e15a Merge pull request #2487 from nabinhait/fix1
Fixed bom patch
2014-12-12 11:29:49 +05:30
Nabin Hait
4b83403a63 Fixed bom patch 2014-12-12 11:28:58 +05:30
Nabin Hait
22c9e42f4d Merge pull request #2482 from neilLasrado/fix-cost
Fixed cost calculation Error
2014-12-11 17:36:49 +05:30
Neil Trini Lasrado
6ddc487fb6 patch fix 2014-12-11 17:33:41 +05:30
Neil Trini Lasrado
3a34cadcb2 Fix - Total Fixed Cost with patch 2014-12-11 17:15:12 +05:30
Nabin Hait
b71d1a4c7f Merge pull request #2486 from nabinhait/fix1
Removed gross profit field from sales invoice
2014-12-11 17:14:26 +05:30
Nabin Hait
bef80bab0d Removed gross profit field from sales invoice 2014-12-11 16:27:18 +05:30
Nabin Hait
190210394c Merge pull request #2484 from nabinhait/fix1
Leave application fix
2014-12-11 00:02:38 +05:30
Nabin Hait
5cafcf66b0 Leave application fix 2014-12-10 23:59:04 +05:30
Nabin Hait
d71e50c9fc Merge pull request #2480 from nabinhait/fix1
Fixes for discount amount
2014-12-10 12:44:56 +05:30
Nabin Hait
35ebe1bf78 Tax amount in POS invoice print format 2014-12-10 12:42:32 +05:30
Nabin Hait
b14cc0417d Display tax amount after discount, if there is any discount amount 2014-12-10 12:28:25 +05:30
29 changed files with 248 additions and 227 deletions

View File

@@ -1 +1 @@
__version__ = '4.13.0'
__version__ = '4.15.0'

View File

@@ -225,8 +225,7 @@ $.extend(cur_frm.cscript, new erpnext.accounts.SalesInvoiceController({frm: cur_
// Hide Fields
// ------------
cur_frm.cscript.hide_fields = function(doc) {
par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'gross_profit',
'gross_profit_percent', 'get_advances_received',
par_flds = ['project_name', 'due_date', 'is_opening', 'source', 'total_advance', 'get_advances_received',
'advance_adjustment_details', 'sales_partner', 'commission_rate',
'total_commission', 'advances', 'from_date', 'to_date'];

View File

@@ -568,27 +568,6 @@
"print_hide": 0,
"read_only": 1
},
{
"fieldname": "gross_profit",
"fieldtype": "Currency",
"label": "Gross Profit",
"oldfieldname": "gross_profit",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "gross_profit_percent",
"fieldtype": "Float",
"label": "Gross Profit (%)",
"oldfieldname": "gross_profit_percent",
"oldfieldtype": "Currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "advances",
"fieldtype": "Section Break",
@@ -1213,7 +1192,7 @@
"icon": "icon-file-text",
"idx": 1,
"is_submittable": 1,
"modified": "2014-10-10 16:54:22.284284",
"modified": "2014-12-11 16:26:12.402110",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -112,9 +112,10 @@
"width": "150px"
},
{
"depends_on": "eval:parent.discount_amount",
"fieldname": "tax_amount_after_discount_amount",
"fieldtype": "Currency",
"hidden": 1,
"hidden": 0,
"label": "Tax Amount After Discount Amount",
"options": "Company:company:default_currency",
"permlevel": 0,
@@ -146,7 +147,7 @@
"hide_heading": 1,
"idx": 1,
"istable": 1,
"modified": "2014-05-30 03:43:39.740638",
"modified": "2014-12-10 12:26:41.222471",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Taxes and Charges",

View File

@@ -3,9 +3,9 @@
"doc_type": "Sales Invoice",
"docstatus": 0,
"doctype": "Print Format",
"html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ doc.company }}<br>\n\t{{ doc.select_print_heading or _(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"60%\">{{ _(\"Item\") }}</b></th>\n\t\t\t<th width=\"10%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"30%\" class=\"text-right\">{{ _(\"Rate\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.entries -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.amount }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.other_charges -%}\n\t\t{%- if not row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n{% if doc.get(\"other_charges\", filters={\"included_in_print_rate\": 1}) %}\n<hr>\n<p><b>Taxes Included:</b></p>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t{%- for row in doc.other_charges -%}\n\t\t{%- if row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t<tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n{%- endif -%}\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>",
"html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tfont-family: Monospace;\n\t\tline-height: 200%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n<p class=\"text-center\">\n\t{{ doc.company }}<br>\n\t{{ doc.select_print_heading or _(\"Invoice\") }}<br>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}\n</p>\n\n<hr>\n<table class=\"table table-condensed cart no-border\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"60%\">{{ _(\"Item\") }}</b></th>\n\t\t\t<th width=\"10%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"30%\" class=\"text-right\">{{ _(\"Rate\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.entries -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.amount }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Net Total\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.other_charges -%}\n\t\t{%- if not row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total_export\") }}\n\t\t\t</td>\n\t\t</tr>\n\t</tbody>\n</table>\n{% if doc.get(\"other_charges\", filters={\"included_in_print_rate\": 1}) %}\n<hr>\n<p><b>Taxes Included:</b></p>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t{%- for row in doc.other_charges -%}\n\t\t{%- if row.included_in_print_rate -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 70%\">\n\t\t\t\t{{ row.description }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ row.get_formatted(\"tax_amount_after_discount_amount\", doc) }}\n\t\t\t</td>\n\t\t<tr>\n\t\t{%- endif -%}\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n{%- endif -%}\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>",
"idx": 1,
"modified": "2014-07-22 02:08:26.603223",
"modified": "2014-12-10 12:37:10.854370",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice",

View File

@@ -71,7 +71,7 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
},
contact_person: function() {
this.supplier_address();
erpnext.utils.get_contact_details(this.frm);
},
buying_price_list: function() {

View File

@@ -124,10 +124,7 @@ def send_notification(new_rv):
frappe.sendmail(new_rv.notification_email_address,
subject= _("New {0}: #{1}").format(new_rv.doctype, new_rv.name),
message = _("Please find attached {0} #{1}").format(new_rv.doctype, new_rv.name),
attachments = [{
"fname": new_rv.name + ".pdf",
"fcontent": frappe.get_print_format(new_rv.doctype, new_rv.name, as_pdf=True)
}])
attachments = [frappe.attach_print(new_rv.doctype, new_rv.name, file_name=new_rv.name)])
def notify_errors(doc, doctype, party, owner):
from frappe.utils.user import get_system_managers

View File

@@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors"
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
app_icon = "icon-th"
app_color = "#e74c3c"
app_version = "4.13.0"
app_version = "4.15.0"
error_report_email = "support@erpnext.com"

View File

@@ -204,14 +204,14 @@ def get_holidays(leave_app):
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2, `tabEmployee` e1
where e1.name = %s and h1.parent = h2.name and e1.holiday_list = h2.name
and h1.holiday_date between %s and %s""", (leave_app.employee, leave_app.from_date,
leave_app.to_date))
leave_app.to_date))[0][0]
# below line is needed. If an employee hasn't been assigned with any holiday list then above will return 0 rows.
if not tot_hol:
tot_hol = frappe.db.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2
where h1.parent = h2.name and h1.holiday_date between %s and %s
and ifnull(h2.is_default,0) = 1 and h2.fiscal_year = %s""",
(leave_app.from_date, leave_app.to_date, leave_app.fiscal_year))
return tot_hol and tot_hol[0][0] or 0
(leave_app.from_date, leave_app.to_date, leave_app.fiscal_year))[0][0]
return tot_hol
@frappe.whitelist()
def get_total_leave_days(leave_app):

View File

@@ -191,9 +191,6 @@ class SalarySlip(TransactionBase):
if receiver:
subj = 'Salary Slip - ' + cstr(self.month) +'/'+cstr(self.fiscal_year)
sendmail([receiver], subject=subj, msg = _("Please see attachment"),
attachments=[{
"fname": self.name + ".pdf",
"fcontent": frappe.get_print_format(self.doctype, self.name, as_pdf = True)
}])
attachments=[frappe.attach_print(self.doctype, self.name, file_name=self.name)])
else:
msgprint(_("Company Email ID not found, hence mail not sent"))

View File

@@ -83,6 +83,7 @@ cur_frm.cscript.hour_rate = function(doc, dt, dn) {
cur_frm.cscript.time_in_mins = cur_frm.cscript.hour_rate;
cur_frm.cscript.fixed_cycle_cost = cur_frm.cscript.hour_rate;
cur_frm.cscript.item_code = function(doc, cdt, cdn) {
get_bom_material_detail(doc, cdt, cdn);

View File

@@ -285,7 +285,10 @@ class BOM(Document):
if not d.hour_rate:
d.hour_rate = flt(w[0])
fixed_cost += flt(w[1])
if d.fixed_cycle_cost == None:
d.fixed_cycle_cost= flt(w[1])
fixed_cost += d.fixed_cycle_cost
if d.hour_rate and d.time_in_mins:
d.operating_cost = flt(d.hour_rate) * flt(d.time_in_mins) / 60.0

View File

@@ -89,3 +89,4 @@ erpnext.patches.v4_2.recalculate_bom_cost
erpnext.patches.v4_2.fix_gl_entries_for_stock_transactions
erpnext.patches.v4_2.update_requested_and_ordered_qty
execute:frappe.delete_doc("DocType", "Contact Control")
erpnext.patches.v4_2.recalculate_bom_costs

View File

@@ -0,0 +1,18 @@
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
def execute():
for d in frappe.db.sql("""select bom.name from `tabBOM` bom where bom.docstatus < 2 and
exists(select bom_op.name from `tabBOM Operation` bom_op where
bom.name = bom_op.parent and bom_op.fixed_cycle_cost IS NOT NULL)""", as_dict=1):
try:
bom = frappe.get_doc('BOM', d.name)
bom.ignore_validate_update_after_submit = True
bom.calculate_cost()
bom.save()
frappe.db.commit()
except:
frappe.db.rollback()

View File

@@ -402,20 +402,26 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
},
_set_values_for_item_list: function(children) {
var me = this;
$.each(children, function(i, d) {
var existing_pricing_rule = frappe.model.get_value(d.doctype, d.name, "pricing_rule");
$.each(d, function(k, v) {
if (["doctype", "name"].indexOf(k)===-1) {
frappe.model.set_value(d.doctype, d.name, k, v);
}
});
// if pricing rule set as blank from an existing value, apply price_list
if(existing_pricing_rule && !d.pricing_rule) {
me.apply_price_list(frappe.get_doc(d.doctype, d.name));
}
});
},
apply_price_list: function() {
apply_price_list: function(item) {
var me = this;
return this.frm.call({
method: "erpnext.stock.get_item_details.apply_price_list",
args: { args: this._get_args() },
args: { args: this._get_args(item) },
callback: function(r) {
if (!r.exc) {
me.in_apply_price_list = true;

View File

@@ -35,8 +35,6 @@ erpnext.selling.Opportunity = frappe.ui.form.Controller.extend({
});
}
if(this.frm.doc.customer && !this.frm.doc.customer_name) cur_frm.cscript.customer(this.frm.doc);
this.setup_queries();
},

View File

@@ -47,6 +47,7 @@
"in_filter": 1,
"in_list_view": 1,
"label": "Customer",
"no_copy": 1,
"oldfieldname": "customer",
"oldfieldtype": "Link",
"options": "Customer",
@@ -416,7 +417,7 @@
"icon": "icon-info-sign",
"idx": 1,
"is_submittable": 1,
"modified": "2014-12-01 08:46:35.331148",
"modified": "2014-12-19 10:49:20.695720",
"modified_by": "Administrator",
"module": "Selling",
"name": "Opportunity",

View File

@@ -175,6 +175,7 @@
"fieldtype": "Data",
"hidden": 0,
"label": "PO No",
"no_copy": 0,
"oldfieldname": "po_no",
"oldfieldtype": "Data",
"permlevel": 0,
@@ -1020,7 +1021,7 @@
"idx": 1,
"is_submittable": 1,
"issingle": 0,
"modified": "2014-10-08 14:22:44.717108",
"modified": "2014-12-16 10:36:47.295144",
"modified_by": "Administrator",
"module": "Selling",
"name": "Sales Order",

View File

@@ -275,6 +275,14 @@ def make_material_request(source_name, target_doc=None):
@frappe.whitelist()
def make_delivery_note(source_name, target_doc=None):
def set_missing_values(source, target):
if source.po_no:
if target.po_no:
target_po_no = target.po_no.split(", ")
target_po_no.append(source.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.run_method("set_missing_values")
target.run_method("calculate_taxes_and_totals")

View File

@@ -61,14 +61,27 @@ frappe.pages['setup-wizard'].onload = function(wrapper) {
fields: [
{
"fieldname": "language", "label": __("Language"), "fieldtype": "Select",
options: ["english", "العربية", "deutsch", "ελληνικά", "español", "français", "हिंदी", "hrvatski",
"italiano", "nederlands", "polski", "português brasileiro", "português", "српски", "தமிழ்",
"ไทย", "中国(简体)", "中國(繁體)"],
reqd:1, "default": "english"
reqd:1
},
],
help: __("Welcome to ERPNext. Please select your language to begin the Setup Wizard."),
onload: function(slide) {
var me = this;
if (!this.language_list) {
frappe.call({
method: "erpnext.setup.page.setup_wizard.setup_wizard.load_languages",
callback: function(r) {
me.language_list = r.message;
slide.get_input("language")
.add_options(r.message)
.val("english");
}
})
} else {
slide.get_input("language").add_options(this.language_list);
}
slide.get_input("language").on("change", function() {
var lang = $(this).val() || "english";
frappe._messages = {};

View File

@@ -434,4 +434,6 @@ def load_messages(language):
send_translations(m)
return lang
@frappe.whitelist()
def load_languages():
return sorted(get_lang_dict().keys())

View File

@@ -178,9 +178,9 @@
{
"fieldname": "po_no",
"fieldtype": "Data",
"hidden": 1,
"hidden": 0,
"label": "Customer's Purchase Order No",
"no_copy": 0,
"no_copy": 1,
"oldfieldname": "po_no",
"oldfieldtype": "Data",
"permlevel": 0,
@@ -1013,7 +1013,7 @@
"idx": 1,
"in_create": 0,
"is_submittable": 1,
"modified": "2014-09-09 05:35:30.700911",
"modified": "2014-12-16 10:37:08.934881",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Note",

View File

@@ -27,7 +27,7 @@ def get_bin_qty(item, warehouse):
where item_code = %s and warehouse = %s""", (item, warehouse), as_dict = 1)
return det and det[0] or ''
def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packing_list_idx):
def update_packing_list_item(obj, packing_item_code, qty, warehouse, line):
bin = get_bin_qty(packing_item_code, warehouse)
item = get_packing_item_details(packing_item_code)
@@ -54,9 +54,7 @@ def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packi
pi.warehouse = warehouse
if not pi.batch_no:
pi.batch_no = cstr(line.get("batch_no"))
pi.idx = packing_list_idx
packing_list_idx += 1
def make_packing_list(obj, item_table_fieldname):
@@ -64,13 +62,11 @@ def make_packing_list(obj, item_table_fieldname):
if obj.get("_action") and obj._action == "update_after_submit": return
packing_list_idx = 0
parent_items = []
for d in obj.get(item_table_fieldname):
if frappe.db.get_value("Sales BOM", {"new_item_code": d.item_code}):
for i in get_sales_bom_items(d.item_code):
update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty),
d.warehouse, d, packing_list_idx)
update_packing_list_item(obj, i['item_code'], flt(i['qty'])*flt(d.qty), d.warehouse, d)
if [d.item_code, d.name] not in parent_items:
parent_items.append([d.item_code, d.name])

View File

@@ -7,7 +7,7 @@
<div class="col-xs-5 text-right">
<label>{{ charge.get_formatted("description") }}</label></div>
<div class="col-xs-7 text-right">
{{ frappe.format_value(charge.tax_amount / doc.conversion_rate,
{{ frappe.format_value(frappe.utils.flt(charge.tax_amount) / doc.conversion_rate,
table_meta.get_field("tax_amount"), doc, currency=doc.currency) }}
</div>
</div>

View File

@@ -3300,24 +3300,24 @@ website page link,الموقع رابط الصفحة
{0} budget for Account {1} against Cost Center {2} will exceed by {3},{0} ميزانية الحساب {1} ضد مركز التكلفة {2} سيتجاوز التي كتبها {3}
{0} can not be negative,{0} لا يمكن أن تكون سلبية
{0} created,{0} خلق
{0} does not belong to Company {1},{0} لا تنتمي إلى شركة {1}
{0} does not belong to Company {1},{0} {لا تنتمي إلى شركة {1
{0} entered twice in Item Tax,{0} دخلت مرتين في ضريبة المدينة
{0} is an invalid email address in 'Notification Email Address',"{0} هو عنوان بريد إلكتروني غير صالح في ' عنوان البريد الإلكتروني إعلام """
{0} is mandatory,{0} إلزامي
{0} is mandatory for Item {1},{0} إلزامي القطعة ل {1}
{0} is mandatory for Item {1},{0} {إلزامي القطعة ل {1
{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.,{0} إلزامي. ربما لا يتم إنشاء سجل سعر صرف العملة ل{1} إلى {2}.
{0} is not a stock Item,{0} ليس الأسهم الإغلاق
{0} is not a valid Batch Number for Item {1},{0} ليس رقم الدفعة صالحة لل تفاصيل {1}
{0} is not a valid Leave Approver. Removing row #{1}.,{0} ليس صحيحا اترك الموافق. إزالة الصف # {1}.
{0} is not a valid Leave Approver. Removing row #{1}.,{0} {ليس صحيحا اترك الموافق. إزالة الصف # {1.
{0} is not a valid email id,{0} ليس معرف بريد إلكتروني صحيح
{0} is now the default Fiscal Year. Please refresh your browser for the change to take effect.,{0} الآن الافتراضي السنة المالية. يرجى تحديث المتصفح ل التغيير نافذ المفعول .
{0} is required,{0} مطلوب
{0} must be a Purchased or Sub-Contracted Item in row {1},{0} يجب أن يكون البند شراؤها أو التعاقد الفرعي في الصف {1}
{0} must be reduced by {1} or you should increase overflow tolerance,{0} يجب تخفيض كتبها {1} أو يجب زيادة الفائض التسامح
{0} must have role 'Leave Approver',{0} يجب أن يكون دور ' اترك الموافق '
{0} valid serial nos for Item {1},{0} غ المسلسل صالحة لل تفاصيل {1}
{0} {1} against Bill {2} dated {3},{0} {1} ضد بيل {2} بتاريخ {3}
{0} {1} against Invoice {2},{0} {1} ضد الفاتورة {2}
{0} valid serial nos for Item {1},{0} {غ المسلسل صالحة لل تفاصيل {1
{0} {1} against Bill {2} dated {3},{0} {1} {ضد بيل {2} بتاريخ {3
{0} {1} against Invoice {2},{0} {1} {ضد الفاتورة {2
{0} {1} has already been submitted,{0} {1} وقد تم بالفعل قدمت
{0} {1} has been modified. Please refresh.,{0} {1} تم تعديل . يرجى تحديث.
{0} {1} is not submitted,{0} {1} لا تقدم
1 and year: والسنة:
3300 {0} budget for Account {1} against Cost Center {2} will exceed by {3} {0} ميزانية الحساب {1} ضد مركز التكلفة {2} سيتجاوز التي كتبها {3}
3301 {0} can not be negative {0} لا يمكن أن تكون سلبية
3302 {0} created {0} خلق
3303 {0} does not belong to Company {1} {0} لا تنتمي إلى شركة {1} {0} {لا تنتمي إلى شركة {1
3304 {0} entered twice in Item Tax {0} دخلت مرتين في ضريبة المدينة
3305 {0} is an invalid email address in 'Notification Email Address' {0} هو عنوان بريد إلكتروني غير صالح في ' عنوان البريد الإلكتروني إعلام "
3306 {0} is mandatory {0} إلزامي
3307 {0} is mandatory for Item {1} {0} إلزامي القطعة ل {1} {0} {إلزامي القطعة ل {1
3308 {0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}. {0} إلزامي. ربما لا يتم إنشاء سجل سعر صرف العملة ل{1} إلى {2}.
3309 {0} is not a stock Item {0} ليس الأسهم الإغلاق
3310 {0} is not a valid Batch Number for Item {1} {0} ليس رقم الدفعة صالحة لل تفاصيل {1}
3311 {0} is not a valid Leave Approver. Removing row #{1}. {0} ليس صحيحا اترك الموافق. إزالة الصف # {1}. {0} {ليس صحيحا اترك الموافق. إزالة الصف # {1.
3312 {0} is not a valid email id {0} ليس معرف بريد إلكتروني صحيح
3313 {0} is now the default Fiscal Year. Please refresh your browser for the change to take effect. {0} الآن الافتراضي السنة المالية. يرجى تحديث المتصفح ل التغيير نافذ المفعول .
3314 {0} is required {0} مطلوب
3315 {0} must be a Purchased or Sub-Contracted Item in row {1} {0} يجب أن يكون البند شراؤها أو التعاقد الفرعي في الصف {1}
3316 {0} must be reduced by {1} or you should increase overflow tolerance {0} يجب تخفيض كتبها {1} أو يجب زيادة الفائض التسامح
3317 {0} must have role 'Leave Approver' {0} يجب أن يكون دور ' اترك الموافق '
3318 {0} valid serial nos for Item {1} {0} غ المسلسل صالحة لل تفاصيل {1} {0} {غ المسلسل صالحة لل تفاصيل {1
3319 {0} {1} against Bill {2} dated {3} {0} {1} ضد بيل {2} بتاريخ {3} {0} {1} {ضد بيل {2} بتاريخ {3
3320 {0} {1} against Invoice {2} {0} {1} ضد الفاتورة {2} {0} {1} {ضد الفاتورة {2
3321 {0} {1} has already been submitted {0} {1} وقد تم بالفعل قدمت
3322 {0} {1} has been modified. Please refresh. {0} {1} تم تعديل . يرجى تحديث.
3323 {0} {1} is not submitted {0} {1} لا تقدم

View File

@@ -3317,7 +3317,7 @@ website page link,Ιστοσελίδα link της σελίδας
{0} must be reduced by {1} or you should increase overflow tolerance,{0} πρέπει να μειωθεί κατά {1} ή θα πρέπει να αυξήσει την ανοχή υπερχείλισης
{0} must have role 'Leave Approver',{0} πρέπει να έχει ρόλο « Αφήστε Έγκρισης »
{0} valid serial nos for Item {1},{0} έγκυρο σειριακό nos για τη θέση {1}
{0} {1} against Bill {2} dated {3},{0} {1} εναντίον Bill {2} { 3 με ημερομηνία }
{0} {1} against Bill {2} dated {3},{0} {1} εναντίον Bill {2} {3} με ημερομηνία
{0} {1} against Invoice {2},{0} {1} κατά Τιμολόγιο {2}
{0} {1} has already been submitted,{0} {1} έχει ήδη υποβληθεί
{0} {1} has been modified. Please refresh.,{0} {1} έχει τροποποιηθεί . Παρακαλώ ανανεώσετε .
1 (Half Day) (Μισή ημέρα)
3317 {0} must be reduced by {1} or you should increase overflow tolerance {0} πρέπει να μειωθεί κατά {1} ή θα πρέπει να αυξήσει την ανοχή υπερχείλισης
3318 {0} must have role 'Leave Approver' {0} πρέπει να έχει ρόλο « Αφήστε Έγκρισης »
3319 {0} valid serial nos for Item {1} {0} έγκυρο σειριακό nos για τη θέση {1}
3320 {0} {1} against Bill {2} dated {3} {0} {1} εναντίον Bill {2} { 3 με ημερομηνία } {0} {1} εναντίον Bill {2} {3} με ημερομηνία
3321 {0} {1} against Invoice {2} {0} {1} κατά Τιμολόγιο {2}
3322 {0} {1} has already been submitted {0} {1} έχει ήδη υποβληθεί
3323 {0} {1} has been modified. Please refresh. {0} {1} έχει τροποποιηθεί . Παρακαλώ ανανεώσετε .

View File

@@ -3322,7 +3322,7 @@ website page link,el vínculo web
{0} must be reduced by {1} or you should increase overflow tolerance,{0} debe reducirse en {1} o se debe aumentar la tolerancia de desbordamiento
{0} must have role 'Leave Approver',{0} debe tener rol ' Dejar aprobador '
{0} valid serial nos for Item {1},{0} nn serie válidos para el elemento {1}
{0} {1} against Bill {2} dated {3},{0} {1} { 2 contra Bill } {3} de fecha
{0} {1} against Bill {2} dated {3},{0} {1} {2} contra Bill {3} de fecha
{0} {1} against Invoice {2},{0} {1} contra Factura {2}
{0} {1} has already been submitted,{0} {1} ya ha sido presentado
{0} {1} has been modified. Please refresh.,{0} {1} ha sido modificado. Por favor regenere .
1 (Half Day) (Medio día)
3322 {0} {1} has already been submitted {0} {1} ya ha sido presentado
3323 {0} {1} has been modified. Please refresh. {0} {1} ha sido modificado. Por favor regenere .
3324 {0} {1} is not submitted {0} {1} no se presenta
3325 {0} {1} must be submitted {0} {1} debe ser presentado
3326 {0} {1} not in any Fiscal Year {0} {1} no en cualquier año fiscal
3327 {0} {1} status is 'Stopped' {0} {1} Estado se ' Detenido '
3328 {0} {1} status is Stopped {0} {1} estado es Detenido

View File

@@ -3318,7 +3318,7 @@ website page link,Lien vers page web
{0} must be reduced by {1} or you should increase overflow tolerance,{0} doit être réduite par {1} ou vous devez augmenter la tolérance de dépassement
{0} must have role 'Leave Approver',Nouveau Stock UDM est nécessaire
{0} valid serial nos for Item {1},BOM {0} pour objet {1} à la ligne {2} est inactif ou non soumis
{0} {1} against Bill {2} dated {3},S'il vous plaît entrer le titre !
{0} {1} against Bill {2} dated {3},{0} {1} contre le projet de loi en date du {2} {3}
{0} {1} against Invoice {2},investissements
{0} {1} has already been submitted,"S'il vous plaît entrer » est sous-traitée "" comme Oui ou Non"
{0} {1} has been modified. Please refresh.,Point ou Entrepôt à la ligne {0} ne correspond pas à la Demande de Matériel
1 (Half Day) (Demi-journée)
3318 {0} must have role 'Leave Approver' Nouveau Stock UDM est nécessaire
3319 {0} valid serial nos for Item {1} BOM {0} pour objet {1} à la ligne {2} est inactif ou non soumis
3320 {0} {1} against Bill {2} dated {3} S'il vous plaît entrer le titre ! {0} {1} contre le projet de loi en date du {2} {3}
3321 {0} {1} against Invoice {2} investissements
3322 {0} {1} has already been submitted S'il vous plaît entrer » est sous-traitée " comme Oui ou Non
3323 {0} {1} has been modified. Please refresh. Point ou Entrepôt à la ligne {0} ne correspond pas à la Demande de Matériel
3324 {0} {1} is not submitted Accepté Rejeté + Quantité doit être égale à la quantité reçue pour objet {0}

View File

@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
import os
version = "4.13.0"
version = "4.15.0"
with open("requirements.txt", "r") as f:
install_requires = f.readlines()