Compare commits

...

134 Commits

Author SHA1 Message Date
Pratik Vyas
b301603740 Merge branch 'develop' 2015-01-17 01:42:05 +05:30
Pratik Vyas
d7ba759844 bumped to version 4.18.1 2015-01-17 02:12:05 +06:00
Nabin Hait
8efe58bd3c Merge pull request #2591 from nabinhait/fix1
Fixes
2015-01-16 12:03:49 +05:30
Nabin Hait
6609938483 Removed validation: target_valuation > source_valuation 2015-01-16 11:59:47 +05:30
Nabin Hait
84662f2db5 minor fix in payment receipt voucher print format 2015-01-16 11:59:47 +05:30
Nabin Hait
da975f5a76 Merge pull request #2581 from nabinhait/fix1
minor fix
2015-01-14 11:49:46 +05:30
Nabin Hait
f34c96bf7a minor fix 2015-01-14 11:49:04 +05:30
Pratik Vyas
0f96f8e68f Merge branch 'develop' 2015-01-14 11:42:45 +05:30
Pratik Vyas
991962b6fd bumped to version 4.18.0 2015-01-14 12:12:45 +06:00
Nabin Hait
c481e27d88 Merge pull request #2565 from alexandre-00/patch-11
Update bom.py
2015-01-14 11:39:08 +05:30
Nabin Hait
56e04e0727 Merge pull request #2576 from nabinhait/fix1
Discount amount in party currency
2015-01-14 11:27:30 +05:30
Nabin Hait
2244ac4d52 Discount amount in party currency 2015-01-12 17:35:37 +05:30
Nabin Hait
024b537b7f Merge pull request #2557 from neilLasrado/spelling-of-approver
Spelling Correction - Leave application #2552
2015-01-12 17:02:10 +05:30
Pratik Vyas
e4ee5c3f1c Update .travis.yml 2015-01-12 12:48:27 +05:30
Pratik Vyas
4b3d99d39a Merge branch 'develop' 2015-01-12 12:14:36 +05:30
Pratik Vyas
47a10f5a39 bumped to version 4.17.0 2015-01-12 12:44:35 +06:00
Nabin Hait
ecb39a5b63 Merge pull request #2571 from nabinhait/fix1
Fixes
2015-01-12 11:04:50 +05:30
Nabin Hait
39c8c9e7b0 Fixes in print format css 2015-01-12 11:04:07 +05:30
Nabin Hait
4e7cc93af9 minor fix in reposting utility 2015-01-12 10:55:48 +05:30
Rushabh Mehta
f8cb1a916e Merge pull request #2570 from dalers/develop
fix web links and clarify install options
2015-01-12 10:47:06 +05:30
Dale Scott
ab2e75e98e Update README.md 2015-01-11 11:04:43 -07:00
Dale Scott
354892b1c6 Update README.md 2015-01-11 11:01:01 -07:00
Dale Scott
abe69afd69 corrections and clarifications
mostly current websites for user guide, forum, ...
2015-01-11 10:38:03 -07:00
Nabin Hait
c72a89aaf8 Merge pull request #2569 from nabinhait/fix1
create material request from production planning tool
2015-01-11 22:04:07 +05:30
Nabin Hait
873d98be2d create material request from production planning tool 2015-01-11 22:01:59 +05:30
Nabin Hait
f1d06b02e7 Merge pull request #2567 from nabinhait/fix1
valuation rate mandatory if item is transacting for the first time
2015-01-10 10:31:34 +05:30
Nabin Hait
675276b802 valuation rate mandatory if item is transacting for the first time 2015-01-10 10:27:28 +05:30
alexandre-00
3ed3a2d176 Update bom.py
removed the attrgetter
2015-01-09 14:42:27 +08:00
Rushabh Mehta
9e95e780da Merge pull request #2560 from neilLasrado/test-fix
opportunity - test records fixed
2015-01-09 12:03:28 +05:30
alexandre-00
de58657537 Update bom.py
Hi guys,

Just a proposal to sort the Materials Required (Exploded) from the BOM.
So the items and sub-assemblies items looks a little bit more organized in the list.

Cheers
Alexandre
2015-01-09 14:20:43 +08:00
Anand Doshi
015fa7a1d1 [fix] escape quote in Accounts Receivable 2015-01-08 18:26:53 +05:30
Neil Trini Lasrado
1ff3a6cdb8 fix 2015-01-07 16:24:52 +05:30
Nabin Hait
7620efc9ad Merge pull request #2561 from nabinhait/fix1
fix reposting gl entries for future vouchers
2015-01-07 15:49:35 +05:30
Nabin Hait
7778b480fd fix reposting gl entries for future vouchers 2015-01-07 15:45:10 +05:30
Neil Trini Lasrado
a17d7cea34 test records fixed 2015-01-07 15:42:59 +05:30
Pratik Vyas
a9cafcb8ae Merge branch 'develop' 2015-01-07 11:37:22 +05:30
Pratik Vyas
bdfd0d1ff9 bumped to version 4.16.0 2015-01-07 12:07:22 +06:00
Nabin Hait
afc8b1a087 Merge pull request #2558 from nabinhait/fix1
message changed
2015-01-07 11:34:42 +05:30
Nabin Hait
6c1773025b fiscal year error message 2015-01-07 11:33:14 +05:30
Neil Trini Lasrado
1b7d66fab6 Update leave_application.js 2015-01-07 11:16:41 +05:30
Nabin Hait
e24365f1f4 message fix 2015-01-06 12:57:23 +05:30
Nabin Hait
fd334bf451 Merge pull request #2551 from nabinhait/fix1
minor fix
2015-01-05 08:20:08 +05:30
Nabin Hait
5515b1ea7f minor fix 2015-01-05 08:18:15 +05:30
Nabin Hait
96d67f5153 Merge pull request #2547 from nabinhait/fix1
minor fix
2015-01-04 17:29:14 +05:30
Nabin Hait
8a00319962 minor fix 2015-01-04 17:27:40 +05:30
Nabin Hait
c6136e4801 Merge pull request #2543 from nabinhait/fix1
FG item and raw material can not be merged
2015-01-02 15:13:17 +05:30
Nabin Hait
0938b5dec6 FG item and raw material can not be merged 2015-01-02 15:12:30 +05:30
Nabin Hait
88f8fcb32e Merge pull request #2542 from nabinhait/fix1
In stock entry, difference account can be non-profit-and-loss account
2015-01-02 14:37:43 +05:30
Nabin Hait
f40ce616a7 In stock entry, difference account can be non-profit-and-loss account 2015-01-02 14:37:01 +05:30
Pratik Vyas
b02788b915 Merge branch 'develop' 2014-12-31 12:41:14 +05:30
Pratik Vyas
b094ee45d7 bumped to version 4.15.4 2014-12-31 13:11:14 +06:00
Nabin Hait
de0c87757a Merge pull request #2539 from nabinhait/fix1
item validation in bom
2014-12-31 12:37:38 +05:30
Nabin Hait
5604f987f2 item validation in bom 2014-12-31 12:37:11 +05:30
Nabin Hait
9d14f0f36a Merge pull request #2538 from nabinhait/fix1
set missing cost center using default
2014-12-30 18:35:14 +05:30
Nabin Hait
a74468b353 set missing cost center using default 2014-12-30 18:33:52 +05:30
Nabin Hait
35f81b24f1 Merge pull request #2537 from nabinhait/fix1
focus on barcode field after adding a row
2014-12-30 17:53:58 +05:30
Nabin Hait
40431cbf89 focus on barcode field after adding a row 2014-12-30 17:53:16 +05:30
Nabin Hait
5529f14aaf Merge pull request #2536 from nabinhait/fix1
Fixes in Stock Analytics
2014-12-30 16:35:57 +05:30
Nabin Hait
54c31b498b Fixes in Stock Analytics 2014-12-30 16:33:07 +05:30
Nabin Hait
899dba9022 Merge pull request #2535 from nabinhait/fix1
always calculate taxes and totals onchange of exchange rate
2014-12-30 15:41:22 +05:30
Nabin Hait
7d8fa8089a always calculate taxes and totals onchange of exchange rate 2014-12-30 15:35:59 +05:30
Pratik Vyas
ac86c5b6d1 Merge branch 'develop' 2014-12-28 16:59:08 +05:30
Pratik Vyas
ecc3f312b9 bumped to version 4.15.3 2014-12-28 17:29:08 +06:00
Nabin Hait
b65b5f43a7 Merge pull request #2530 from nabinhait/fix1
exchange_rate no_copy fix
2014-12-26 11:00:03 +05:30
Nabin Hait
c3270d7504 exchange_rate no_copy fix 2014-12-26 10:58:58 +05:30
Pratik Vyas
ea909ace01 Merge branch 'develop' 2014-12-23 19:11:08 +05:30
Pratik Vyas
f64d11da3c bumped to version 4.15.2 2014-12-23 19:41:08 +06:00
Nabin Hait
95225be93d Merge pull request #2509 from pdvyas/fix-patches
add reload_doc in a few patches
2014-12-23 17:43:52 +05:30
Nabin Hait
e5d169b8d2 Merge pull request #2521 from nabinhait/fix1
fixed negative batch wty message
2014-12-23 11:26:04 +05:30
Nabin Hait
da4e3fb366 fixed negative batch wty message 2014-12-23 10:58:01 +05:30
Nabin Hait
13ce150149 Merge pull request #2520 from nabinhait/fix1
minor fix no-copy
2014-12-22 15:07:28 +05:30
Nabin Hait
a04489a72b minor fix no-copy 2014-12-22 14:58:36 +05:30
Pratik Vyas
35cd88b09b Merge branch 'develop' 2014-12-22 11:17:45 +05:30
Pratik Vyas
ff56566506 bumped to version 4.15.1 2014-12-22 11:47:45 +06:00
Nabin Hait
01ad94bfad Merge pull request #2519 from nabinhait/fix1
Dont reset pricing if ignore pricing rule
2014-12-22 11:16:02 +05:30
Nabin Hait
cfe3c54ca0 Dont reset pricing if ignore pricing rule 2014-12-22 10:43:10 +05:30
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
Pratik Vyas
387e1e21cb add reload_doc in a few patches 2014-12-18 11:36:23 +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
Pratik Vyas
399a3097e8 Merge branch 'develop' 2014-12-09 16:40:28 +05:30
Pratik Vyas
c8f5c3cdbe bumped to version 4.13.0 2014-12-09 17:10:28 +06:00
Nabin Hait
e83d506319 Merge pull request #2474 from nabinhait/fix1
Added leave approver name field in leave application
2014-12-09 16:37:40 +05:30
Nabin Hait
690bcd7b66 Added leave approver name field in leave application 2014-12-09 16:36:33 +05:30
Nabin Hait
f18d285eab Merge pull request #2473 from nabinhait/fix1
minor fix
2014-12-09 16:31:03 +05:30
Nabin Hait
7887ccb441 Credit days fix 2014-12-09 14:34:14 +05:30
Nabin Hait
d57b57a21d Minor fix in accounts receivable report 2014-12-09 11:56:13 +05:30
Nabin Hait
5cc0531d27 Merge pull request #2451 from revant/develop
"From time" cannot be later than "To time" and hours cannot be negative
2014-12-02 14:27:00 +05:30
Revant Nandgaonkar
0e5cdc8495 Merge branch 'develop' of https://github.com/revant/erpnext into develop 2014-12-02 14:21:15 +05:30
Revant Nandgaonkar
b80d892eab removed unecessary backslash 2014-12-02 14:19:29 +05:30
Revant Nandgaonkar
185af03fb2 Update time_log.py 2014-12-02 14:18:10 +05:30
Nabin Hait
abcbbc63d8 Merge pull request #2435 from nabinhait/fix1
Fixes in authorization rule based on average discount
2014-12-02 10:36:25 +05:30
Nabin Hait
6871c74ce1 Merge pull request #2444 from ankitjavalkarwork/contactmob
Display mobile no. of contact
2014-12-02 10:35:46 +05:30
Revant Nandgaonkar
d0a44ca85c Changed contact_date to Datetime so appointment or call with time can be scheduled 2014-12-01 23:31:53 +05:30
Revant Nandgaonkar
83db3e3ddb "From time" cannot be later than "To time" and hours cannot be negative 2014-12-01 16:53:29 +05:30
Nabin Hait
cc11045fd3 minor fix 2014-11-28 16:59:32 +05:30
Nabin Hait
1b5afe737f Fixes in authorization rule based on average discount 2014-11-28 16:59:32 +05:30
Rushabh Mehta
3d65d9602e [error-reports] 2014-11-28 14:58:43 +05:30
ankitjavalkarwork
9440d080d4 Print Hide Recurring Order/Invoice based fields 2014-11-27 17:28:53 +05:30
ankitjavalkarwork
9269c86339 Display mobile no of contact 2014-11-27 17:13:36 +05:30
71 changed files with 1112 additions and 969 deletions

View File

@@ -16,8 +16,9 @@ install:
- sudo apt-get install mariadb-server mariadb-common libmariadbclient-dev
- ./ci/fix-mariadb.sh
- wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.1/wkhtmltox-0.12.1_linux-precise-amd64.deb
- sudo dpkg -i wkhtmltox-0.12.1_linux-precise-amd64.deb
- sudo apt-get install xfonts-75dpi xfonts-base -y
- wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.2/wkhtmltox-0.12.2_linux-precise-amd64.deb
- sudo dpkg -i wkhtmltox-0.12.2_linux-precise-amd64.deb
- CFLAGS=-O0 pip install git+https://github.com/frappe/frappe.git@develop
- CFLAGS=-O0 pip install --editable .

View File

@@ -1,34 +1,31 @@
# ERPNext - Open Source ERP for small, medium sized businesses [![Build Status](https://travis-ci.org/frappe/erpnext.png)](https://travis-ci.org/frappe/erpnext)
# ERPNext - Open source ERP for small and medium-size business [![Build Status](https://travis-ci.org/frappe/erpnext.png)](https://travis-ci.org/frappe/erpnext)
[https://erpnext.com](https://erpnext.com)
Includes Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Built on Python / MariaDB.
Includes: Accounting, Inventory, CRM, Sales, Purchase, Projects, HRMS. Requires MariaDB.
ERPNext is built on [frappe](https://github.com/frappe/frappe) Python Framework.
ERPNext is built on the [Frappe](https://github.com/frappe/frappe) Framework, a full-stack web app framework in Python & Javascript.
- [User Guide](http://erpnext.org/user-guide.html)
- [User Guide](https://erpnext.com/user-guide)
- [Getting Help](http://erpnext.org/getting-help.html)
- [Developer Forum](http://groups.google.com/group/erpnext-developer-forum)
- [User Forum](http://groups.google.com/group/erpnext-user-forum)
- [Discussion Forum](https://discuss.frappe.io/)
---
### Install
### Full Install
Use the bench, https://github.com/frappe/bench
The Easy Way install script for bench will install all dependencies (e.g. MariaDB). See https://github.com/frappe/bench
### Admin Login
New passwords will be created for the ERPNext "Administrator" user, the MariaDB root user, and the frappe user (the script displays the passwords and saves them to ~/frappe_passwords.txt).
1. go to "/login"
1. Administrator user name: "Administrator"
1. Administrator password: "admin"
### Virtual Image
### Download and Install
##### Virtual Image:
You can download a virtual image to run ERPNext in a virtual machine on your local system.
- [ERPNext Download](http://erpnext.com/download)
System and user credentials are listed on the download page.
---
## License

View File

@@ -1 +1 @@
__version__ = '4.12.0'
__version__ = '4.18.1'

View File

@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe
from frappe.utils import flt, cstr, cint, getdate, add_days, formatdate
from frappe.utils import flt, cstr, cint, getdate
from frappe import msgprint, throw, _
from frappe.model.document import Document
@@ -176,15 +176,7 @@ class Account(Document):
frappe.throw(_("Due Date cannot be before Posting Date"))
elif credit_days is not None and diff > credit_days:
is_credit_controller = frappe.db.get_value("Accounts Settings", None,
"credit_controller") in frappe.user.get_roles()
if is_credit_controller:
msgprint(_("Note: Due Date exceeds the allowed credit days by {0} day(s)").format(
diff - credit_days))
else:
max_due_date = formatdate(add_days(posting_date, credit_days))
frappe.throw(_("Due Date cannot be after {0}").format(max_due_date))
msgprint(_("Note: Due Date exceeds the allowed credit days by {0} day(s)").format(diff - credit_days))
def validate_trash(self):
"""checks gl entries and if child exists"""

View File

@@ -800,7 +800,8 @@
"fieldtype": "Date",
"label": "From Date",
"no_copy": 1,
"permlevel": 0
"permlevel": 0,
"print_hide": 1
},
{
"allow_on_submit": 1,
@@ -810,7 +811,8 @@
"fieldtype": "Date",
"label": "To Date",
"no_copy": 1,
"permlevel": 0
"permlevel": 0,
"print_hide": 1
},
{
"allow_on_submit": 1,
@@ -878,7 +880,7 @@
"icon": "icon-file-text",
"idx": 1,
"is_submittable": 1,
"modified": "2014-10-08 14:23:20.234176",
"modified": "2014-11-27 17:28:20.133701",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice",

View File

@@ -233,6 +233,11 @@ erpnext.POS = Class.extend({
},
make_item_list: function() {
var me = this;
if(!this.price_list) {
msgprint(__("Price List not found or disabled"));
return;
}
me.item_timeout = null;
frappe.call({
method: 'erpnext.accounts.doctype.sales_invoice.pos.get_items',
@@ -487,7 +492,7 @@ erpnext.POS = Class.extend({
});
me.refresh_delete_btn();
if(me.frm.doc[this.party]) {
if(me.frm.doc[this.party.toLowerCase()]) {
this.barcode.$input.focus();
} else {
this.party_field.$input.focus();

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

@@ -422,6 +422,15 @@
"fieldtype": "Section Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total_export",
"fieldtype": "Currency",
"label": "Total Taxes and Charges",
"options": "currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "other_charges_total",
"fieldtype": "Currency",
@@ -438,23 +447,24 @@
"fieldtype": "Column Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total_export",
"fieldtype": "Currency",
"label": "Total Taxes and Charges",
"options": "currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount",
"options": "Company:company:default_currency",
"options": "currency",
"permlevel": 0,
"print_hide": 0
},
{
"fieldname": "base_discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount (Company Currency)",
"options": "Company:company:default_currency",
"permlevel": 0,
"precision": "",
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "totals",
"fieldtype": "Section Break",
@@ -568,27 +578,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 +1202,7 @@
"icon": "icon-file-text",
"idx": 1,
"is_submittable": 1,
"modified": "2014-10-10 16:54:22.284284",
"modified": "2015-01-12 17:34:36.353241",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -1,155 +1,156 @@
{
"autoname": "INVTD.######",
"creation": "2013-04-24 11:39:32",
"docstatus": 0,
"doctype": "DocType",
"autoname": "INVTD.######",
"creation": "2013-04-24 11:39:32",
"docstatus": 0,
"doctype": "DocType",
"fields": [
{
"fieldname": "charge_type",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Type",
"oldfieldname": "charge_type",
"oldfieldtype": "Select",
"options": "\nActual\nOn Net Total\nOn Previous Row Amount\nOn Previous Row Total",
"permlevel": 0,
"fieldname": "charge_type",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Type",
"oldfieldname": "charge_type",
"oldfieldtype": "Select",
"options": "\nActual\nOn Net Total\nOn Previous Row Amount\nOn Previous Row Total",
"permlevel": 0,
"reqd": 1
},
},
{
"depends_on": "eval:[\"On Previous Row Amount\", \"On Previous Row Total\"].indexOf(doc.charge_type)!==-1",
"fieldname": "row_id",
"fieldtype": "Data",
"hidden": 0,
"label": "Reference Row #",
"oldfieldname": "row_id",
"oldfieldtype": "Data",
"depends_on": "eval:[\"On Previous Row Amount\", \"On Previous Row Total\"].indexOf(doc.charge_type)!==-1",
"fieldname": "row_id",
"fieldtype": "Data",
"hidden": 0,
"label": "Reference Row #",
"oldfieldname": "row_id",
"oldfieldtype": "Data",
"permlevel": 0
},
},
{
"fieldname": "description",
"fieldtype": "Small Text",
"in_list_view": 1,
"label": "Description",
"oldfieldname": "description",
"oldfieldtype": "Small Text",
"permlevel": 0,
"print_width": "300px",
"reqd": 1,
"fieldname": "description",
"fieldtype": "Small Text",
"in_list_view": 1,
"label": "Description",
"oldfieldname": "description",
"oldfieldtype": "Small Text",
"permlevel": 0,
"print_width": "300px",
"reqd": 1,
"width": "300px"
},
},
{
"fieldname": "col_break_1",
"fieldtype": "Column Break",
"permlevel": 0,
"fieldname": "col_break_1",
"fieldtype": "Column Break",
"permlevel": 0,
"width": "50%"
},
},
{
"fieldname": "account_head",
"fieldtype": "Link",
"in_list_view": 0,
"label": "Account Head",
"oldfieldname": "account_head",
"oldfieldtype": "Link",
"options": "Account",
"permlevel": 0,
"reqd": 1,
"fieldname": "account_head",
"fieldtype": "Link",
"in_list_view": 0,
"label": "Account Head",
"oldfieldname": "account_head",
"oldfieldtype": "Link",
"options": "Account",
"permlevel": 0,
"reqd": 1,
"search_index": 1
},
},
{
"default": ":Company",
"fieldname": "cost_center",
"fieldtype": "Link",
"in_list_view": 0,
"label": "Cost Center",
"oldfieldname": "cost_center_other_charges",
"oldfieldtype": "Link",
"options": "Cost Center",
"default": ":Company",
"fieldname": "cost_center",
"fieldtype": "Link",
"in_list_view": 0,
"label": "Cost Center",
"oldfieldname": "cost_center_other_charges",
"oldfieldtype": "Link",
"options": "Cost Center",
"permlevel": 0
},
},
{
"fieldname": "rate",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Rate",
"oldfieldname": "rate",
"oldfieldtype": "Currency",
"permlevel": 0,
"fieldname": "rate",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Rate",
"oldfieldname": "rate",
"oldfieldtype": "Currency",
"permlevel": 0,
"reqd": 1
},
},
{
"fieldname": "tax_amount",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Amount",
"oldfieldname": "tax_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"permlevel": 0,
"read_only": 1,
"fieldname": "tax_amount",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Amount",
"oldfieldname": "tax_amount",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"permlevel": 0,
"read_only": 1,
"reqd": 0
},
},
{
"fieldname": "total",
"fieldtype": "Currency",
"label": "Total",
"oldfieldname": "total",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"permlevel": 0,
"fieldname": "total",
"fieldtype": "Currency",
"label": "Total",
"oldfieldname": "total",
"oldfieldtype": "Currency",
"options": "Company:company:default_currency",
"permlevel": 0,
"read_only": 1
},
},
{
"allow_on_submit": 0,
"description": "If checked, the tax amount will be considered as already included in the Print Rate / Print Amount",
"fieldname": "included_in_print_rate",
"fieldtype": "Check",
"label": "Is this Tax included in Basic Rate?",
"no_copy": 0,
"permlevel": 0,
"print_hide": 1,
"print_width": "150px",
"report_hide": 1,
"allow_on_submit": 0,
"description": "If checked, the tax amount will be considered as already included in the Print Rate / Print Amount",
"fieldname": "included_in_print_rate",
"fieldtype": "Check",
"label": "Is this Tax included in Basic Rate?",
"no_copy": 0,
"permlevel": 0,
"print_hide": 1,
"print_width": "150px",
"report_hide": 1,
"width": "150px"
},
},
{
"fieldname": "tax_amount_after_discount_amount",
"fieldtype": "Currency",
"hidden": 1,
"label": "Tax Amount After Discount Amount",
"options": "Company:company:default_currency",
"permlevel": 0,
"depends_on": "eval:parent.discount_amount",
"fieldname": "tax_amount_after_discount_amount",
"fieldtype": "Currency",
"hidden": 0,
"label": "Tax Amount After Discount Amount",
"options": "Company:company:default_currency",
"permlevel": 0,
"read_only": 1
},
},
{
"fieldname": "item_wise_tax_detail",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Item Wise Tax Detail",
"oldfieldname": "item_wise_tax_detail",
"oldfieldtype": "Small Text",
"permlevel": 0,
"fieldname": "item_wise_tax_detail",
"fieldtype": "Small Text",
"hidden": 1,
"label": "Item Wise Tax Detail",
"oldfieldname": "item_wise_tax_detail",
"oldfieldtype": "Small Text",
"permlevel": 0,
"read_only": 1
},
},
{
"fieldname": "parenttype",
"fieldtype": "Data",
"hidden": 1,
"in_filter": 1,
"label": "Parenttype",
"oldfieldname": "parenttype",
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 1,
"fieldname": "parenttype",
"fieldtype": "Data",
"hidden": 1,
"in_filter": 1,
"label": "Parenttype",
"oldfieldname": "parenttype",
"oldfieldtype": "Data",
"permlevel": 0,
"print_hide": 1,
"search_index": 1
}
],
"hide_heading": 1,
"idx": 1,
"istable": 1,
"modified": "2014-05-30 03:43:39.740638",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Taxes and Charges",
"owner": "Administrator",
],
"hide_heading": 1,
"idx": 1,
"istable": 1,
"modified": "2014-12-10 12:26:41.222471",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Taxes and Charges",
"owner": "Administrator",
"permissions": []
}
}

View File

@@ -46,17 +46,17 @@ cur_frm.pformat.other_charges= function(doc){
var new_val = flt(val)/flt(doc.conversion_rate);
return new_val;
}
function print_hide(fieldname) {
var doc_field = frappe.meta.get_docfield(doc.doctype, fieldname, doc.name);
return doc_field.print_hide;
}
out ='';
if (!doc.print_without_amount) {
var cl = doc.other_charges || [];
// outer table
// outer table
var out='<div><table class="noborder" style="width:100%"><tr><td style="width: 60%"></td><td>';
// main table
@@ -77,12 +77,12 @@ cur_frm.pformat.other_charges= function(doc){
// Discount Amount
if(!print_hide('discount_amount') && doc.discount_amount)
out += make_row('Discount Amount', convert_rate(doc.discount_amount), 0);
out += make_row('Discount Amount', doc.discount_amount, 0);
// grand total
if(!print_hide('grand_total_export'))
out += make_row('Grand Total', doc.grand_total_export, 1);
if(!print_hide('rounded_total_export'))
out += make_row('Rounded Total', doc.rounded_total_export, 1);
@@ -92,7 +92,7 @@ cur_frm.pformat.other_charges= function(doc){
out += '<table><tr><td style="width:25%;"><b>In Words</b></td>';
out += '<td style="width:50%;">' + doc.in_words_export + '</td></tr>';
}
out += '</table></td></tr></table></div>';
out += '</table></td></tr></table></div>';
}
return out;
}
@@ -139,14 +139,14 @@ cur_frm.fields_dict['other_charges'].grid.get_field("account_head").get_query =
"account_type": ["Tax", "Chargeable", "Income Account"],
"company": doc.company
}
}
}
}
cur_frm.fields_dict['other_charges'].grid.get_field("cost_center").get_query = function(doc) {
return{
'company': doc.company,
'group_or_ledger': "Ledger"
}
}
}
cur_frm.cscript.rate = function(doc, cdt, cdn) {

View File

@@ -3,9 +3,9 @@
"doc_type": "Journal Voucher",
"docstatus": 0,
"doctype": "Print Format",
"html": "<div style=\"position: relative\">\n\n\t{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Advice\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n{%- for label, value in (\n (_(\"Voucher Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Reference / Cheque No.\"), doc.cheque_no),\n (_(\"Reference / Cheque Date\"), frappe.utils.formatdate(doc.cheque_date))\n ) -%}\n <div class=\"row\">\n <div class=\"col-sm-4\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-8\">{{ value }}</div>\n </div>\n{%- endfor -%}\n\t<hr>\n\t<p>{{ _(\"This amount is in full / part settlement of the listed bills\") }}:</p>\n{%- for label, value in (\n (_(\"Amount\"), \"<strong>\" + (doc.total_amount or \"\") + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"References\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-sm-4\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-8\">{{ value }}</div>\n </div>\n {%- endfor -%}\n <hr>\n\t<div style=\"position: absolute; top: 14cm; left: 0cm;\">\n\t\tPrepared By</div>\n\t<div style=\"position: absolute; top: 14cm; left: 5.5cm;\">\n\t\tAuthorised Signatory</div>\n\t<div style=\"position: absolute; top: 14cm; left: 11cm;\">\n\t\tReceived Payment as Above</div>\n\t<div style=\"position: absolute; top: 16.4cm; left: 5.9cm;\">\n\t\t<strong>_____________</strong></div>\n\t<div style=\"position: absolute; top: 16.7cm; left: 6cm;\">\n\t\t<strong>A/C Payee</strong></div>\n\t<div style=\"position: absolute; top: 16.7cm; left: 5.9cm;\">\n\t\t<strong>_____________</strong></div>\n\t<div style=\"position: absolute; top: 16.9cm; left: 12cm;\">\n\t\t{{ frappe.utils.formatdate(doc.cheque_date) }}</div>\n\t<div style=\"position: absolute; top: 17.9cm; left: 1cm;\">\n\t\t{{ doc.pay_to_recd_from }}</div>\n\t<div style=\"position: absolute; top: 18.6cm; left: 1cm; width: 7cm;\">\n\t\t{{ doc.total_amount_in_words }}</div>\n\t<div style=\"position: absolute; top: 19.7cm; left: 12cm;\">\n\t\t{{ doc.total_amount }}</div>\n</div>",
"html": "<div style=\"position: relative\">\n\n\t{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Advice\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n{%- for label, value in (\n (_(\"Voucher Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Reference / Cheque No.\"), doc.cheque_no),\n (_(\"Reference / Cheque Date\"), frappe.utils.formatdate(doc.cheque_date))\n ) -%}\n <div class=\"row\">\n <div class=\"col-xs-4\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-xs-8\">{{ value }}</div>\n </div>\n{%- endfor -%}\n\t<hr>\n\t<p>{{ _(\"This amount is in full / part settlement of the listed bills\") }}:</p>\n{%- for label, value in (\n (_(\"Amount\"), \"<strong>\" + (doc.total_amount or \"\") + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"References\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-xs-4\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-xs-8\">{{ value }}</div>\n </div>\n {%- endfor -%}\n <hr>\n\t<div style=\"position: absolute; top: 14cm; left: 0cm;\">\n\t\tPrepared By</div>\n\t<div style=\"position: absolute; top: 14cm; left: 5.5cm;\">\n\t\tAuthorised Signatory</div>\n\t<div style=\"position: absolute; top: 14cm; left: 11cm;\">\n\t\tReceived Payment as Above</div>\n\t<div style=\"position: absolute; top: 16.4cm; left: 5.9cm;\">\n\t\t<strong>_____________</strong></div>\n\t<div style=\"position: absolute; top: 16.7cm; left: 6cm;\">\n\t\t<strong>A/C Payee</strong></div>\n\t<div style=\"position: absolute; top: 16.7cm; left: 5.9cm;\">\n\t\t<strong>_____________</strong></div>\n\t<div style=\"position: absolute; top: 16.9cm; left: 12cm;\">\n\t\t{{ frappe.utils.formatdate(doc.cheque_date) }}</div>\n\t<div style=\"position: absolute; top: 17.9cm; left: 1cm;\">\n\t\t{{ doc.pay_to_recd_from }}</div>\n\t<div style=\"position: absolute; top: 18.6cm; left: 1cm; width: 7cm;\">\n\t\t{{ doc.total_amount_in_words }}</div>\n\t<div style=\"position: absolute; top: 19.7cm; left: 12cm;\">\n\t\t{{ doc.total_amount }}</div>\n</div>",
"idx": 1,
"modified": "2014-09-09 03:27:13.708596",
"modified": "2015-01-12 11:03:17.032512",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cheque Printing Format",

View File

@@ -4,9 +4,9 @@
"doc_type": "Journal Voucher",
"docstatus": 0,
"doctype": "Print Format",
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"<strong>\" + frappe.utils.cstr(doc.total_amount) + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n <div class=\"row\">\n <div class=\"col-sm-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n\n",
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Credit Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Credit To\"), doc.pay_to_recd_from),\n (_(\"Date\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Amount\"), \"<strong>\" + frappe.utils.cstr(doc.total_amount) + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n\n <div class=\"row\">\n <div class=\"col-xs-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-xs-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n\n",
"idx": 2,
"modified": "2014-10-17 17:20:02.740340",
"modified": "2015-01-12 11:02:25.716825",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Credit Note",

View File

@@ -1,15 +1,15 @@
{
"creation": "2012-05-01 12:46:31",
"doc_type": "Journal Voucher",
"docstatus": 0,
"doctype": "Print Format",
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Receipt Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Received On\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Received From\"), doc.pay_to_recd_from),\n (_(\"Amount\"), \"<strong>\" + doc.total_amount or 0 + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-sm-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-sm-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n",
"idx": 1,
"modified": "2014-11-04 11:25:57.560873",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Receipt Voucher",
"owner": "Administrator",
"print_format_type": "Server",
"creation": "2012-05-01 12:46:31",
"doc_type": "Journal Voucher",
"docstatus": 0,
"doctype": "Print Format",
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Receipt Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Received On\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Received From\"), doc.pay_to_recd_from),\n (_(\"Amount\"), \"<strong>\" + frappe.utils.cstr(doc.total_amount or 0) + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-xs-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-xs-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n",
"idx": 1,
"modified": "2015-01-16 11:03:22.893209",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Receipt Voucher",
"owner": "Administrator",
"print_format_type": "Server",
"standard": "Yes"
}
}

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

@@ -13,17 +13,17 @@ class AccountsReceivableReport(object):
self.age_as_on = getdate(nowdate()) \
if self.filters.report_date > getdate(nowdate()) \
else self.filters.report_date
def run(self):
customer_naming_by = frappe.db.get_value("Selling Settings", None, "cust_master_name")
return self.get_columns(customer_naming_by), self.get_data(customer_naming_by)
def get_columns(self, customer_naming_by):
columns = [
_("Posting Date") + ":Date:80", _("Account") + ":Link/Account:150",
_("Voucher Type") + "::110", _("Voucher No") + ":Dynamic Link/Voucher Type:120",
_("Due Date") + ":Date:80",
_("Invoiced Amount") + ":Currency:100", _("Payment Received") + ":Currency:100",
_("Due Date") + ":Date:80",
_("Invoiced Amount") + ":Currency:100", _("Payment Received") + ":Currency:100",
_("Outstanding Amount") + ":Currency:100", _("Age") + ":Int:50", "0-30:Currency:100",
"30-60:Currency:100", "60-90:Currency:100", _("90-Above") + ":Currency:100",
_("Customer") + ":Link/Customer:200"
@@ -69,27 +69,27 @@ class AccountsReceivableReport(object):
# returns a distinct list
return list(set([(e.voucher_type, e.voucher_no) for e in self.get_gl_entries()
if getdate(e.posting_date) > report_date]))
def get_entries_till(self, report_date):
# returns a generator
return (e for e in self.get_gl_entries()
return (e for e in self.get_gl_entries()
if getdate(e.posting_date) <= report_date)
def is_receivable(self, gle, future_vouchers):
return (
# advance
(not gle.against_voucher) or
(not gle.against_voucher) or
# against sales order
(gle.against_voucher_type == "Sales Order") or
# sales invoice
(gle.against_voucher==gle.voucher_no and gle.debit > 0) or
(gle.against_voucher==gle.voucher_no and gle.debit > 0) or
# entries adjusted with future vouchers
((gle.against_voucher_type, gle.against_voucher) in future_vouchers)
)
def get_outstanding_amount(self, gle, report_date):
payment_received = 0.0
for e in self.get_gl_entries_for(gle.account, gle.voucher_type, gle.voucher_no):
@@ -97,7 +97,7 @@ class AccountsReceivableReport(object):
payment_received += (flt(e.credit) - flt(e.debit))
return flt(gle.debit) - flt(gle.credit) - payment_received
def get_customer(self, account):
return self.get_account_map().get(account, {}).get("customer") or ""
@@ -106,25 +106,25 @@ class AccountsReceivableReport(object):
def get_territory(self, account):
return self.get_account_map().get(account, {}).get("territory") or ""
def get_account_map(self):
if not hasattr(self, "account_map"):
self.account_map = dict(((r.name, r) for r in frappe.db.sql("""select
self.account_map = dict(((r.name, r) for r in frappe.db.sql("""select
acc.name, cust.name as customer, cust.customer_name, cust.territory
from `tabAccount` acc left join `tabCustomer` cust
from `tabAccount` acc left join `tabCustomer` cust
on cust.name=acc.master_name where acc.master_type="Customer" """, as_dict=True)))
return self.account_map
def get_due_date(self, gle):
if not hasattr(self, "invoice_due_date_map"):
# TODO can be restricted to posting date
self.invoice_due_date_map = dict(frappe.db.sql("""select name, due_date
from `tabSales Invoice` where docstatus=1"""))
return gle.voucher_type == "Sales Invoice" \
and self.invoice_due_date_map.get(gle.voucher_no) or ""
def get_gl_entries(self):
if not hasattr(self, "gl_entries"):
conditions, values = self.prepare_conditions()
@@ -132,15 +132,15 @@ class AccountsReceivableReport(object):
where docstatus < 2 {0} order by posting_date, account""".format(conditions),
values, as_dict=True)
return self.gl_entries
def prepare_conditions(self):
conditions = [""]
values = {}
if self.filters.company:
conditions.append("company=%(company)s")
values["company"] = self.filters.company
if self.filters.account:
conditions.append("account=%(account)s")
values["account"] = self.filters.account
@@ -149,11 +149,11 @@ class AccountsReceivableReport(object):
if not account_map:
frappe.throw(_("No Customer Accounts found."))
else:
accounts_list = ['"{0}"'.format(ac) for ac in account_map]
accounts_list = ["'{0}'".format(frappe.db.escape(ac)) for ac in account_map]
conditions.append("account in ({0})".format(", ".join(accounts_list)))
return " and ".join(conditions), values
def get_gl_entries_for(self, account, against_voucher_type, against_voucher):
if not hasattr(self, "gl_entries_map"):
self.gl_entries_map = {}
@@ -163,7 +163,7 @@ class AccountsReceivableReport(object):
.setdefault(gle.against_voucher_type, {})\
.setdefault(gle.against_voucher, [])\
.append(gle)
return self.gl_entries_map.get(account, {})\
.get(against_voucher_type, {})\
.get(against_voucher, [])
@@ -176,15 +176,15 @@ def get_ageing_data(age_as_on, entry_date, outstanding_amount):
outstanding_range = [0.0, 0.0, 0.0, 0.0]
if not (age_as_on and entry_date):
return [0] + outstanding_range
age = (getdate(age_as_on) - getdate(entry_date)).days or 0
index = None
for i, days in enumerate([30, 60, 90]):
if age <= days:
index = i
break
if index is None: index = 3
outstanding_range[index] = outstanding_amount
return [age] + outstanding_range

View File

@@ -28,7 +28,7 @@ def get_fiscal_years(date=None, fiscal_year=None, label="Date", verbose=1):
from `tabFiscal Year` where %s order by year_start_date desc""" % cond)
if not fy:
error_msg = _("""{0} {1} not in any Fiscal Year""").format(label, formatdate(date))
error_msg = _("""{0} {1} not in any Fiscal Year. For more details check {2}.""").format(label, formatdate(date), "https://erpnext.com/kb/accounts/fiscal-year-error")
if verbose: frappe.msgprint(error_msg)
raise FiscalYearError, error_msg

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() {
@@ -211,7 +211,8 @@ erpnext.buying.BuyingController = erpnext.TransactionController.extend({
var tax_count = this.frm.tax_doclist.length;
this.frm.doc.grand_total = flt(tax_count ?
this.frm.tax_doclist[tax_count - 1].total : this.frm.doc.net_total);
this.frm.doc.grand_total_import = flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate);
this.frm.doc.grand_total_import = flt(tax_count ?
flt(this.frm.doc.grand_total / this.frm.doc.conversion_rate) : this.frm.doc.net_total_import);
this.frm.doc.total_tax = flt(this.frm.doc.grand_total - this.frm.doc.net_total,
precision("total_tax"));

View File

@@ -685,7 +685,8 @@
"label": "Recurring Type",
"no_copy": 1,
"options": "Monthly\nQuarterly\nHalf-yearly\nYearly",
"permlevel": 0
"permlevel": 0,
"print_hide": 1
},
{
"allow_on_submit": 1,
@@ -695,7 +696,8 @@
"fieldtype": "Date",
"label": "From Date",
"no_copy": 1,
"permlevel": 0
"permlevel": 0,
"print_hide": 1
},
{
"allow_on_submit": 1,
@@ -705,7 +707,8 @@
"fieldtype": "Date",
"label": "To Date",
"no_copy": 1,
"permlevel": 0
"permlevel": 0,
"print_hide": 1
},
{
"allow_on_submit": 1,
@@ -772,7 +775,7 @@
"icon": "icon-file-text",
"idx": 1,
"is_submittable": 1,
"modified": "2014-10-08 14:23:29.718779",
"modified": "2014-11-27 17:27:38.839440",
"modified_by": "Administrator",
"module": "Buying",
"name": "Purchase Order",

View File

@@ -119,6 +119,10 @@ class AccountsController(TransactionBase):
item.get(fieldname) is None and value is not None:
item.set(fieldname, value)
if fieldname == "cost_center" and item.meta.get_field("cost_center") \
and not item.get("cost_center") and value is not None:
item.set(fieldname, value)
if ret.get("pricing_rule"):
for field in ["base_price_list_rate", "price_list_rate",
"discount_percentage", "base_rate", "rate"]:
@@ -291,7 +295,7 @@ class AccountsController(TransactionBase):
self.precision("tax_amount", tax))
def adjust_discount_amount_loss(self, tax):
discount_amount_loss = self.grand_total - flt(self.discount_amount) - tax.total
discount_amount_loss = self.grand_total - flt(self.base_discount_amount) - tax.total
tax.tax_amount_after_discount_amount = flt(tax.tax_amount_after_discount_amount +
discount_amount_loss, self.precision("tax_amount", tax))
tax.total = flt(tax.total + discount_amount_loss, self.precision("total", tax))
@@ -437,7 +441,7 @@ class AccountsController(TransactionBase):
for order, jv_list in order_jv_map.items():
for jv in jv_list:
if not advance_jv_against_si or jv not in advance_jv_against_si:
frappe.throw(_("Journal Voucher {0} is linked against Order {1}, hence it must be fetched as advance in Invoice as well.")
frappe.msgprint(_("Journal Voucher {0} is linked against Order {1}, check if it should be pulled as advance in this invoice.")
.format(jv, order))
@@ -467,7 +471,7 @@ class AccountsController(TransactionBase):
max_allowed_amt = flt(ref_amt * (100 + tolerance) / 100)
if total_billed_amt - max_allowed_amt > 0.01:
frappe.throw(_("Cannot overbill for Item {0} in row {0} more than {1}. To allow overbilling, please set in Stock Settings").format(item.item_code, item.idx, max_allowed_amt))
frappe.throw(_("Cannot overbill for Item {0} in row {1} more than {2}. To allow overbilling, please set in Stock Settings").format(item.item_code, item.idx, max_allowed_amt))
def get_company_default(self, fieldname):
from erpnext.accounts.utils import get_company_default

View File

@@ -111,7 +111,8 @@ class BuyingController(StockController):
def calculate_totals(self):
self.grand_total = flt(self.tax_doclist[-1].total if self.tax_doclist else self.net_total)
self.grand_total_import = flt(self.grand_total / self.conversion_rate)
self.grand_total_import = flt(self.grand_total / self.conversion_rate) \
if self.tax_doclist else self.net_total_import
self.total_tax = flt(self.grand_total - self.net_total, self.precision("total_tax"))

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

@@ -233,16 +233,20 @@ class SellingController(StockController):
def apply_discount_amount(self):
if self.discount_amount:
self.base_discount_amount = flt(self.discount_amount * self.conversion_rate, self.precision("base_discount_amount"))
grand_total_for_discount_amount = self.get_grand_total_for_discount_amount()
if grand_total_for_discount_amount:
# calculate item amount after Discount Amount
for item in self.item_doclist:
distributed_amount = flt(self.discount_amount) * item.base_amount / grand_total_for_discount_amount
distributed_amount = flt(self.base_discount_amount) * item.base_amount / grand_total_for_discount_amount
item.base_amount = flt(item.base_amount - distributed_amount, self.precision("base_amount", item))
self.discount_amount_applied = True
self._calculate_taxes_and_totals()
else:
self.base_discount_amount = 0
def get_grand_total_for_discount_amount(self):
actual_taxes_dict = {}

View File

@@ -167,7 +167,7 @@ class StockController(AccountsController):
else:
is_expense_account = frappe.db.get_value("Account",
item.get("expense_account"), "report_type")=="Profit and Loss"
if self.doctype not in ("Purchase Receipt", "Stock Reconciliation") and not is_expense_account:
if self.doctype not in ("Purchase Receipt", "Stock Reconciliation", "Stock Entry") and not is_expense_account:
frappe.throw(_("Expense / Difference account ({0}) must be a 'Profit or Loss' account")
.format(item.get("expense_account")))
if is_expense_account and not item.get("cost_center"):
@@ -245,7 +245,7 @@ def compare_existing_and_expected_gle(existing_gle, expected_gle):
for entry in expected_gle:
for e in existing_gle:
if entry.account==e.account and entry.against_account==e.against_account \
and entry.cost_center==e.cost_center \
and (not entry.cost_center or not e.cost_center or entry.cost_center==e.cost_center) \
and (entry.debit != e.debit or entry.credit != e.credit):
matched = False
break

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.12.0"
app_version = "4.18.1"
error_report_email = "support@erpnext.com"

View File

@@ -33,7 +33,7 @@ cur_frm.cscript.refresh = function(doc, dt, dn) {
cur_frm.set_intro(__("You are the Leave Approver for this record. Please Update the 'Status' and Save"));
cur_frm.toggle_enable("status", true);
} else {
cur_frm.set_intro(__("This Leave Application is pending approval. Only the Leave Apporver can update status."))
cur_frm.set_intro(__("This Leave Application is pending approval. Only the Leave Approver can update status."))
cur_frm.toggle_enable("status", false);
if(!doc.__islocal) {
cur_frm.frm_head.appframe.set_title_right("");
@@ -118,3 +118,18 @@ cur_frm.cscript.calculate_total_days = function(doc, dt, dn) {
}
cur_frm.fields_dict.employee.get_query = erpnext.queries.employee;
frappe.ui.form.on("Leave Application", "leave_approver", function(frm) {
frappe.call({
"method": "frappe.client.get",
args: {
doctype: "User",
name: frm.doc.leave_approver
},
callback: function (data) {
frappe.model.set_value(frm.doctype, frm.docname, "leave_approver_name",
data.message.first_name
+ (data.message.last_name ? (" " + data.message.last_name) : ""))
}
})
})

View File

@@ -24,6 +24,13 @@
"options": "User",
"permlevel": 0
},
{
"fieldname": "leave_approver_name",
"fieldtype": "Read Only",
"label": "Leave Approver Name",
"permlevel": 0,
"precision": ""
},
{
"fieldname": "leave_type",
"fieldtype": "Link",
@@ -184,7 +191,7 @@
"idx": 1,
"is_submittable": 1,
"max_attachments": 3,
"modified": "2014-09-09 05:35:31.531651",
"modified": "2014-12-09 16:33:29.626849",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Application",

View File

@@ -203,15 +203,15 @@ class LeaveApplication(Document):
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))
and h1.holiday_date between %s and %s""", (leave_app.employee, leave_app.from_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.
tot_hol=tot_hol and flt(tot_hol[0][0]) or 0
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 flt(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

@@ -8,6 +8,8 @@ from frappe.utils import cint, cstr, flt
from frappe import _
from frappe.model.document import Document
from operator import itemgetter
class BOM(Document):
def autoname(self):
@@ -57,6 +59,9 @@ class BOM(Document):
last_purchase_rate, is_manufactured_item
from `tabItem` where name=%s""", item_code, as_dict = 1)
if not item:
frappe.throw(_("Item: {0} does not exist in the system").format(item_code))
return item
def validate_rm_item(self, item):
@@ -285,7 +290,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
@@ -354,7 +362,7 @@ class BOM(Document):
"Add items to Flat BOM table"
frappe.db.sql("""delete from `tabBOM Explosion Item` where parent=%s""", self.name)
self.set('flat_bom_details', [])
for d in self.cur_exploded_items:
for d in sorted(self.cur_exploded_items, key=itemgetter(0)):
ch = self.append('flat_bom_details', {})
for i in self.cur_exploded_items[d].keys():
ch.set(i, self.cur_exploded_items[d][i])

View File

@@ -10,7 +10,7 @@ from erpnext.manufacturing.doctype.production_order.production_order import make
from erpnext.stock.doctype.stock_entry import test_stock_entry
class TestProductionOrder(unittest.TestCase):
def test_planned_qty(self):
def check_planned_qty(self):
set_perpetual_inventory(0)
planned0 = frappe.db.get_value("Bin", {"item_code": "_Test FG Item", "warehouse": "_Test Warehouse 1 - _TC"}, "planned_qty") or 0
@@ -27,11 +27,15 @@ class TestProductionOrder(unittest.TestCase):
s = frappe.get_doc(make_stock_entry(pro_doc.name, "Material Transfer", 4))
for d in s.get("mtn_details"):
d.s_warehouse = "Stores - _TC"
s.fiscal_year = "_Test Fiscal Year 2013"
s.posting_date = "2013-01-02"
s.insert()
s.submit()
# from wip to fg
s = frappe.get_doc(make_stock_entry(pro_doc.name, "Manufacture", 4))
s.fiscal_year = "_Test Fiscal Year 2013"
s.posting_date = "2013-01-03"
s.insert()
s.submit()
@@ -44,12 +48,14 @@ class TestProductionOrder(unittest.TestCase):
def test_over_production(self):
from erpnext.manufacturing.doctype.production_order.production_order import StockOverProductionError
pro_doc = self.test_planned_qty()
pro_doc = self.check_planned_qty()
test_stock_entry.make_stock_entry("_Test Item", None, "_Test Warehouse - _TC", 100, 100)
test_stock_entry.make_stock_entry("_Test Item Home Desktop 100", None, "_Test Warehouse - _TC", 100, 100)
s = frappe.get_doc(make_stock_entry(pro_doc.name, "Manufacture", 7))
s.fiscal_year = "_Test Fiscal Year 2013"
s.posting_date = "2013-01-04"
s.insert()
self.assertRaises(StockOverProductionError, s.submit)

View File

@@ -24,6 +24,13 @@ cur_frm.cscript.item_code = function(doc,cdt,cdn) {
}
}
cur_frm.cscript.raise_purchase_request = function(doc, cdt, cdn) {
return frappe.call({
method: "raise_purchase_request",
doc:doc
})
}
cur_frm.cscript.download_materials_required = function(doc, cdt, cdn) {
return $c_obj(doc, 'validate_data', '', function(r, rt) {
if (!r['exc'])

View File

@@ -1,5 +1,5 @@
{
"creation": "2013-01-21 12:03:47.000000",
"creation": "2013-01-21 12:03:47",
"default_print_format": "Standard",
"docstatus": 0,
"doctype": "DocType",
@@ -20,6 +20,7 @@
{
"fieldname": "fg_item",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Filter based on item",
"options": "Item",
"permlevel": 0
@@ -27,6 +28,7 @@
{
"fieldname": "customer",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Filter based on customer",
"options": "Customer",
"permlevel": 0
@@ -34,6 +36,7 @@
{
"fieldname": "company",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Company",
"options": "Company",
"permlevel": 0,
@@ -140,7 +143,7 @@
"fieldname": "raise_purchase_request",
"fieldtype": "Button",
"label": "Create Material Requests",
"options": "raise_purchase_request",
"options": "",
"permlevel": 0
},
{
@@ -155,7 +158,7 @@
"idx": 1,
"in_create": 1,
"issingle": 1,
"modified": "2013-12-20 19:23:25.000000",
"modified": "2015-01-11 21:53:21.253556",
"modified_by": "Administrator",
"module": "Manufacturing",
"name": "Production Planning Tool",

View File

@@ -89,3 +89,5 @@ 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
erpnext.patches.v4_2.discount_amount

View File

@@ -6,6 +6,7 @@ import frappe
def execute():
reference_date = guess_reference_date()
frappe.reload_doc('accounts', 'doctype', 'journal_voucher_detail')
for name in frappe.db.sql_list("""select name from `tabJournal Voucher`
where date(creation)>=%s""", reference_date):
jv = frappe.get_doc("Journal Voucher", name)

View File

@@ -0,0 +1,12 @@
# 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
from frappe.modules import scrub, get_doctype_module
def execute():
for dt in ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"]:
frappe.reload_doc(get_doctype_module(dt), "doctype", scrub(dt))
frappe.db.sql("""update `tab{0}` set base_discount_amount=discount_amount,
discount_amount=discount_amount/conversion_rate""".format(dt))

View File

@@ -0,0 +1,19 @@
# 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():
frappe.reload_doc('manufacturing', 'doctype', 'bom_operation')
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

@@ -16,6 +16,15 @@ class TestTimeLog(unittest.TestCase):
self.assertRaises(OverlapError, ts.insert)
frappe.db.sql("delete from `tabTime Log`")
def test_negative_hours(self):
frappe.db.sql("delete from `tabTime Log`")
test_time_log = frappe.new_doc("Time Log")
test_time_log.activity_type = "Communication"
test_time_log.from_time = "2013-01-01 11:00:00.000000"
test_time_log.to_time = "2013-01-01 10:00:00.000000"
self.assertRaises(frappe.ValidationError, test_time_log.save)
frappe.db.sql("delete from `tabTime Log`")
test_records = frappe.get_test_records('Time Log')
test_ignore = ["Time Log Batch", "Sales Invoice"]

View File

@@ -19,10 +19,12 @@ class TimeLog(Document):
self.set_status()
self.validate_overlap()
self.calculate_total_hours()
def calculate_total_hours(self):
from frappe.utils import time_diff_in_hours
self.hours = time_diff_in_hours(self.to_time, self.from_time)
if self.hours < 0:
frappe.throw(_("'From Time' cannot be later than 'To Time'"))
def set_status(self):
self.status = {

View File

@@ -108,6 +108,7 @@ erpnext.StockAnalytics = erpnext.StockGridReport.extend({
// otherwise, only reset values
$.each(this.data, function(i, d) {
me.reset_item_values(d);
d["closing_qty_value"] = 0;
});
}

View File

@@ -14,8 +14,11 @@
{% if(contact_list[i].phone) { %}
{%= __("Phone") %}: {%= contact_list[i].phone %}<br>
{% } %}
{% if(contact_list[i].mobile_no) { %}
{%= __("Mobile No.") %}: {%= contact_list[i].mobile_no %}<br>
{% } %}
{% if(contact_list[i].email_id) { %}
{%= __("Email Id") %}: {%= contact_list[i].email_id %}
{%= __("Email ID") %}: {%= contact_list[i].email_id %}
{% } %}
</p>
</div>

View File

@@ -402,20 +402,32 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
},
_set_values_for_item_list: function(children) {
var me = this;
var price_list_rate_changed = false;
$.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) {
if(k=="price_list_rate") {
if(flt(v) != flt(d.price_list_rate)) price_list_rate_changed = true;
}
frappe.model.set_value(d.doctype, d.name, k, v);
}
});
// if pricing rule set as blank from an existing value, apply price_list
if(!me.frm.doc.ignore_pricing_rule && existing_pricing_rule && !d.pricing_rule) {
me.apply_price_list(frappe.get_doc(d.doctype, d.name));
}
if(!price_list_rate_changed) me.calculate_taxes_and_totals();
});
},
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;
@@ -722,7 +734,7 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
},
adjust_discount_amount_loss: function(tax) {
var discount_amount_loss = this.frm.doc.grand_total - flt(this.frm.doc.discount_amount) - tax.total;
var discount_amount_loss = this.frm.doc.grand_total - flt(this.frm.doc.base_discount_amount) - tax.total;
tax.tax_amount_after_discount_amount = flt(tax.tax_amount_after_discount_amount +
discount_amount_loss, precision("tax_amount", tax));
tax.total = flt(tax.total + discount_amount_loss, precision("total", tax));
@@ -736,8 +748,7 @@ erpnext.TransactionController = erpnext.stock.StockController.extend({
// distribute the tax amount proportionally to each item row
var actual = flt(tax.rate, precision("tax_amount", tax));
current_tax_amount = this.frm.doc.net_total ?
((item.base_amount / this.frm.doc.net_total) * actual) :
0.0;
((item.base_amount / this.frm.doc.net_total) * actual) : 0.0;
} else if(tax.charge_type == "On Net Total") {
current_tax_amount = (tax_rate / 100.0) * item.base_amount;

View File

@@ -160,7 +160,7 @@
"allow_on_submit": 0,
"description": "Add to calendar on this date",
"fieldname": "contact_date",
"fieldtype": "Date",
"fieldtype": "Datetime",
"in_filter": 1,
"label": "Next Contact Date",
"no_copy": 1,
@@ -368,7 +368,7 @@
],
"icon": "icon-user",
"idx": 1,
"modified": "2014-08-12 05:22:18.801092",
"modified": "2014-12-01 08:22:23.286314",
"modified_by": "Administrator",
"module": "Selling",
"name": "Lead",

View File

@@ -45,6 +45,7 @@ class Lead(SellingController):
def add_calendar_event(self, opts=None, force=False):
super(Lead, self).add_calendar_event({
"owner": self.lead_owner,
"starts_on": self.contact_date,
"subject": ('Contact ' + cstr(self.lead_name)),
"description": ('Contact ' + cstr(self.lead_name)) + \
(self.contact_by and ('. By : ' + cstr(self.contact_by)) or '')

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",
@@ -372,7 +373,7 @@
{
"description": "Your sales person will get a reminder on this date to contact the customer",
"fieldname": "contact_date",
"fieldtype": "Date",
"fieldtype": "Datetime",
"label": "Next Contact Date",
"oldfieldname": "contact_date",
"oldfieldtype": "Date",
@@ -416,7 +417,7 @@
"icon": "icon-info-sign",
"idx": 1,
"is_submittable": 1,
"modified": "2014-08-12 05:21:51.282397",
"modified": "2014-12-19 10:49:20.695720",
"modified_by": "Administrator",
"module": "Selling",
"name": "Opportunity",

View File

@@ -57,6 +57,7 @@ class Opportunity(TransactionBase):
opts = frappe._dict()
opts.description = ""
opts.contact_date = self.contact_date
if self.customer:
if self.contact_person:

View File

@@ -5,6 +5,8 @@
"enquiry_from": "Lead",
"enquiry_type": "Sales",
"lead": "_T-Lead-00001",
"transaction_date": "2013-12-12",
"fiscal_year": "_Test Fiscal Year 2013",
"enquiry_details": [{
"item_name": "Test Item",
"description": "Some description"

View File

@@ -405,6 +405,15 @@
"fieldtype": "Section Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total_export",
"fieldtype": "Currency",
"label": "Taxes and Charges Total",
"options": "currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "other_charges_total",
"fieldtype": "Currency",
@@ -421,22 +430,23 @@
"fieldtype": "Column Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total_export",
"fieldtype": "Currency",
"label": "Taxes and Charges Total",
"options": "currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount",
"options": "Company:company:default_currency",
"options": "currency",
"permlevel": 0
},
{
"fieldname": "base_discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount (Company Currency)",
"options": "Company:company:default_currency",
"permlevel": 0,
"precision": "",
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "totals",
"fieldtype": "Section Break",
@@ -832,7 +842,7 @@
"idx": 1,
"is_submittable": 1,
"max_attachments": 1,
"modified": "2014-09-09 05:35:33.413559",
"modified": "2015-01-12 16:57:14.706270",
"modified_by": "Administrator",
"module": "Selling",
"name": "Quotation",

View File

@@ -175,6 +175,7 @@
"fieldtype": "Data",
"hidden": 0,
"label": "PO No",
"no_copy": 0,
"oldfieldname": "po_no",
"oldfieldtype": "Data",
"permlevel": 0,
@@ -419,11 +420,6 @@
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "column_break_46",
"fieldtype": "Column Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total",
"fieldtype": "Currency",
@@ -436,12 +432,28 @@
"read_only": 1,
"width": "150px"
},
{
"fieldname": "column_break_46",
"fieldtype": "Column Break",
"permlevel": 0
},
{
"fieldname": "discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount",
"options": "currency",
"permlevel": 0,
"print_hide": 0
},
{
"fieldname": "base_discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount (Company Currency)",
"options": "Company:company:default_currency",
"permlevel": 0
"permlevel": 0,
"precision": "",
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "totals",
@@ -489,14 +501,6 @@
"read_only": 1,
"width": "200px"
},
{
"fieldname": "advance_paid",
"fieldtype": "Currency",
"label": "Advance Paid",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "column_break3",
"fieldtype": "Column Break",
@@ -541,6 +545,15 @@
"read_only": 1,
"width": "200px"
},
{
"fieldname": "advance_paid",
"fieldtype": "Currency",
"label": "Advance Paid",
"options": "Company:company:default_currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "view_details",
"fieldtype": "Fold",
@@ -1020,7 +1033,7 @@
"idx": 1,
"is_submittable": 1,
"issingle": 0,
"modified": "2014-10-08 14:22:44.717108",
"modified": "2015-01-12 15:16:51.611467",
"modified_by": "Administrator",
"module": "Selling",
"name": "Sales Order",

View File

@@ -157,7 +157,7 @@ class SalesOrder(SellingController):
self.check_credit(self.grand_total)
frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype, self.grand_total, self)
frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype, self.company, self.grand_total, self)
self.update_prevdoc_status('submit')
frappe.db.set(self, 'status', 'Submitted')
@@ -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")
@@ -357,17 +365,6 @@ def make_sales_invoice(source_name, target_doc=None):
}
}, target_doc, postprocess)
def set_advance_vouchers(source, target):
advance_voucher_list = []
advance_voucher = frappe.db.sql("""
select
t1.name as voucher_no, t1.posting_date, t1.remark, t2.account,
t2.name as voucher_detail_no, {amount_query} as payment_amount, t2.is_advance
from
`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
""")
return doclist
@frappe.whitelist()

View File

@@ -362,17 +362,22 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
var distributed_amount = 0.0;
if (this.frm.doc.discount_amount) {
this.frm.set_value("base_discount_amount",
flt(this.frm.doc.discount_amount * this.frm.doc.conversion_rate, precision("base_discount_amount")))
var grand_total_for_discount_amount = this.get_grand_total_for_discount_amount();
// calculate item amount after Discount Amount
if (grand_total_for_discount_amount) {
$.each(this.frm.item_doclist, function(i, item) {
distributed_amount = flt(me.frm.doc.discount_amount) * item.base_amount / grand_total_for_discount_amount;
distributed_amount = flt(me.frm.doc.base_discount_amount) * item.base_amount / grand_total_for_discount_amount;
item.base_amount = flt(item.base_amount - distributed_amount, precision("base_amount", item));
});
this.discount_amount_applied = true;
this._calculate_taxes_and_totals();
}
} else {
this.frm.set_value("base_discount_amount", 0);
}
},
@@ -506,12 +511,12 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
}
});
};
setup_field_label_map(["net_total", "other_charges_total", "grand_total",
setup_field_label_map(["net_total", "other_charges_total", "base_discount_amount", "grand_total",
"rounded_total", "in_words",
"outstanding_amount", "total_advance", "paid_amount", "write_off_amount"],
company_currency);
setup_field_label_map(["net_total_export", "other_charges_total_export", "grand_total_export",
setup_field_label_map(["net_total_export", "other_charges_total_export", "discount_amount", "grand_total_export",
"rounded_total_export", "in_words_export"], this.frm.doc.currency);
cur_frm.set_df_property("conversion_rate", "description", "1 " + this.frm.doc.currency
@@ -524,7 +529,7 @@ erpnext.selling.SellingController = erpnext.TransactionController.extend({
// toggle fields
this.frm.toggle_display(["conversion_rate", "net_total", "other_charges_total",
"grand_total", "rounded_total", "in_words"],
"grand_total", "rounded_total", "in_words", "base_discount_amount"],
this.frm.doc.currency != company_currency);
this.frm.toggle_display(["plc_conversion_rate", "price_list_currency"],

View File

@@ -98,9 +98,12 @@ class AuthorizationControl(TransactionBase):
if doc_obj:
price_list_rate, base_rate = 0, 0
for d in doc_obj.get(doc_obj.fname):
if d.base_price_list_rate and d.base_rate:
price_list_rate += flt(d.base_price_list_rate)
if d.base_rate:
price_list_rate += flt(d.base_price_list_rate) or flt(d.base_rate)
base_rate += flt(d.base_rate)
if doc_obj.get("discount_amount"):
base_rate -= flt(doc_obj.discount_amount)
if price_list_rate: av_dis = 100 - flt(base_rate * 100 / price_list_rate)
final_based_on = ['Grand Total','Average Discount','Customerwise Discount','Itemwise Discount']

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,7 +178,7 @@
{
"fieldname": "po_no",
"fieldtype": "Data",
"hidden": 1,
"hidden": 0,
"label": "Customer's Purchase Order No",
"no_copy": 0,
"oldfieldname": "po_no",
@@ -434,6 +434,15 @@
"fieldtype": "Section Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total_export",
"fieldtype": "Currency",
"label": "Taxes and Charges Total",
"options": "Company:company:default_currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "other_charges_total",
"fieldtype": "Currency",
@@ -452,22 +461,23 @@
"fieldtype": "Column Break",
"permlevel": 0
},
{
"fieldname": "other_charges_total_export",
"fieldtype": "Currency",
"label": "Taxes and Charges Total",
"options": "Company:company:default_currency",
"permlevel": 0,
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount",
"options": "Company:company:default_currency",
"options": "currency",
"permlevel": 0
},
{
"fieldname": "base_discount_amount",
"fieldtype": "Currency",
"label": "Discount Amount (Company Currency)",
"options": "Company:company:default_currency",
"permlevel": 0,
"precision": "",
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "totals",
"fieldtype": "Section Break",
@@ -1013,7 +1023,7 @@
"idx": 1,
"in_create": 0,
"is_submittable": 1,
"modified": "2014-09-09 05:35:30.700911",
"modified": "2015-01-12 16:56:39.975961",
"modified_by": "Administrator",
"module": "Stock",
"name": "Delivery Note",

View File

@@ -229,7 +229,7 @@ class Item(WebsiteGenerator):
if not frappe.db.exists("Item", newdn):
frappe.throw(_("Item {0} does not exist").format(newdn))
field_list = ["stock_uom", "is_stock_item", "has_serial_no", "has_batch_no"]
field_list = ["stock_uom", "is_stock_item", "has_serial_no", "has_batch_no", "is_manufactured_item"]
new_properties = [cstr(d) for d in frappe.db.get_value("Item", newdn, field_list)]
if new_properties != [cstr(self.get(fld)) for fld in field_list]:
frappe.throw(_("To merge, following properties must be same for both items")

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

@@ -45,7 +45,6 @@ class StockEntry(StockController):
self.validate_warehouse(pro_obj)
self.validate_production_order()
self.get_stock_and_rate()
self.validate_incoming_rate()
self.validate_bom()
self.validate_finished_goods()
self.validate_return_reference_doc()
@@ -190,16 +189,10 @@ class StockEntry(StockController):
+ self.production_order + ":" + ", ".join(other_ste), DuplicateEntryForProductionOrderError)
def validate_valuation_rate(self):
if self.purpose in ["Manufacture", "Repack"]:
valuation_at_source, valuation_at_target = 0, 0
for d in self.get("mtn_details"):
if d.s_warehouse and not d.t_warehouse:
valuation_at_source += flt(d.amount)
if d.t_warehouse and not d.s_warehouse:
valuation_at_target += flt(d.amount)
for d in self.get('mtn_details'):
if d.t_warehouse:
self.validate_value("incoming_rate", ">", 0, d, raise_exception=IncorrectValuationRateError)
if valuation_at_target < valuation_at_source:
frappe.throw(_("Total valuation for manufactured or repacked item(s) can not be less than total valuation of raw materials"))
def set_total_amount(self):
self.total_amount = sum([flt(item.amount) for item in self.get("mtn_details")])
@@ -241,7 +234,7 @@ class StockEntry(StockController):
incoming_rate = flt(self.get_incoming_rate(args), self.precision("incoming_rate", d))
if incoming_rate > 0:
d.incoming_rate = incoming_rate
d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
d.amount = flt(flt(d.transfer_qty) * flt(d.incoming_rate), self.precision("amount", d))
if not d.t_warehouse:
raw_material_cost += flt(d.amount)
@@ -255,8 +248,9 @@ class StockEntry(StockController):
if d.bom_no:
bom = frappe.db.get_value("BOM", d.bom_no, ["operating_cost", "quantity"], as_dict=1)
operation_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity)
d.incoming_rate = operation_cost_per_unit + (raw_material_cost + flt(self.total_fixed_cost)) / flt(d.transfer_qty)
d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
d.incoming_rate = flt(operation_cost_per_unit +
(raw_material_cost + flt(self.total_fixed_cost)) / flt(d.transfer_qty), self.precision("incoming_rate", d))
d.amount = flt(flt(d.transfer_qty) * flt(d.incoming_rate), self.precision("transfer_qty", d))
break
def get_incoming_rate(self, args):
@@ -280,11 +274,6 @@ class StockEntry(StockController):
return incoming_rate
def validate_incoming_rate(self):
for d in self.get('mtn_details'):
if d.t_warehouse:
self.validate_value("incoming_rate", ">", 0, d, raise_exception=IncorrectValuationRateError)
def validate_bom(self):
for d in self.get('mtn_details'):
if d.bom_no and not frappe.db.sql("""select name from `tabBOM`

View File

@@ -936,6 +936,8 @@ def make_stock_entry(item, source, target, qty, incoming_rate=None):
"incoming_rate": incoming_rate,
"conversion_factor": 1.0
})
s.posting_date= "2013-01-01"
s.fiscal_year= "_Test Fiscal Year 2013"
s.insert()
s.submit()
return s

View File

@@ -39,8 +39,8 @@ class StockLedgerEntry(Document):
(self.warehouse, self.item_code, self.batch_no))[0][0])
if batch_bal_after_transaction < 0:
frappe.throw(_("Negative balance in Batch {0} for Item {1} at Warehouse {2} on {3} {4}").format(\
batch_bal_after_transaction - self.actual_qty, self.item_code, self.warehouse,
frappe.throw(_("Negative balance {0} in Batch {1} for Item {2} at Warehouse {3} on {4} {5}")
.format(batch_bal_after_transaction - self.actual_qty, self.batch_no, self.item_code, self.warehouse,
formatdate(self.posting_date), self.posting_time))
def validate_mandatory(self):

View File

@@ -153,8 +153,8 @@ class StockReconciliation(StockController):
if row.valuation_rate in ("", None):
row.valuation_rate = previous_sle.get("valuation_rate")
# if row.qty and not row.valuation_rate:
# frappe.throw(_("Valuation Rate required for Item {0}").format(row.item_code))
if row.qty and not row.valuation_rate:
frappe.throw(_("Valuation Rate required for Item {0}").format(row.item_code))
self.insert_entries(row)

View File

@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
from frappe import _, throw
from frappe.utils import flt, cint, add_days
from frappe.utils import flt, cint, add_days, cstr
import json
from erpnext.accounts.doctype.pricing_rule.pricing_rule import get_pricing_rule_for_item
from erpnext.setup.utils import get_exchange_rate
@@ -140,7 +140,7 @@ def get_basic_details(args, item_doc):
"item_code": item.name,
"item_name": item.item_name,
"description": item.description_html or item.description,
"description": cstr(item.description_html).strip() or cstr(item.description).strip(),
"warehouse": user_default_warehouse or args.warehouse or item.default_warehouse,
"income_account": (item.income_account
or args.income_account

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

@@ -85,7 +85,7 @@ Accounting,المحاسبة
"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.",قيد محاسبي المجمدة تصل إلى هذا التاريخ، لا أحد يمكن أن تفعل / تعديل إدخال باستثناء دور المحددة أدناه.
Accounting journal entries.,المحاسبة إدخالات دفتر اليومية.
Accounts,حسابات
Accounts Browser,متصفح الحسابات
Accounts Browser,متصفح الحسابات
Accounts Frozen Upto,حسابات مجمدة حتي
Accounts Payable,ذمم دائنة
Accounts Receivable,حسابات القبض
@@ -253,8 +253,8 @@ Approving Role,الموافقة على دور
Approving Role cannot be same as role the rule is Applicable To,الموافقة دور لا يمكن أن يكون نفس دور القاعدة تنطبق على
Approving User,الموافقة العضو
Approving User cannot be same as user the rule is Applicable To,الموافقة العضو لا يمكن أن يكون نفس المستخدم القاعدة تنطبق على
Are you sure you want to STOP ,Are you sure you want to STOP
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
Are you sure you want to STOP ,Are you sure you want to STOP
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
Arrear Amount,متأخرات المبلغ
"As Production Order can be made for this item, it must be a stock item.",كما يمكن أن يتم ترتيب الإنتاج لهذا البند، يجب أن يكون بند الأوراق المالية .
As per Stock UOM,وفقا للأوراق UOM
@@ -283,7 +283,7 @@ Auto Accounting For Stock Settings,السيارات المحاسبة المال
Auto Material Request,السيارات مادة طلب
Auto-raise Material Request if quantity goes below re-order level in a warehouse,لصناعة السيارات في رفع طلب المواد إذا كمية يذهب دون مستوى إعادة الطلب في مستودع
Automatically compose message on submission of transactions.,يؤلف تلقائيا رسالة على تقديم المعاملات.
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
Automatically extract Leads from a mail box e.g.,استخراج الشراء تلقائيا من صندوق البريد على سبيل المثال
Automatically updated via Stock Entry of type Manufacture/Repack,تحديثها تلقائيا عن طريق إدخال الأسهم الصنع نوع / أعد حزم
Automotive,السيارات
@@ -410,8 +410,8 @@ Buying Settings,إعدادات الشراء
"Buying must be checked, if Applicable For is selected as {0}",يجب أن يتم التحقق الشراء، إذا تم تحديد مطبق للك {0}
C-Form,نموذج C-
C-Form Applicable,C-نموذج قابل للتطبيق
C-Form Invoice Detail, تفاصيل الفاتورة نموذج - س
C-Form No,رقم النموذج - س
C-Form Invoice Detail, تفاصيل الفاتورة نموذج - س
C-Form No,رقم النموذج - س
C-Form records,سجلات النموذج - س
CENVAT Capital Goods,CENVAT السلع الرأسمالية
CENVAT Edu Cess,CENVAT ايدو سيس
@@ -510,8 +510,8 @@ Clearance Date,إزالة التاريخ
Clearance Date not mentioned,إزالة التاريخ لم يرد ذكرها
Clearance date cannot be before check date in row {0},تاريخ التخليص لا يمكن أن يكون قبل تاريخ الاختيار في الصف {0}
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,انقر على &#39;جعل مبيعات الفاتورة &quot;الزر لإنشاء فاتورة مبيعات جديدة.
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
Client,عميل
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
Client,عميل
Close Balance Sheet and book Profit or Loss.,وثيقة الميزانية العمومية و كتاب الربح أو الخسارة .
Closed,مغلق
Closing (Cr),إغلاق (الكروم)
@@ -840,13 +840,13 @@ Distributor,موزع
Divorced,المطلقات
Do Not Contact,عدم الاتصال
Do not show any symbol like $ etc next to currencies.,لا تظهر أي رمز مثل $ الخ بجانب العملات.
Do really want to unstop production order: ,Do really want to unstop production order:
Do you really want to STOP ,Do you really want to STOP
Do really want to unstop production order: ,Do really want to unstop production order:
Do you really want to STOP ,Do you really want to STOP
Do you really want to STOP this Material Request?,هل تريد حقا لوقف هذا طلب المواد ؟
Do you really want to Submit all Salary Slip for month {0} and year {1},هل تريد حقا لتقديم كل زلة الرواتب ل شهر {0} و السنة {1}
Do you really want to UNSTOP ,Do you really want to UNSTOP
Do you really want to UNSTOP ,Do you really want to UNSTOP
Do you really want to UNSTOP this Material Request?,هل تريد حقا أن نزع السدادة هذا طلب المواد ؟
Do you really want to stop production order: ,Do you really want to stop production order:
Do you really want to stop production order: ,Do you really want to stop production order:
Doc Name,اسم الوثيقة
Doc Type,نوع الوثيقة
Document Description,وصف الوثيقة
@@ -898,7 +898,7 @@ Electronics,إلكترونيات
Email,البريد الإلكتروني
Email Digest,البريد الإلكتروني دايجست
Email Digest Settings,البريد الإلكتروني إعدادات دايجست
Email Digest: ,Email Digest:
Email Digest: ,Email Digest:
Email Id,البريد الإلكتروني معرف
"Email Id where a job applicant will email e.g. ""jobs@example.com""",معرف البريد الإلكتروني حيث طالب العمل سوف البريد الإلكتروني على سبيل المثال &quot;jobs@example.com&quot;
Email Notifications,إشعارات البريد الإلكتروني
@@ -958,7 +958,7 @@ Enter url parameter for receiver nos,أدخل عنوان URL لمعلمة NOS ا
Entertainment & Leisure,الترفيه وترفيهية
Entertainment Expenses,مصاريف الترفيه
Entries,مقالات
Entries against ,Entries against
Entries against ,Entries against
Entries are not allowed against this Fiscal Year if the year is closed.,لا يسمح مقالات ضد السنة المالية الحالية إذا تم إغلاق السنة.
Equity,إنصاف
Error: {0} > {1},الخطأ: {0} > {1}
@@ -1573,7 +1573,7 @@ Maintenance Visit Purpose,صيانة زيارة الغرض
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,صيانة زيارة {0} يجب أن يتم إلغاء هذا الأمر قبل إلغاء المبيعات
Maintenance start date can not be before delivery date for Serial No {0},صيانة تاريخ بداية لا يمكن أن يكون قبل تاريخ التسليم لل رقم المسلسل {0}
Major/Optional Subjects,الرئيسية / اختياري الموضوعات
Make ,Make
Make ,Make
Make Accounting Entry For Every Stock Movement,جعل الدخول المحاسبة للحصول على كل حركة الأسهم
Make Bank Voucher,جعل قسيمة البنك
Make Credit Note,جعل الائتمان ملاحظة
@@ -1722,7 +1722,7 @@ Net Weight UOM,الوزن الصافي UOM
Net Weight of each Item,الوزن الصافي لكل بند
Net pay cannot be negative,صافي الأجور لا يمكن أن تكون سلبية
Never,أبدا
New ,New
New ,New
New Account,حساب جديد
New Account Name,اسم الحساب الجديد
New BOM,BOM جديدة
@@ -2448,7 +2448,7 @@ Rounded Off,تقريبها
Rounded Total,تقريب إجمالي
Rounded Total (Company Currency),المشاركات تقريب (العملة الشركة)
Row # ,الصف #
Row # {0}: ,Row # {0}:
Row # {0}: ,Row # {0}:
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,الصف # {0}: الكمية المطلوبة لا يمكن أن أقل من الحد الأدنى الكمية النظام القطعة (المحددة في البند الرئيسي).
Row #{0}: Please specify Serial No for Item {1},الصف # {0}: يرجى تحديد رقم التسلسلي للتاريخ {1}
Row {0}: Account does not match with \ Purchase Invoice Credit To account,الصف {0}: الحساب لا يتطابق مع \ شراء فاتورة الائتمان لحساب
@@ -2750,7 +2750,7 @@ Stock Ageing,الأسهم شيخوخة
Stock Analytics,الأسهم تحليلات
Stock Assets,الموجودات الأسهم
Stock Balance,الأسهم الرصيد
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
Stock Entries already created for Production Order ,Stock Entries already created for Production Order
Stock Entry,الأسهم الدخول
Stock Entry Detail,الأسهم إدخال التفاصيل
Stock Expenses,مصاريف الأسهم
@@ -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: والسنة:
85 Accounting entry frozen up to this date, nobody can do / modify entry except role specified below. قيد محاسبي المجمدة تصل إلى هذا التاريخ، لا أحد يمكن أن تفعل / تعديل إدخال باستثناء دور المحددة أدناه.
86 Accounting journal entries. المحاسبة إدخالات دفتر اليومية.
87 Accounts حسابات
88 Accounts Browser متصفح الحسابات متصفح الحسابات
89 Accounts Frozen Upto حسابات مجمدة حتي
90 Accounts Payable ذمم دائنة
91 Accounts Receivable حسابات القبض
253 Approving Role cannot be same as role the rule is Applicable To الموافقة دور لا يمكن أن يكون نفس دور القاعدة تنطبق على
254 Approving User الموافقة العضو
255 Approving User cannot be same as user the rule is Applicable To الموافقة العضو لا يمكن أن يكون نفس المستخدم القاعدة تنطبق على
256 Are you sure you want to STOP Are you sure you want to STOP Are you sure you want to STOP
257 Are you sure you want to UNSTOP Are you sure you want to UNSTOP Are you sure you want to UNSTOP
258 Arrear Amount متأخرات المبلغ
259 As Production Order can be made for this item, it must be a stock item. كما يمكن أن يتم ترتيب الإنتاج لهذا البند، يجب أن يكون بند الأوراق المالية .
260 As per Stock UOM وفقا للأوراق UOM
283 Auto Material Request السيارات مادة طلب
284 Auto-raise Material Request if quantity goes below re-order level in a warehouse لصناعة السيارات في رفع طلب المواد إذا كمية يذهب دون مستوى إعادة الطلب في مستودع
285 Automatically compose message on submission of transactions. يؤلف تلقائيا رسالة على تقديم المعاملات.
286 Automatically extract Job Applicants from a mail box Automatically extract Job Applicants from a mail box Automatically extract Job Applicants from a mail box
287 Automatically extract Leads from a mail box e.g. استخراج الشراء تلقائيا من صندوق البريد على سبيل المثال
288 Automatically updated via Stock Entry of type Manufacture/Repack تحديثها تلقائيا عن طريق إدخال الأسهم الصنع نوع / أعد حزم
289 Automotive السيارات
410 Buying must be checked, if Applicable For is selected as {0} يجب أن يتم التحقق الشراء، إذا تم تحديد مطبق للك {0}
411 C-Form نموذج C-
412 C-Form Applicable C-نموذج قابل للتطبيق
413 C-Form Invoice Detail تفاصيل الفاتورة نموذج - س تفاصيل الفاتورة نموذج - س
414 C-Form No رقم النموذج - س رقم النموذج - س
415 C-Form records سجلات النموذج - س
416 CENVAT Capital Goods CENVAT السلع الرأسمالية
417 CENVAT Edu Cess CENVAT ايدو سيس
510 Clearance Date not mentioned إزالة التاريخ لم يرد ذكرها
511 Clearance date cannot be before check date in row {0} تاريخ التخليص لا يمكن أن يكون قبل تاريخ الاختيار في الصف {0}
512 Click on 'Make Sales Invoice' button to create a new Sales Invoice. انقر على &#39;جعل مبيعات الفاتورة &quot;الزر لإنشاء فاتورة مبيعات جديدة.
513 Click on a link to get options to expand get options Click on a link to get options to expand get options Click on a link to get options to expand get options
514 Client عميل عميل
515 Close Balance Sheet and book Profit or Loss. وثيقة الميزانية العمومية و كتاب الربح أو الخسارة .
516 Closed مغلق
517 Closing (Cr) إغلاق (الكروم)
840 Divorced المطلقات
841 Do Not Contact عدم الاتصال
842 Do not show any symbol like $ etc next to currencies. لا تظهر أي رمز مثل $ الخ بجانب العملات.
843 Do really want to unstop production order: Do really want to unstop production order: Do really want to unstop production order:
844 Do you really want to STOP Do you really want to STOP Do you really want to STOP
845 Do you really want to STOP this Material Request? هل تريد حقا لوقف هذا طلب المواد ؟
846 Do you really want to Submit all Salary Slip for month {0} and year {1} هل تريد حقا لتقديم كل زلة الرواتب ل شهر {0} و السنة {1}
847 Do you really want to UNSTOP Do you really want to UNSTOP Do you really want to UNSTOP
848 Do you really want to UNSTOP this Material Request? هل تريد حقا أن نزع السدادة هذا طلب المواد ؟
849 Do you really want to stop production order: Do you really want to stop production order: Do you really want to stop production order:
850 Doc Name اسم الوثيقة
851 Doc Type نوع الوثيقة
852 Document Description وصف الوثيقة
898 Email البريد الإلكتروني
899 Email Digest البريد الإلكتروني دايجست
900 Email Digest Settings البريد الإلكتروني إعدادات دايجست
901 Email Digest: Email Digest: Email Digest:
902 Email Id البريد الإلكتروني معرف
903 Email Id where a job applicant will email e.g. "jobs@example.com" معرف البريد الإلكتروني حيث طالب العمل سوف البريد الإلكتروني على سبيل المثال &quot;jobs@example.com&quot;
904 Email Notifications إشعارات البريد الإلكتروني
958 Entertainment & Leisure الترفيه وترفيهية
959 Entertainment Expenses مصاريف الترفيه
960 Entries مقالات
961 Entries against Entries against Entries against
962 Entries are not allowed against this Fiscal Year if the year is closed. لا يسمح مقالات ضد السنة المالية الحالية إذا تم إغلاق السنة.
963 Equity إنصاف
964 Error: {0} > {1} الخطأ: {0} > {1}
1573 Maintenance Visit {0} must be cancelled before cancelling this Sales Order صيانة زيارة {0} يجب أن يتم إلغاء هذا الأمر قبل إلغاء المبيعات
1574 Maintenance start date can not be before delivery date for Serial No {0} صيانة تاريخ بداية لا يمكن أن يكون قبل تاريخ التسليم لل رقم المسلسل {0}
1575 Major/Optional Subjects الرئيسية / اختياري الموضوعات
1576 Make Make Make
1577 Make Accounting Entry For Every Stock Movement جعل الدخول المحاسبة للحصول على كل حركة الأسهم
1578 Make Bank Voucher جعل قسيمة البنك
1579 Make Credit Note جعل الائتمان ملاحظة
1722 Net Weight of each Item الوزن الصافي لكل بند
1723 Net pay cannot be negative صافي الأجور لا يمكن أن تكون سلبية
1724 Never أبدا
1725 New New New
1726 New Account حساب جديد
1727 New Account Name اسم الحساب الجديد
1728 New BOM BOM جديدة
2448 Rounded Total تقريب إجمالي
2449 Rounded Total (Company Currency) المشاركات تقريب (العملة الشركة)
2450 Row # الصف #
2451 Row # {0}: Row # {0}: Row # {0}:
2452 Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master). الصف # {0}: الكمية المطلوبة لا يمكن أن أقل من الحد الأدنى الكمية النظام القطعة (المحددة في البند الرئيسي).
2453 Row #{0}: Please specify Serial No for Item {1} الصف # {0}: يرجى تحديد رقم التسلسلي للتاريخ {1}
2454 Row {0}: Account does not match with \ Purchase Invoice Credit To account الصف {0}: الحساب لا يتطابق مع \ شراء فاتورة الائتمان لحساب
2750 Stock Analytics الأسهم تحليلات
2751 Stock Assets الموجودات الأسهم
2752 Stock Balance الأسهم الرصيد
2753 Stock Entries already created for Production Order Stock Entries already created for Production Order Stock Entries already created for Production Order
2754 Stock Entry الأسهم الدخول
2755 Stock Entry Detail الأسهم إدخال التفاصيل
2756 Stock Expenses مصاريف الأسهم
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

@@ -255,7 +255,7 @@ Approving Role cannot be same as role the rule is Applicable To,"Έγκριση
Approving User,Έγκριση χρήστη
Approving User cannot be same as user the rule is Applicable To,Την έγκριση του χρήστη δεν μπορεί να είναι ίδιο με το χρήστη ο κανόνας ισχύει για
Are you sure you want to STOP ,Είσαστε σίγουροι πως θέλετε να σταματήσετε
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
Are you sure you want to UNSTOP ,Are you sure you want to UNSTOP
Arrear Amount,Καθυστερήσεις Ποσό
"As Production Order can be made for this item, it must be a stock item.","Όπως μπορεί να γίνει Παραγωγής παραγγελίας για το συγκεκριμένο προϊόν , θα πρέπει να είναι ένα στοιχείο υλικού."
As per Stock UOM,Όπως ανά Διαθέσιμο UOM
@@ -284,7 +284,7 @@ Auto Accounting For Stock Settings,Auto Λογιστικά Για Ρυθμίσε
Auto Material Request,Αυτόματη Αίτηση Υλικό
Auto-raise Material Request if quantity goes below re-order level in a warehouse,Auto-raise Αίτηση Υλικό εάν η ποσότητα πέσει κάτω εκ νέου για το επίπεδο σε μια αποθήκη
Automatically compose message on submission of transactions.,Αυτόματη συνθέτουν το μήνυμα για την υποβολή των συναλλαγών .
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
Automatically extract Job Applicants from a mail box ,Automatically extract Job Applicants from a mail box
Automatically extract Leads from a mail box e.g.,"Αυτόματη εξαγωγή οδηγεί από ένα κουτί αλληλογραφίας , π.χ."
Automatically updated via Stock Entry of type Manufacture/Repack,Αυτόματη ενημέρωση μέσω είσοδο στα αποθέματα Κατασκευή Τύπος / Repack
Automotive,Αυτοκίνητο
@@ -511,7 +511,7 @@ Clearance Date,Ημερομηνία Εκκαθάριση
Clearance Date not mentioned,Εκκαθάριση Ημερομηνία που δεν αναφέρονται
Clearance date cannot be before check date in row {0},Ημερομηνία εκκαθάρισης δεν μπορεί να είναι πριν από την ημερομηνία άφιξης στη γραμμή {0}
Click on 'Make Sales Invoice' button to create a new Sales Invoice.,Κάντε κλικ στο «Κάνε Πωλήσεις Τιμολόγιο» για να δημιουργηθεί μια νέα τιμολογίου πώλησης.
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
Click on a link to get options to expand get options ,Click on a link to get options to expand get options
Client,Πελάτης
Close Balance Sheet and book Profit or Loss.,Κλείσιμο Ισολογισμού και των Αποτελεσμάτων βιβλίο ή απώλεια .
Closed,Κλειστό
@@ -841,13 +841,13 @@ Distributor,Διανομέας
Divorced,Διαζευγμένος
Do Not Contact,Μην Επικοινωνία
Do not show any symbol like $ etc next to currencies.,Να μην εμφανίζεται κανένα σύμβολο όπως $ κλπ δίπλα σε νομίσματα.
Do really want to unstop production order: ,Do really want to unstop production order:
Do you really want to STOP ,Do you really want to STOP
Do really want to unstop production order: ,Do really want to unstop production order:
Do you really want to STOP ,Do you really want to STOP
Do you really want to STOP this Material Request?,Θέλετε πραγματικά να σταματήσει αυτό το υλικό την Αίτηση Συμμετοχής;
Do you really want to Submit all Salary Slip for month {0} and year {1},Θέλετε πραγματικά να υποβληθούν όλα τα Slip Μισθός για το μήνα {0} και {1 χρόνο }
Do you really want to UNSTOP ,Do you really want to UNSTOP
Do you really want to UNSTOP ,Do you really want to UNSTOP
Do you really want to UNSTOP this Material Request?,Θέλετε πραγματικά να ξεβουλώνω αυτό Υλικό Αίτηση Συμμετοχής;
Do you really want to stop production order: ,Do you really want to stop production order:
Do you really want to stop production order: ,Do you really want to stop production order:
Doc Name,Doc Name
Doc Type,Doc Τύπος
Document Description,Περιγραφή εγγράφου
@@ -899,7 +899,7 @@ Electronics,ηλεκτρονική
Email,Email
Email Digest,Email Digest
Email Digest Settings,Email Digest Ρυθμίσεις
Email Digest: ,Email Digest:
Email Digest: ,Email Digest:
Email Id,Id Email
"Email Id where a job applicant will email e.g. ""jobs@example.com""","Email Id, όπου ένας υποψήφιος θα e-mail π.χ. &quot;jobs@example.com&quot;"
Email Notifications,Ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου
@@ -959,7 +959,7 @@ Enter url parameter for receiver nos,Εισάγετε παράμετρο url γ
Entertainment & Leisure,Διασκέδαση & Leisure
Entertainment Expenses,Έξοδα Ψυχαγωγία
Entries,Καταχωρήσεις
Entries against ,Entries against
Entries against ,Entries against
Entries are not allowed against this Fiscal Year if the year is closed.,"Οι συμμετοχές δεν επιτρέπεται κατά το τρέχον οικονομικό έτος, εάν το έτος είναι κλειστή."
Equity,δικαιοσύνη
Error: {0} > {1},Σφάλμα : {0} > {1}
@@ -1574,7 +1574,7 @@ Maintenance Visit Purpose,Σκοπός Συντήρηση Επίσκεψη
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Συντήρηση Επίσκεψη {0} πρέπει να ακυρωθεί πριν από την ακύρωση αυτής της παραγγελίας πώλησης
Maintenance start date can not be before delivery date for Serial No {0},Ημερομηνία έναρξης συντήρησης δεν μπορεί να είναι πριν από την ημερομηνία παράδοσης Αύξων αριθμός {0}
Major/Optional Subjects,Σημαντικές / προαιρετικά μαθήματα
Make ,Make
Make ,Make
Make Accounting Entry For Every Stock Movement,Κάντε Λογιστική καταχώρηση για κάθε Κίνημα Χρηματιστήριο
Make Bank Voucher,Κάντε Voucher Bank
Make Credit Note,Κάντε Πιστωτικό Σημείωμα
@@ -1723,7 +1723,7 @@ Net Weight UOM,Καθαρό Βάρος UOM
Net Weight of each Item,Καθαρό βάρος κάθε είδους
Net pay cannot be negative,Καθαρή αμοιβή δεν μπορεί να είναι αρνητική
Never,Ποτέ
New ,New
New ,New
New Account,Νέος λογαριασμός
New Account Name,Νέο Όνομα λογαριασμού
New BOM,Νέα BOM
@@ -2449,7 +2449,7 @@ Rounded Off,στρογγυλοποιηθεί
Rounded Total,Στρογγυλεμένες Σύνολο
Rounded Total (Company Currency),Στρογγυλεμένες Σύνολο (νόμισμα της Εταιρείας)
Row # ,Row #
Row # {0}: ,Row # {0}:
Row # {0}: ,Row # {0}:
Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master).,Σειρά # {0}: Διέταξε ποσότητα δεν μπορεί να μικρότερη από την ελάχιστη ποσότητα σειρά στοιχείου (όπως ορίζεται στο σημείο master).
Row #{0}: Please specify Serial No for Item {1},Σειρά # {0}: Παρακαλείστε να προσδιορίσετε Αύξων αριθμός για τη θέση {1}
Row {0}: Account does not match with \ Purchase Invoice Credit To account,Σειρά {0}: Ο λογαριασμός δεν ταιριάζει με \ τιμολογίου αγοράς πίστωση του λογαριασμού
@@ -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) (Μισή ημέρα)
255 Approving User Έγκριση χρήστη
256 Approving User cannot be same as user the rule is Applicable To Την έγκριση του χρήστη δεν μπορεί να είναι ίδιο με το χρήστη ο κανόνας ισχύει για
257 Are you sure you want to STOP Είσαστε σίγουροι πως θέλετε να σταματήσετε
258 Are you sure you want to UNSTOP Are you sure you want to UNSTOP Are you sure you want to UNSTOP
259 Arrear Amount Καθυστερήσεις Ποσό
260 As Production Order can be made for this item, it must be a stock item. Όπως μπορεί να γίνει Παραγωγής παραγγελίας για το συγκεκριμένο προϊόν , θα πρέπει να είναι ένα στοιχείο υλικού.
261 As per Stock UOM Όπως ανά Διαθέσιμο UOM
284 Auto Material Request Αυτόματη Αίτηση Υλικό
285 Auto-raise Material Request if quantity goes below re-order level in a warehouse Auto-raise Αίτηση Υλικό εάν η ποσότητα πέσει κάτω εκ νέου για το επίπεδο σε μια αποθήκη
286 Automatically compose message on submission of transactions. Αυτόματη συνθέτουν το μήνυμα για την υποβολή των συναλλαγών .
287 Automatically extract Job Applicants from a mail box Automatically extract Job Applicants from a mail box Automatically extract Job Applicants from a mail box
288 Automatically extract Leads from a mail box e.g. Αυτόματη εξαγωγή οδηγεί από ένα κουτί αλληλογραφίας , π.χ.
289 Automatically updated via Stock Entry of type Manufacture/Repack Αυτόματη ενημέρωση μέσω είσοδο στα αποθέματα Κατασκευή Τύπος / Repack
290 Automotive Αυτοκίνητο
511 Clearance Date not mentioned Εκκαθάριση Ημερομηνία που δεν αναφέρονται
512 Clearance date cannot be before check date in row {0} Ημερομηνία εκκαθάρισης δεν μπορεί να είναι πριν από την ημερομηνία άφιξης στη γραμμή {0}
513 Click on 'Make Sales Invoice' button to create a new Sales Invoice. Κάντε κλικ στο «Κάνε Πωλήσεις Τιμολόγιο» για να δημιουργηθεί μια νέα τιμολογίου πώλησης.
514 Click on a link to get options to expand get options Click on a link to get options to expand get options Click on a link to get options to expand get options
515 Client Πελάτης
516 Close Balance Sheet and book Profit or Loss. Κλείσιμο Ισολογισμού και των Αποτελεσμάτων βιβλίο ή απώλεια .
517 Closed Κλειστό
841 Divorced Διαζευγμένος
842 Do Not Contact Μην Επικοινωνία
843 Do not show any symbol like $ etc next to currencies. Να μην εμφανίζεται κανένα σύμβολο όπως $ κλπ δίπλα σε νομίσματα.
844 Do really want to unstop production order: Do really want to unstop production order: Do really want to unstop production order:
845 Do you really want to STOP Do you really want to STOP Do you really want to STOP
846 Do you really want to STOP this Material Request? Θέλετε πραγματικά να σταματήσει αυτό το υλικό την Αίτηση Συμμετοχής;
847 Do you really want to Submit all Salary Slip for month {0} and year {1} Θέλετε πραγματικά να υποβληθούν όλα τα Slip Μισθός για το μήνα {0} και {1 χρόνο }
848 Do you really want to UNSTOP Do you really want to UNSTOP Do you really want to UNSTOP
849 Do you really want to UNSTOP this Material Request? Θέλετε πραγματικά να ξεβουλώνω αυτό Υλικό Αίτηση Συμμετοχής;
850 Do you really want to stop production order: Do you really want to stop production order: Do you really want to stop production order:
851 Doc Name Doc Name
852 Doc Type Doc Τύπος
853 Document Description Περιγραφή εγγράφου
899 Email Email
900 Email Digest Email Digest
901 Email Digest Settings Email Digest Ρυθμίσεις
902 Email Digest: Email Digest: Email Digest:
903 Email Id Id Email
904 Email Id where a job applicant will email e.g. "jobs@example.com" Email Id, όπου ένας υποψήφιος θα e-mail π.χ. &quot;jobs@example.com&quot;
905 Email Notifications Ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου
959 Entertainment & Leisure Διασκέδαση & Leisure
960 Entertainment Expenses Έξοδα Ψυχαγωγία
961 Entries Καταχωρήσεις
962 Entries against Entries against Entries against
963 Entries are not allowed against this Fiscal Year if the year is closed. Οι συμμετοχές δεν επιτρέπεται κατά το τρέχον οικονομικό έτος, εάν το έτος είναι κλειστή.
964 Equity δικαιοσύνη
965 Error: {0} > {1} Σφάλμα : {0} > {1}
1574 Maintenance Visit {0} must be cancelled before cancelling this Sales Order Συντήρηση Επίσκεψη {0} πρέπει να ακυρωθεί πριν από την ακύρωση αυτής της παραγγελίας πώλησης
1575 Maintenance start date can not be before delivery date for Serial No {0} Ημερομηνία έναρξης συντήρησης δεν μπορεί να είναι πριν από την ημερομηνία παράδοσης Αύξων αριθμός {0}
1576 Major/Optional Subjects Σημαντικές / προαιρετικά μαθήματα
1577 Make Make Make
1578 Make Accounting Entry For Every Stock Movement Κάντε Λογιστική καταχώρηση για κάθε Κίνημα Χρηματιστήριο
1579 Make Bank Voucher Κάντε Voucher Bank
1580 Make Credit Note Κάντε Πιστωτικό Σημείωμα
1723 Net Weight of each Item Καθαρό βάρος κάθε είδους
1724 Net pay cannot be negative Καθαρή αμοιβή δεν μπορεί να είναι αρνητική
1725 Never Ποτέ
1726 New New New
1727 New Account Νέος λογαριασμός
1728 New Account Name Νέο Όνομα λογαριασμού
1729 New BOM Νέα BOM
2449 Rounded Total Στρογγυλεμένες Σύνολο
2450 Rounded Total (Company Currency) Στρογγυλεμένες Σύνολο (νόμισμα της Εταιρείας)
2451 Row # Row #
2452 Row # {0}: Row # {0}: Row # {0}:
2453 Row #{0}: Ordered qty can not less than item's minimum order qty (defined in item master). Σειρά # {0}: Διέταξε ποσότητα δεν μπορεί να μικρότερη από την ελάχιστη ποσότητα σειρά στοιχείου (όπως ορίζεται στο σημείο master).
2454 Row #{0}: Please specify Serial No for Item {1} Σειρά # {0}: Παρακαλείστε να προσδιορίσετε Αύξων αριθμός για τη θέση {1}
2455 Row {0}: Account does not match with \ Purchase Invoice Credit To account Σειρά {0}: Ο λογαριασμός δεν ταιριάζει με \ τιμολογίου αγοράς πίστωση του λογαριασμού
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

@@ -31,7 +31,7 @@
1 Currency = [?] FractionFor e.g. 1 USD = 100 Cent,"1 moneda = [?] Fracción Por ejemplo, 1 USD = 100 Cent"
1. To maintain the customer wise item code and to make them searchable based on their code use this option,1 . Para mantener el código del artículo sabia cliente y para efectuar búsquedas en ellos en función de su uso de código de esta opción
"<a href=""#Sales Browser/Customer Group"">Add / Edit</a>","<a href=""#Sales Browser/Customer grupo""> Añadir / Editar < / a>"
"<a href=""#Sales Browser/Item Group"">Add / Edit</a>","<a href=""#Sales Browser/Item grupo""> Añadir / Editar < / a>"
"<a href=""#Sales Browser/Item Group"">Add / Edit</a>","<a href=""#Sales Browser/Item Group""> Añadir / Editar < / a>"
"<a href=""#Sales Browser/Territory"">Add / Edit</a>","<a href=""#Sales Browser/Territory""> Añadir / Editar < / a>"
"<h4>Default Template</h4><p>Uses <a href=""http://jinja.pocoo.org/docs/templates/"">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p><pre><code>{{ address_line1 }}&lt;br&gt;{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}{{ city }}&lt;br&gt;{% if state %}{{ state }}&lt;br&gt;{% endif -%}{% if pincode %} PIN: {{ pincode }}&lt;br&gt;{% endif -%}{{ country }}&lt;br&gt;{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}</code></pre>","<h4> defecto plantilla </ h4> <p> Usos <a href=""http://jinja.pocoo.org/docs/templates/""> Jinja plantillas </ a> y todos los campos de la Dirección ( incluyendo campos personalizados en su caso) estará disponible </ p> <pre> <code> {{}} address_line1 <br> {% if address_line2%} {{}} address_line2 <br> { endif% -%} {{city}} <br> {% if estado%} {{Estado}} {% endif <br> -%} {% if%} pincode PIN: {{pincode}} {% endif <br> -%} {{país}} <br> {% if%} de teléfono Teléfono: {{phone}} {<br> endif% -%} {% if%} fax Fax: {{fax}} {% endif <br> -%} {% if%} email_ID Email: {{}} email_ID <br> ; {% endif -%} </ code> </ pre>"
A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Existe un Grupo de Clientes con el mismo nombre, por favor cambie el nombre del Cliente o cambie el nombre del Grupo de Clientes"
@@ -2745,7 +2745,7 @@ Statement of Account,Estado de cuenta
Static Parameters,Parámetros estáticos
Status,estado
Status must be one of {0},Estado debe ser uno de {0}
Status of {0} {1} is now {2},Situación de {0} {1} { 2 es ahora }
Status of {0} {1} is now {2},Situación de {0} {1} {2} es ahora
Status updated to {0},Estado actualizado a {0}
Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor
Stay Updated,Manténgase actualizado
@@ -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)
31 1 Currency = [?] FractionFor e.g. 1 USD = 100 Cent 1 moneda = [?] Fracción Por ejemplo, 1 USD = 100 Cent
32 1. To maintain the customer wise item code and to make them searchable based on their code use this option 1 . Para mantener el código del artículo sabia cliente y para efectuar búsquedas en ellos en función de su uso de código de esta opción
33 <a href="#Sales Browser/Customer Group">Add / Edit</a> <a href="#Sales Browser/Customer grupo"> Añadir / Editar < / a>
34 <a href="#Sales Browser/Item Group">Add / Edit</a> <a href="#Sales Browser/Item grupo"> Añadir / Editar < / a> <a href="#Sales Browser/Item Group"> Añadir / Editar < / a>
35 <a href="#Sales Browser/Territory">Add / Edit</a> <a href="#Sales Browser/Territory"> Añadir / Editar < / a>
36 <h4>Default Template</h4><p>Uses <a href="http://jinja.pocoo.org/docs/templates/">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p><pre><code>{{ address_line1 }}&lt;br&gt;{% if address_line2 %}{{ address_line2 }}&lt;br&gt;{% endif -%}{{ city }}&lt;br&gt;{% if state %}{{ state }}&lt;br&gt;{% endif -%}{% if pincode %} PIN: {{ pincode }}&lt;br&gt;{% endif -%}{{ country }}&lt;br&gt;{% if phone %}Phone: {{ phone }}&lt;br&gt;{% endif -%}{% if fax %}Fax: {{ fax }}&lt;br&gt;{% endif -%}{% if email_id %}Email: {{ email_id }}&lt;br&gt;{% endif -%}</code></pre> <h4> defecto plantilla </ h4> <p> Usos <a href="http://jinja.pocoo.org/docs/templates/"> Jinja plantillas </ a> y todos los campos de la Dirección ( incluyendo campos personalizados en su caso) estará disponible </ p> <pre> <code> {{}} address_line1 <br> {% if address_line2%} {{}} address_line2 <br> { endif% -%} {{city}} <br> {% if estado%} {{Estado}} {% endif <br> -%} {% if%} pincode PIN: {{pincode}} {% endif <br> -%} {{país}} <br> {% if%} de teléfono Teléfono: {{phone}} {<br> endif% -%} {% if%} fax Fax: {{fax}} {% endif <br> -%} {% if%} email_ID Email: {{}} email_ID <br> ; {% endif -%} </ code> </ pre>
37 A Customer Group exists with same name please change the Customer name or rename the Customer Group Existe un Grupo de Clientes con el mismo nombre, por favor cambie el nombre del Cliente o cambie el nombre del Grupo de Clientes
2745 Statutory info and other general information about your Supplier Información legal y otra información general acerca de su proveedor
2746 Stay Updated Manténgase actualizado
2747 Stock valores
2748 Stock Adjustment Stock de Ajuste
2749 Stock Adjustment Account Cuenta de Ajuste
2750 Stock Ageing Stock Envejecimiento
2751 Stock Analytics Analytics archivo
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

@@ -240,7 +240,7 @@ def repost_all_stock_vouchers():
doc.validate()
doc.update_stock_ledger()
doc.make_gl_entries(repost_future_gle=False, allow_negative_stock=True)
doc.make_gl_entries(repost_future_gle=False)
frappe.db.commit()
except Exception, e:
print frappe.get_traceback()

View File

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