Compare commits

..

104 Commits

Author SHA1 Message Date
mbauskar
777b16ffda Merge branch 'develop' 2017-07-13 15:14:29 +05:30
mbauskar
efaf9f59db bumped to version 8.4.1 2017-07-13 15:44:29 +06:00
Nabin Hait
239c9387d1 Merge pull request #9838 from saurabh6790/patch_fix
[patch][fix] update gst_state only if company country is india
2017-07-13 14:49:58 +05:30
Saurabh
e74e4b18c7 [patch][fix] update gst_state only if company country is india 2017-07-13 14:38:43 +05:30
mbauskar
012f5b0a50 Merge branch 'develop' 2017-07-13 14:05:51 +05:30
mbauskar
05d62127d0 bumped to version 8.4.0 2017-07-13 14:35:51 +06:00
Nabin Hait
7549a83b9b Merge pull request #9801 from manassolanki/refractor-report
changes in the assessment report
2017-07-13 13:46:19 +05:30
rohitwaghchaure
c3153655eb Fixed patch create_warehouse_nestedset (#9833) 2017-07-13 12:17:12 +05:30
Makarand Bauskar
96488b0f34 [patch] removed create company address patch (#9832) 2017-07-13 12:16:28 +05:30
Nabin Hait
1a60931435 Added SAC codes and 2/4 digit HSN codes, regional setup can be called multiple times (#9820) 2017-07-13 12:16:04 +05:30
Makarand Bauskar
8f507a984e [minor] check if the company is selected or not before triggering get_bank_cash_account (#9830)
* [minor] check if the company is selected or not before triggering get_bank_cash_account

* [minor] check if production order is available

* [minor] fixed codacy errors
2017-07-13 11:44:29 +05:30
Nabin Hait
57d3cecd68 Merge pull request #9811 from rohitwaghchaure/pricing_rule_issue_for_discount
[Fix] Manual discount is not applying in the transaction if discount amount is zero in the pricing rule
2017-07-13 11:14:53 +05:30
Nabin Hait
de609a2fb6 Merge pull request #9815 from nabinhait/develop
Set company address while making invoice from SO, don't show taxes in print if amount is zero, fixed state code
2017-07-13 11:05:55 +05:30
Nabin Hait
7312186c76 Set corrected states list in GST State field's options 2017-07-13 10:41:15 +05:30
Nabin Hait
0a32b7a6eb Set company address while making invoice from SO, don't show taxes in print if amount is zero, fixed state code 2017-07-12 19:21:05 +05:30
rohitwaghchaure
c1a1e62c0d [Fix] Data not showing in the heatmap of the customer (#9819) 2017-07-12 18:57:23 +05:30
Rohit Waghchaure
b12f2109b5 [Fix] Manual discount is not applying on the pricing rule if discount amount is zero in the pricing rule 2017-07-12 18:02:02 +05:30
Manas Solanki
a13c6a1bef codacy cleanup 2017-07-12 17:49:59 +05:30
Manas Solanki
79ed58fd36 chnages in the assessment report 2017-07-12 17:49:59 +05:30
rohitwaghchaure
860144feb7 [Fix] User not able to search an Item if description is null in the item (#9793) 2017-07-12 15:01:56 +05:30
Makarand Bauskar
1efb05233c [minor] don't trigger source_warehouse if item_code is not set in Production Order (#9806) 2017-07-12 14:53:14 +05:30
Makarand Bauskar
ef8d6dc8f8 [minor] ingore mandatory while auto closing issues and opportunity (#9783) 2017-07-12 14:52:32 +05:30
Nabin Hait
79c2191aa3 [fix] Don't add newline at the end, onchange of serial_no and filter warehouse based on company and is_group (#9809) 2017-07-12 14:10:43 +05:30
Nabin Hait
f012a9db70 Merge pull request #9812 from adityaduggal/wrong_state_codes
Changed state codes and added state
2017-07-12 14:03:39 +05:30
Aditya Duggal
4e1a3c1d58 Changed state codes and added state
-Andaman 35 added
-UP changed to 09 from 35
-Uttrakhand changed to 05 from 36
2017-07-12 13:40:11 +05:30
Nabin Hait
fb8e59234b Merge pull request #9652 from bcornwellmott/sq_lead_time
Added lead time field to supplier quotation
2017-07-11 23:39:27 +05:30
Umair Sayed
31af0849db Update navigation.md (#9798) 2017-07-11 21:07:03 +05:30
Frappe PR Bot
bfdb726072 [translation] translation updates (#9788) 2017-07-11 15:20:11 +05:30
mbauskar
a8406e1544 Merge branch 'develop' 2017-07-11 13:02:15 +05:30
mbauskar
b2aa867b70 bumped to version 8.3.6 2017-07-11 13:32:14 +06:00
Makarand Bauskar
30f2bcbccc [hotfix] allow only 5 character in company_abbr field in setup wizard (#9779) 2017-07-11 12:36:57 +05:30
Prateeksha Singh
7d885432eb [wiz] add user slide, enforce first entry, static labels (#9744) 2017-07-11 12:36:34 +05:30
Nabin Hait
3b5f774144 Merge pull request #9410 from manassolanki/patch-company
Patch for the PR 8754, fixes #9011
2017-07-11 11:35:29 +05:30
Nabin Hait
3a200bbc44 Update create_address_doc_from_address_field_in_company.py 2017-07-11 11:34:27 +05:30
Nabin Hait
2bedca04ae Merge pull request #9750 from rohitwaghchaure/taxable_amount_issue
[Fix] Taxable amount in tax breakup showing wrong value for duplicate items in the invoice
2017-07-11 11:16:56 +05:30
Manas Solanki
1a0536bff4 changes as per review 2017-07-11 11:16:16 +05:30
Manas Solanki
cdba021802 patch for removing the address field from company and creating address doc, fixes #9011 2017-07-11 11:16:16 +05:30
Shivam Mishra
3fe5ecc611 Added Lead fixture, Added test for Lead, Opportunity (#9607)
* Added fixtures for Address and Contact

* Fixed formatting errors

* Added Test for terms, Added Tax and Terms fixture

* Add tests for tax

* Added Test for Print Format
2017-07-11 10:33:07 +05:30
Rohit Waghchaure
296fbfeaac [Fix] Taxable amount in tax breakup showing wrong value for duplicate items in the invoice 2017-07-10 23:06:49 +05:30
Rushabh Mehta
4a7b4efbec [tests] update travis.yml to run ui-tests (#9748)
* [tests] update travis.yml to run ui-tests

* [tests] update travis.yml to run ui-tests

* [test] fix item_group.py

* [test] fix item_group.py

* [check] daily work summary fails?

* [check] daily work summary fails?

* [check] daily work summary fails?

* [check] daily work summary fails?

* [check] daily work summary fails?

* [check] daily work summary fails?

* [check] no scheduled jobs for tests

* [check] daily work summary fails?

* [check] daily work summary fails?
2017-07-10 23:00:01 +05:30
Ben Cornwell-Mott
b1f0fd4ac3 Lead time matches Item master 2017-07-10 09:09:29 -07:00
Nabin Hait
f7d2a59c18 Merge pull request #9538 from sagarvora/fix-bom-issue
[minor] fix bom price resetting on validation
2017-07-10 20:41:16 +05:30
Nabin Hait
0ac8542eaa Merge pull request #9772 from tundebabzy/issue-9595
Wrong Exchange Rate when making payment against Journal Entry (#9595)
2017-07-10 19:12:48 +05:30
Nabin Hait
c8b6d3badb Merge pull request #9713 from manassolanki/stud-dashb
changes in the student dashboard
2017-07-10 19:10:57 +05:30
Nabin Hait
cdf4320b3b Merge pull request #9673 from rohitwaghchaure/serial_no_sales_return_issue
Remove sales invoice from serial number while making sales return entery using delivery note
2017-07-10 19:04:30 +05:30
Nabin Hait
5b2d3222f3 Merge pull request #9710 from rohitwaghchaure/sales_invoice_dn_link_revert
Revert sales invoice dn link issue
2017-07-10 18:47:38 +05:30
Manas Solanki
5d202ca31a change in the student type 2017-07-10 18:40:53 +05:30
Nabin Hait
7088db9e1f Merge pull request #9773 from mbauskar/docs
[docs] corrected the filename from sms_setting2 -> sms_settings2
2017-07-10 18:17:28 +05:30
Nabin Hait
ec344ffa96 Merge pull request #9761 from mbauskar/depends-on
[minor] fixed depends on for stock entry expense_account and purchase receipt item's cost_center field
2017-07-10 18:16:15 +05:30
mbauskar
a52e726b6b [docs] corrected the filename from sms_setting2 -> sms_settings2 2017-07-10 18:11:32 +05:30
Nabin Hait
cf82c3828e Merge pull request #9769 from manassolanki/payment-entry
frappe call if posting date is defined
2017-07-10 17:57:26 +05:30
Nabin Hait
6fcfbaa1f9 Merge pull request #9766 from nabinhait/migration_fixes
minor fixes while upgrading an old instance
2017-07-10 17:45:25 +05:30
Nabin Hait
a6c733d06c Merge pull request #9753 from rohitwaghchaure/budget_cost_center_issue
[Fix] Budget against the field in the validation message
2017-07-10 17:45:02 +05:30
tunde
46ef26df71 treat use case where Journal entry is contained in outstanding_invoices in get_outstanding_reference_documents function 2017-07-10 13:05:29 +01:00
Manas Solanki
99d571a786 frappe call if posting date is defined 2017-07-10 17:33:27 +05:30
Rohit Waghchaure
e3ae600277 [Fix] Budget against the field in the validation message 2017-07-10 17:06:54 +05:30
Nabin Hait
dd7a723214 minor fixes while upgrading an old instance 2017-07-10 16:41:59 +05:30
mbauskar
ccaf36a00f [minor] fixed depends on for stock entry expense_account and purchase receipt item's cost_center field 2017-07-10 16:24:24 +05:30
Manas Solanki
101a021f7b added student type in program enrollment and changes in the student dashboard 2017-07-10 16:21:44 +05:30
Nabin Hait
68ed0488a3 Merge pull request #9757 from mbauskar/breadcrumb-fixes
[hotfix] check if the item group exist or not
2017-07-10 15:32:52 +05:30
mbauskar
75a233b472 [hotfix] check if the item group exist or not 2017-07-10 14:36:42 +05:30
Nabin Hait
5a174d61bc Merge pull request #9754 from creamdory/develop
Added Quotation as Standard Sidebar Menu
2017-07-10 14:13:35 +05:30
creamdory
7a2815299e Added Quotation as Standard Sidebar Menu 2017-07-10 16:09:03 +08:00
Manas Solanki
195d2b577f add few details in the student log (#9670) 2017-07-10 12:29:46 +05:30
Britlog
8c85562ceb Breadcrumbs management (#9544) 2017-07-10 12:14:05 +05:30
Manas Solanki
77aa4762b8 don't request another ajax call if one is pending (#9620) 2017-07-10 12:12:16 +05:30
Nabin Hait
35ecab6a52 Merge branch 'develop' 2017-07-08 13:55:41 +05:30
Nabin Hait
097da8cc89 bumped to version 8.3.5 2017-07-08 14:25:41 +06:00
Nabin Hait
1d52a4df22 Merge pull request #9732 from adityaduggal/gstin_NA
First 2 digit validation would disregard NA values
2017-07-08 13:52:35 +05:30
Nabin Hait
cd61a20fb4 Update utils.py 2017-07-08 13:52:13 +05:30
Nabin Hait
8f7eb358b8 Merge pull request #9730 from nabinhait/prod_fix
Finish prod order when skipped material transfer
2017-07-08 13:50:52 +05:30
Aditya Duggal
0e285265b1 First 2 digit validation would disregard NA values 2017-07-08 13:35:01 +05:30
Nabin Hait
b866fcf14f Finish prod order when skipped material transfer 2017-07-08 12:57:13 +05:30
Manas Solanki
3d190a15ab changes in the student dashboard 2017-07-07 17:29:29 +05:30
mbauskar
ab59e4769b Merge branch 'develop' 2017-07-07 17:12:37 +05:30
mbauskar
7b5ca3e494 bumped to version 8.3.4 2017-07-07 17:42:36 +06:00
Rohit Waghchaure
8f2c8f6e9d Revert sales invoice dn link issue 2017-07-07 17:07:59 +05:30
Nabin Hait
76c5924cbe Merge pull request #9699 from manassolanki/productn
frappe call only when there is item in production order
2017-07-07 15:48:37 +05:30
Nabin Hait
6eb55042d8 Merge pull request #9704 from rohitwaghchaure/serial_no_not_found_issue
Fixed the issue Serial No serial no not found
2017-07-07 15:47:25 +05:30
Rohit Waghchaure
9589527784 Fixed the issue Serial No serial no not found 2017-07-07 15:34:28 +05:30
Nabin Hait
dba3f0048b Merge pull request #9702 from mbauskar/installation-note
[hotfix] fixed the customer address set filter on Installation Note
2017-07-07 15:28:23 +05:30
mbauskar
3f6a5b2539 [hotfix] fixed the customer address set filter on Installation Note 2017-07-07 15:24:01 +05:30
Manas Solanki
cf7f72e586 frappe call only when there is item 2017-07-07 15:09:57 +05:30
mbauskar
74d07c695b Merge branch 'develop' 2017-07-07 14:06:45 +05:30
mbauskar
5cf3868d03 bumped to version 8.3.3 2017-07-07 14:36:45 +06:00
Nabin Hait
1b36336fc3 Added new option in invoice_copy, made state_number read_only (#9695)
* Added new option in invoice_copy, made state_number read_only

* removed the trailing whitespace
2017-07-07 14:05:33 +05:30
mbauskar
3f3ac5652f resolved merge conflicts 2017-07-07 13:42:54 +05:30
mbauskar
7b8d366e3a bumped to version 8.3.2 2017-07-07 14:11:45 +06:00
rohitwaghchaure
a29442d6bf [Fix] Setup wizard translation (#9693) 2017-07-07 13:40:13 +05:30
rohitwaghchaure
bbe16c80ff [Fix] Setup wizard translation issue (#9692) 2017-07-07 13:27:15 +05:30
Nabin Hait
4e21f11864 Merge pull request #9690 from rmehta/additional-discount-fix
[fix] reset flag after promise
2017-07-07 13:26:14 +05:30
Rushabh Mehta
19d52dc503 [fix] remove extra flag 2017-07-07 13:23:23 +05:30
Nabin Hait
701f7cccbf Merge pull request #9688 from nabinhait/pos_fixes
Fixed itemised tax calc to fix pos loading
2017-07-07 13:18:14 +05:30
Nabin Hait
8b486b0f28 Fixed state code of WB and allowed invoice_copy to edit after submit 2017-07-07 13:14:25 +05:30
Rushabh Mehta
6705ab3eaf [fix] discount setting multiple times 2017-07-07 13:14:08 +05:30
Rushabh Mehta
233a19a373 [fix] reset flag after promise 2017-07-07 13:06:29 +05:30
Nabin Hait
fbb5945ff3 Fixed itemised tax calc to fix pos loading 2017-07-07 12:58:22 +05:30
Nabin Hait
7773ee8960 Sales invoice dashboard, multiple letter head in report and email alert docs 2017-07-07 12:49:05 +05:30
Nabin Hait
8ad168ac67 Fixed merge conflict 2017-07-06 23:18:00 +05:30
Nabin Hait
3e9520b276 bumped to version 8.2.5 2017-07-06 23:46:40 +06:00
Rohit Waghchaure
934e69fe0b Remove sales invoice from serial number while making sales return entery using delivery note 2017-07-06 18:19:18 +05:30
rohitwaghchaure
bedb486c55 [Fix] Multi letter head showing in the print (#9644) 2017-07-06 14:50:38 +05:30
Ben Cornwell-Mott
19d9381197 Added lead time field to supplier quotation 2017-07-05 13:17:13 -07:00
Sagar Vora
7640858510 [minor] fix bom price resetting on validation 2017-06-29 22:20:07 +05:30
138 changed files with 24399 additions and 14742 deletions

View File

@@ -1,6 +1,12 @@
language: python
dist: trusty
group: deprecated-2017Q2
addons:
apt:
sources:
- google-chrome
packages:
- google-chrome-stable
python:
- "2.7"
@@ -8,43 +14,43 @@ python:
services:
- mysql
before_install:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
install:
- sudo rm /etc/apt/sources.list.d/docker.list
- sudo apt-get purge -y mysql-common mysql-server mysql-client
- nvm install v7.10.0
# - wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
# - sudo bash setup_frappe.sh --skip-setup-bench --mysql-root-password travis --bench-branch develop
- wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
- sudo python install.py --develop --user travis --without-bench-setup
- sudo pip install -e ~/bench
# - sudo pip install --upgrade pip
- rm $TRAVIS_BUILD_DIR/.git/shallow
- bash $TRAVIS_BUILD_DIR/travis/bench_init.sh
- cp -r $TRAVIS_BUILD_DIR/test_sites/test_site ~/frappe-bench/sites/
script:
before_script:
- wget http://chromedriver.storage.googleapis.com/2.27/chromedriver_linux64.zip
- unzip chromedriver_linux64.zip
- sudo apt-get install libnss3
- sudo apt-get --only-upgrade install google-chrome-stable
- sudo cp chromedriver /usr/local/bin/.
- sudo chmod +x /usr/local/bin/chromedriver
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- sleep 3
- mysql -u root -ptravis -e 'create database test_frappe'
- echo "USE mysql;\nCREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe';\nFLUSH PRIVILEGES;\n" | mysql -u root -ptravis
- echo "USE mysql;\nGRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost';\n" | mysql -u root -ptravis
- cd ~/frappe-bench
- bench get-app erpnext $TRAVIS_BUILD_DIR
- bench use test_site
- bench reinstall --yes
- bench build
- bench scheduler disable
- bench start &
- sleep 10
- bench --verbose run-tests --driver Firefox
before_script:
- mysql -u root -ptravis -e 'create database test_frappe'
- echo "USE mysql;\nCREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe';\nFLUSH PRIVILEGES;\n" | mysql -u root -ptravis
- echo "USE mysql;\nGRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost';\n" | mysql -u root -ptravis
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/92b3bea86d8c5397beef
on_success: always
on_failure: always
on_start: never
script:
- set -e
- bench --verbose run-tests
- sleep 5
- bench --verbose run-tests --ui-tests

View File

@@ -2,8 +2,7 @@
from __future__ import unicode_literals
import frappe
__version__ = '8.3.1'
__version__ = '8.4.1'
def get_default_company(user=None):
'''Get default company for user'''

View File

@@ -83,7 +83,7 @@ def validate_expense_against_budget(args):
budget_records = frappe.db.sql("""
select
b.{budget_against_field}, ba.budget_amount, b.monthly_distribution,
b.{budget_against_field} as budget_against, ba.budget_amount, b.monthly_distribution,
b.action_if_annual_budget_exceeded,
b.action_if_accumulated_monthly_budget_exceeded
from
@@ -111,15 +111,15 @@ def validate_budget_records(args, budget_records):
args["month_end_date"] = get_last_day(args.posting_date)
compare_expense_with_budget(args, budget_amount,
_("Accumulated Monthly"), monthly_action)
_("Accumulated Monthly"), monthly_action, budget.budget_against)
if yearly_action in ("Stop", "Warn") and monthly_action != "Stop" \
and yearly_action != monthly_action:
compare_expense_with_budget(args, flt(budget.budget_amount),
_("Annual"), yearly_action)
_("Annual"), yearly_action, budget.budget_against)
def compare_expense_with_budget(args, budget_amount, action_for, action):
def compare_expense_with_budget(args, budget_amount, action_for, action, budget_against):
actual_expense = get_actual_expense(args)
if actual_expense > budget_amount:
diff = actual_expense - budget_amount
@@ -127,7 +127,7 @@ def compare_expense_with_budget(args, budget_amount, action_for, action):
msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It will exceed by {5}").format(
_(action_for), frappe.bold(args.account), args.budget_against_field,
frappe.bold(args.budget_against),
frappe.bold(budget_against),
frappe.bold(fmt_money(budget_amount, currency=currency)),
frappe.bold(fmt_money(diff, currency=currency)))

View File

@@ -140,6 +140,33 @@ class TestBudget(unittest.TestCase):
budget.load_from_db()
budget.cancel()
def test_monthly_budget_against_parent_group_cost_center(self):
cost_center = "_Test Cost Center 3 - _TC"
if not frappe.db.exists("Cost Center", cost_center):
frappe.get_doc({
'doctype': 'Cost Center',
'cost_center_name': '_Test Cost Center 3',
'parent_cost_center': "_Test Company - _TC",
'company': '_Test Company',
'is_group': 0
}).insert(ignore_permissions=True)
budget = make_budget("Cost Center", cost_center)
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
jv = make_journal_entry("_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC", 40000, cost_center)
self.assertRaises(BudgetError, jv.submit)
budget.load_from_db()
budget.cancel()
jv.cancel()
frappe.delete_doc('Journal Entry', jv.name)
frappe.delete_doc('Cost Center', cost_center)
def set_total_expense_zero(posting_date, budget_against_field=None, budget_against_CC=None):
if budget_against_field == "Project":
budget_against = "_Test Project"
@@ -167,7 +194,8 @@ def make_budget(budget_against=None, cost_center=None):
if budget_against == "Project":
budget_list = frappe.get_all("Budget", fields=["name"], filters = {"name": ("like", "_Test Project/_Test Fiscal Year 2013%")})
else:
budget_list = frappe.get_all("Budget", fields=["name"], filters = {"name": ("like", "_Test Cost Center - _TC/_Test Fiscal Year 2013%")})
cost_center_name = "{0}%".format(cost_center or "_Test Cost Center - _TC/_Test Fiscal Year 2013")
budget_list = frappe.get_all("Budget", fields=["name"], filters = {"name": ("like", cost_center_name)})
for d in budget_list:
frappe.db.sql("delete from `tabBudget` where name = %(name)s", d)
frappe.db.sql("delete from `tabBudget Account` where parent = %(name)s", d)

View File

@@ -291,37 +291,39 @@ frappe.ui.form.on('Payment Entry', {
set_account_currency_and_balance: function(frm, account, currency_field,
balance_field, callback_function) {
frappe.call({
method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_account_details",
args: {
"account": account,
"date": frm.doc.posting_date
},
callback: function(r, rt) {
if(r.message) {
frm.set_value(currency_field, r.message['account_currency']);
frm.set_value(balance_field, r.message['account_balance']);
if (frm.doc.posting_date) {
frappe.call({
method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_account_details",
args: {
"account": account,
"date": frm.doc.posting_date
},
callback: function(r, rt) {
if(r.message) {
frm.set_value(currency_field, r.message['account_currency']);
frm.set_value(balance_field, r.message['account_balance']);
if(frm.doc.payment_type=="Receive" && currency_field=="paid_to_account_currency") {
frm.toggle_reqd(["reference_no", "reference_date"],
(r.message['account_type'] == "Bank" ? 1 : 0));
if(!frm.doc.received_amount && frm.doc.paid_amount)
frm.events.paid_amount(frm);
} else if(frm.doc.payment_type=="Pay" && currency_field=="paid_from_account_currency") {
frm.toggle_reqd(["reference_no", "reference_date"],
(r.message['account_type'] == "Bank" ? 1 : 0));
if(frm.doc.payment_type=="Receive" && currency_field=="paid_to_account_currency") {
frm.toggle_reqd(["reference_no", "reference_date"],
(r.message['account_type'] == "Bank" ? 1 : 0));
if(!frm.doc.received_amount && frm.doc.paid_amount)
frm.events.paid_amount(frm);
} else if(frm.doc.payment_type=="Pay" && currency_field=="paid_from_account_currency") {
frm.toggle_reqd(["reference_no", "reference_date"],
(r.message['account_type'] == "Bank" ? 1 : 0));
if(!frm.doc.paid_amount && frm.doc.received_amount)
frm.events.received_amount(frm);
if(!frm.doc.paid_amount && frm.doc.received_amount)
frm.events.received_amount(frm);
}
if(callback_function) callback_function(frm);
frm.events.hide_unhide_fields(frm);
frm.events.set_dynamic_labels(frm);
}
if(callback_function) callback_function(frm);
frm.events.hide_unhide_fields(frm);
frm.events.set_dynamic_labels(frm);
}
}
});
});
}
},
paid_from_account_currency: function(frm) {

View File

@@ -492,9 +492,13 @@ def get_outstanding_reference_documents(args):
for d in outstanding_invoices:
d["exchange_rate"] = 1
if party_account_currency != company_currency \
and d.voucher_type in ("Sales Invoice", "Purchase Invoice"):
if party_account_currency != company_currency:
if d.voucher_type in ("Sales Invoice", "Purchase Invoice"):
d["exchange_rate"] = frappe.db.get_value(d.voucher_type, d.voucher_no, "conversion_rate")
elif d.voucher_type == "Journal Entry":
d["exchange_rate"] = get_exchange_rate(
party_account_currency, company_currency, d.posting_date
)
# Get all SO / PO which are not fully billed or aginst which full advance not paid
orders_to_be_billed = get_orders_to_be_billed(args.get("posting_date"),args.get("party_type"), args.get("party"),

View File

@@ -185,7 +185,7 @@ def get_pricing_rule_for_item(args):
"discount_percentage": 0.0
})
else:
item_details.discount_percentage = pricing_rule.discount_percentage
item_details.discount_percentage = pricing_rule.discount_percentage or args.discount_percentage
elif args.get('pricing_rule'):
item_details = remove_pricing_rule_for_item(args.get("pricing_rule"), item_details)

View File

@@ -6,6 +6,7 @@ from __future__ import unicode_literals
import unittest
import frappe
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.stock.get_item_details import get_item_details
from frappe import MandatoryError
@@ -248,4 +249,51 @@ class TestPricingRule(unittest.TestCase):
so.submit()
so = frappe.get_doc('Sales Order', so.name)
self.assertEquals(so.items[0].discount_percentage, 0)
self.assertEquals(so.items[0].rate, 100)
self.assertEquals(so.items[0].rate, 100)
def test_pricing_rule_with_margin_and_discount(self):
make_pricing_rule(selling=1, margin_type="Percentage", margin_rate_or_amount=10)
si = create_sales_invoice(do_not_save=True)
si.items[0].price_list_rate = 1000
si.insert(ignore_permissions=True)
item = si.items[0]
self.assertEquals(item.rate, 1100)
self.assertEquals(item.margin_rate_or_amount, 10)
# With discount
item.discount_percentage = 10
si.save()
item = si.items[0]
self.assertEquals(item.rate, 990)
self.assertEquals(item.discount_percentage, 10)
frappe.db.sql("delete from `tabPricing Rule`")
def make_pricing_rule(**args):
args = frappe._dict(args)
doc = frappe.get_doc({
"doctype": "Pricing Rule",
"title": args.title or "_Test Pricing Rule",
"company": args.company or "_Test Company",
"apply_on": args.apply_on or "Item Code",
"item_code": args.item_code or "_Test Item",
"applicable_for": args.applicable_for,
"selling": args.selling or 0,
"buying": args.buying or 0,
"min_qty": args.min_qty or 0.0,
"max_qty": args.max_qty or 0.0,
"price_or_discount": args.price_or_discount or "Discount Percentage",
"discount_percentage": args.discount_percentage or 0.0,
"price": args.price or 0.0,
"margin_type": args.margin_type,
"margin_rate_or_amount": args.margin_rate_or_amount or 0.0
}).insert(ignore_permissions=True)
apply_on = doc.apply_on.replace(' ', '_').lower()
if args.get(apply_on) and apply_on != "item_code":
doc.db_set(apply_on, args.get(apply_on))
applicable_for = doc.applicable_for.replace(' ', '_').lower()
if args.get(applicable_for):
doc.db_set(applicable_for, args.get(applicable_for))

View File

@@ -12,6 +12,7 @@
"doctype": "DocType",
"document_type": "",
"editable_grid": 0,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
@@ -1927,7 +1928,7 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Item-wise Tax Breakup",
"label": "Tax Breakup",
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -4687,7 +4688,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2017-07-04 17:11:09.477003",
"modified": "2017-07-07 13:05:37.469682",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -803,9 +803,10 @@ class SalesInvoice(SellingController):
continue
for serial_no in item.serial_no.split("\n"):
sno = frappe.get_doc('Serial No', serial_no)
sno.sales_invoice = invoice
sno.db_update()
if serial_no and frappe.db.exists('Serial No', serial_no):
sno = frappe.get_doc('Serial No', serial_no)
sno.sales_invoice = invoice
sno.db_update()
def validate_serial_numbers(self):
"""

View File

@@ -1107,6 +1107,16 @@ class TestSalesInvoice(unittest.TestCase):
def test_item_wise_tax_breakup(self):
si = create_sales_invoice(qty=100, rate=50, do_not_save=True)
si.append("items", {
"item_code": "_Test Item",
"warehouse": "_Test Warehouse - _TC",
"qty": 100,
"rate": 50,
"income_account": "Sales - _TC",
"expense_account": "Cost of Goods Sold - _TC",
"cost_center": "_Test Cost Center - _TC"
})
si.append("taxes", {
"charge_type": "On Net Total",
"account_head": "_Test Account Service Tax - _TC",
@@ -1115,8 +1125,8 @@ class TestSalesInvoice(unittest.TestCase):
"rate": 10
})
si.insert()
tax_breakup_html = '''\n<div class="tax-break-up" style="overflow-x: auto;">\n\t<table class="table table-bordered table-hover">\n\t\t<thead><tr><th class="text-left" style="min-width: 120px;">Item Name</th>\n<th class="text-right" style="min-width: 80px;">Taxable Amount</th>\n<th class="text-right" style="min-width: 80px;">_Test Account Service Tax - _TC</th></tr></thead>\n\t\t<tbody><tr><td>_Test Item</td><td class="text-right">\u20b9 5,000.00</td><td class="text-right">(10.0%) \u20b9 500.00</td></tr></tbody>\n\t</table>\n</div>'''
tax_breakup_html = '''\n<div class="tax-break-up" style="overflow-x: auto;">\n\t<table class="table table-bordered table-hover">\n\t\t<thead><tr><th class="text-left" style="min-width: 120px;">Item Name</th><th class="text-right" style="min-width: 80px;">Taxable Amount</th><th class="text-right" style="min-width: 80px;">_Test Account Service Tax - _TC</th></tr></thead>\n\t\t<tbody><tr><td>_Test Item</td><td class="text-right">\u20b9 10,000.00</td><td class="text-right">(10.0%) \u20b9 1,000.00</td></tr></tbody>\n\t</table>\n</div>'''
self.assertEqual(si.other_charges_calculation, tax_breakup_html)

View File

@@ -1078,7 +1078,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
} else if (item.barcode == me.serach_item.$input.val()) {
search_status = false;
return item.barcode == me.serach_item.$input.val();
} else if (reg.test(item.item_code.toLowerCase()) || reg.test(item.description.toLowerCase()) ||
} else if (reg.test(item.item_code.toLowerCase()) || (item.description && reg.test(item.description.toLowerCase())) ||
reg.test(item.item_name.toLowerCase()) || reg.test(item.item_group.toLowerCase())) {
return true
}
@@ -1351,7 +1351,7 @@ erpnext.pos.PointOfSale = erpnext.taxes_and_totals.extend({
this.child.item_name = this.items[0].item_name;
this.child.stock_uom = this.items[0].stock_uom;
this.child.brand = this.items[0].brand;
this.child.description = this.items[0].description;
this.child.description = this.items[0].description || this.items[0].item_name;
this.child.discount_percentage = 0.0;
this.child.qty = 1;
this.child.item_group = this.items[0].item_group;

View File

@@ -8,9 +8,10 @@ import datetime
from frappe import _, msgprint, scrub
from frappe.defaults import get_user_permissions
from frappe.model.utils import get_fetch_values
from frappe.utils import add_days, getdate, formatdate, get_first_day, date_diff, \
add_years, get_timestamp, nowdate, flt
from frappe.contacts.doctype.address.address import get_address_display, get_default_address
from frappe.utils import (add_days, getdate, formatdate, get_first_day, date_diff,
add_years, get_timestamp, nowdate, flt)
from frappe.contacts.doctype.address.address import (get_address_display,
get_default_address, get_company_address)
from frappe.contacts.doctype.contact.contact import get_contact_details, get_default_contact
from erpnext.exceptions import PartyFrozen, PartyDisabled, InvalidAccountCurrency
from erpnext.accounts.utils import get_fiscal_year
@@ -77,8 +78,9 @@ def set_address_details(out, party, party_type, doctype=None, company=None):
out.update(get_fetch_values(doctype, 'shipping_address_name', out.shipping_address_name))
if doctype and doctype in ['Sales Invoice']:
out.company_address = get_default_address('Company', company)
out.update(get_fetch_values(doctype, 'company_address', out.company_address))
out.update(get_company_address(company))
if out.company_address:
out.update(get_fetch_values(doctype, 'company_address', out.company_address))
def set_contact_details(out, party, party_type):
out.contact_person = get_default_contact(party_type, party.name)

View File

@@ -1,9 +1,3 @@
{% var letterhead= filters.letter_head || (frappe.get_doc(":Company", filters.company) && frappe.get_doc(":Company", filters.company).default_letter_head) || frappe.defaults.get_default("letter_head"); %}
{% if(letterhead) { %}
<div style="margin-bottom: 7px;" class="text-center">
{%= frappe.boot.letter_heads[letterhead].header %}
</div>
{% } %}
<h2 class="text-center">{%= __(report.report_name) %}</h2>
<h4 class="text-center">{%= filters.customer || filters.supplier %} </h4>
<h5 class="text-center">

View File

@@ -1,9 +1,3 @@
{% var letterhead= filters.letter_head || (frappe.get_doc(":Company", filters.company) && frappe.get_doc(":Company", filters.company).default_letter_head) || frappe.defaults.get_default("letter_head"); %}
{% if(letterhead) { %}
<div style="margin-bottom: 7px;" class="text-center">
{%= frappe.boot.letter_heads[letterhead].header %}
</div>
{% } %}
<h2 class="text-center">{%= __("Statement of Account") %}</h2>
<h4 class="text-center">
{% if (filters.party_name) { %}

View File

@@ -1,5 +1,6 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"autoname": "hash",
@@ -13,6 +14,7 @@
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -44,6 +46,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -73,34 +76,7 @@
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -131,6 +107,66 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "lead_time_days",
"fieldtype": "Int",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Lead Time in days",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 1,
@@ -160,6 +196,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -192,6 +229,7 @@
"width": "300px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -219,6 +257,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -248,6 +287,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -278,6 +318,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -306,6 +347,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -338,6 +380,7 @@
"width": "60px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -368,6 +411,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -397,6 +441,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -426,6 +471,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -453,6 +499,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -486,6 +533,7 @@
"width": "100px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -515,6 +563,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -544,6 +593,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -571,6 +621,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -602,6 +653,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -633,6 +685,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -660,6 +713,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -694,6 +748,7 @@
"width": "100px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -725,6 +780,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -754,6 +810,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -782,6 +839,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -811,6 +869,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -841,6 +900,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -869,6 +929,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -899,6 +960,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -929,6 +991,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -957,6 +1020,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -988,6 +1052,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1017,6 +1082,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1047,6 +1113,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1080,6 +1147,7 @@
"width": "120px"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1110,6 +1178,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1137,6 +1206,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1167,6 +1237,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1196,6 +1267,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1227,6 +1299,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1259,6 +1332,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1290,6 +1364,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1318,6 +1393,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -1347,6 +1423,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 1,
"bold": 0,
"collapsible": 0,
@@ -1377,17 +1454,17 @@
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 1,
"image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-02-17 16:43:59.582188",
"modified": "2017-07-10 09:08:52.015387",
"modified_by": "Administrator",
"module": "Buying",
"name": "Supplier Quotation Item",

View File

@@ -517,9 +517,9 @@ class calculate_taxes_and_totals(object):
headings = get_table_column_headings(tax_accounts)
distinct_items = self.get_distinct_items()
distinct_items, taxable_amount = self.get_distinct_items()
rows = get_table_rows(distinct_items, item_tax, tax_accounts, company_currency)
rows = get_table_rows(distinct_items, item_tax, tax_accounts, company_currency, taxable_amount)
if not rows:
self.doc.other_charges_calculation = ""
@@ -531,8 +531,8 @@ class calculate_taxes_and_totals(object):
<tbody>{rows}</tbody>
</table>
</div>'''.format(**{
"headings": "\n".join(headings),
"rows": "\n".join(rows)
"headings": "".join(headings),
"rows": "".join(rows)
})
def get_item_tax(self, item_tax, tax_accounts, company_currency):
@@ -559,7 +559,7 @@ class calculate_taxes_and_totals(object):
item_tax[item_code][tax.name] = [tax_rate, tax_amount]
else:
item_tax[item_code][tax.name] = [cstr(flt(tax_data, tax_rate_precision)) + "%", ""]
item_tax[item_code][tax.name] = [cstr(flt(tax_data, tax_rate_precision)) + "%", "0.00"]
tax_accounts.append([tax.name, tax.account_head])
return item_tax, tax_accounts
@@ -568,13 +568,17 @@ class calculate_taxes_and_totals(object):
def get_distinct_items(self):
distinct_item_names = []
distinct_items = []
taxable_amount = {}
for item in self.doc.items:
item_code = item.item_code or item.item_name
if item_code not in distinct_item_names:
distinct_item_names.append(item_code)
distinct_items.append(item)
taxable_amount[item_code] = item.net_amount
else:
taxable_amount[item_code] = taxable_amount.get(item_code, 0) + item.net_amount
return distinct_items
return distinct_items, taxable_amount
def get_table_column_headings(tax_accounts):
headings_name = [_("Item Name"), _("Taxable Amount")] + [d[1] for d in tax_accounts]
@@ -587,7 +591,7 @@ def get_table_column_headings(tax_accounts):
return headings
def get_table_rows(distinct_items, item_tax, tax_accounts, company_currency):
def get_table_rows(distinct_items, item_tax, tax_accounts, company_currency, taxable_amount):
rows = []
for item in distinct_items:
item_tax_record = item_tax.get(item.item_code or item.item_name)
@@ -601,11 +605,12 @@ def get_table_rows(distinct_items, item_tax, tax_accounts, company_currency):
+ item_tax_record[head[0]][1] + "</td>")
else:
taxes.append("<td></td>")
item_code = item.item_code or item.item_name
rows.append("<tr><td>{item_name}</td><td class='text-right'>{taxable_amount}</td>{taxes}</tr>".format(**{
"item_name": item.item_name,
"taxable_amount": fmt_money(item.net_amount, item.precision("net_amount"), company_currency),
"taxes": "\n".join(taxes)
"taxable_amount": fmt_money(taxable_amount.get(item_code, 0), item.precision("net_amount"), company_currency),
"taxes": "".join(taxes)
}))
return rows

View File

@@ -56,7 +56,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Series",
"length": 0,
@@ -88,7 +88,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Opportunity From",
"length": 0,
@@ -277,8 +277,8 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 1,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Opportunity Type",
"length": 0,
"no_copy": 0,
@@ -310,7 +310,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Status",
"length": 0,
@@ -1189,7 +1189,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-06-13 14:29:07.077697",
"modified": "2017-07-10 15:29:23.921967",
"modified_by": "Administrator",
"module": "CRM",
"name": "Opportunity",

View File

@@ -272,4 +272,6 @@ def auto_close_opportunity():
for opportunity in opportunities:
doc = frappe.get_doc("Opportunity", opportunity.get("name"))
doc.status = "Closed"
doc.save(ignore_permissions=True)
doc.flags.ignore_permissions = True
doc.flags.ignore_mandatory = True
doc.save()

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -640,8 +640,8 @@ attach them to the start of each source file to most effectively state
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.</p>
<pre><code> &lt;one line="" to="" give="" the="" program's="" name="" and="" a="" brief="" idea="" of="" what="" it="" does.=""&gt;
Copyright (C) &lt;year&gt; &lt;name of="" author=""&gt;
<pre><code> &lt;one line to give the program's name and a brief idea of what it does.&gt;
Copyright (C) &lt;year&gt; &lt;name of author&gt;
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -42,6 +42,7 @@ Email alerts allow you to set conditions according to the field data in your doc
The above example will send an Email Alert when a Task is saved with the status "Open" and the Expected End Date for the Task is the date on or before the date on which it was saved on.
### Setting a Message
You can use both Jinja Tags (`{% raw %}{{ doc.[field_name] }}{% endraw %}`) and HTML tags in the message textbox.
@@ -64,6 +65,17 @@ You can use both Jinja Tags (`{% raw %}{{ doc.[field_name] }}{% endraw %}`) and
---
### Setting a Value after the Alert is Set
Sometimes to make sure that the email alert is not sent multiple times, you can
define a custom property (via Customize Form) like "Email Alert Sent" and then
set this property after the alert is sent by setting the **Set Property After Alert**
field.
Then you can use that as a condition in the **Condition** rules to ensure emails are not sent multiple times
<img class="screenshot" alt="Setting Property in Email Alert" src="{{docs_base_url}}/assets/img/setup/email/email-alert-subject.png">
### Example
1. Defining the Criteria

View File

@@ -1,7 +1,7 @@
# User Interface and Navigation
<iframe width="660" height="371" src="https://www.youtube.com/embed/HdblX7kOWWs" frameborder="0" allowfullscreen></iframe>
<iframe width="660" height="371" src="https://www.youtube.com/embed/vKjHRzMEei0" frameborder="0" allowfullscreen></iframe>
**Duration: 2:17**
**Duration: 2:41**
This video walks you through using the ERPNext "Desk" interface. The ERPNext User Interface is very web friendly and if you have used a website or mobile app before, the navigation should be very intuitive.

View File

@@ -80,6 +80,13 @@ website_route_rules = [
"parents": [{"title": _("Supplier Quotation"), "name": "quotations"}]
}
},
{"from_route": "/quotes", "to_route": "Quotation"},
{"from_route": "/quotes/<path:name>", "to_route": "order",
"defaults": {
"doctype": "Quotation",
"parents": [{"title": _("Quotes"), "name": "quotes"}]
}
},
{"from_route": "/shipments", "to_route": "Delivery Note"},
{"from_route": "/shipments/<path:name>", "to_route": "order",
"defaults": {
@@ -110,6 +117,7 @@ standard_portal_menu_items = [
{"title": _("Projects"), "route": "/project", "reference_doctype": "Project"},
{"title": _("Request for Quotations"), "route": "/rfq", "reference_doctype": "Request for Quotation", "role": "Supplier"},
{"title": _("Supplier Quotation"), "route": "/quotations", "reference_doctype": "Supplier Quotation", "role": "Supplier"},
{"title": _("Quotes"), "route": "/quotes", "reference_doctype": "Quotation", "role":"Customer"},
{"title": _("Orders"), "route": "/orders", "reference_doctype": "Sales Order", "role":"Customer"},
{"title": _("Invoices"), "route": "/invoices", "reference_doctype": "Sales Invoice", "role":"Customer"},
{"title": _("Shipments"), "route": "/shipments", "reference_doctype": "Delivery Note", "role":"Customer"},

View File

@@ -12,32 +12,31 @@ import frappe.utils
class TestDailyWorkSummary(unittest.TestCase):
def test_email_trigger(self):
settings, employees, emails = self.setup_and_prepare_test()
for d in employees:
self.setup_and_prepare_test()
for d in self.employees:
# check that email is sent to this employee
self.assertTrue(d.user_id in [d.recipient for d in emails
if settings.subject in d.message])
self.assertTrue(d.user_id in [d.recipient for d in self.emails
if self.settings.subject in d.message])
def test_email_trigger_failed(self):
hour = '00'
if frappe.utils.nowtime().split(':')[0]=='00':
hour = '01'
settings, employees, emails = self.setup_and_prepare_test(hour)
self.setup_and_prepare_test(hour)
for d in employees:
for d in self.employees:
# check that email is sent to this employee
self.assertFalse(d.user_id in [d.recipient for d in emails
if settings.subject in d.message])
self.assertFalse(d.user_id in [d.recipient for d in self.emails
if self.settings.subject in d.message])
def test_incoming(self):
settings, employees, emails = self.setup_and_prepare_test()
# get test mail with message-id as in-reply-to
self.setup_and_prepare_test()
with open(os.path.join(os.path.dirname(__file__), "test_data", "test-reply.raw"), "r") as f:
test_mails = [f.read().replace('{{ sender }}', employees[-1].user_id)\
.replace('{{ message_id }}', emails[-1].message_id)]
test_mails = [f.read().replace('{{ sender }}', self.employees[-1].user_id)\
.replace('{{ message_id }}', self.emails[-1].message_id)]
# pull the mail
email_account = frappe.get_doc("Email Account", "_Test Email Account 1")
@@ -52,30 +51,34 @@ class TestDailyWorkSummary(unittest.TestCase):
self.assertTrue('I built Daily Work Summary!' in summary)
def setup_and_prepare_test(self, hour=None):
if not hour:
hour = frappe.utils.nowtime().split(':')[0]
frappe.db.sql('delete from `tabDaily Work Summary`')
frappe.db.sql('delete from `tabEmail Queue`')
frappe.db.sql('delete from `tabEmail Queue Recipient`')
frappe.db.sql('delete from `tabCommunication`')
# setup email to trigger at this our
settings = frappe.get_doc('Daily Work Summary Settings')
settings.companies = []
settings.append('companies', dict(company='_Test Company',
send_emails_at=hour + ':00'))
settings.test_subject = 'this is a subject for testing summary emails'
settings.save()
self.setup_settings(hour)
from erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings \
import trigger_emails
trigger_emails()
# check if emails are created
employees = frappe.get_all('Employee', fields = ['user_id'],
filters=dict(company='_Test Company', status='Active'))
self.employees = frappe.get_all('Employee', fields = ['user_id'],
filters=dict(company='_Test Company', status='Active', user_id=('!=', 'test@example.com')))
emails = frappe.db.sql("""select r.recipient, q.message, q.message_id from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r where q.name = r.parent""", as_dict=1)
self.emails = frappe.db.sql("""select r.recipient, q.message, q.message_id from `tabEmail Queue` as q, `tabEmail Queue Recipient` as r where q.name = r.parent""", as_dict=1)
frappe.db.commit()
def setup_settings(self, hour=None):
# setup email to trigger at this our
if not hour:
hour = frappe.utils.nowtime().split(':')[0]
self.settings = frappe.get_doc('Daily Work Summary Settings')
self.settings.companies = []
self.settings.append('companies', dict(company='_Test Company',
send_emails_at=hour + ':00'))
self.settings.test_subject = 'this is a subject for testing summary emails'
self.settings.save()
return settings, employees, emails

View File

@@ -365,9 +365,6 @@ class BOM(WebsiteGenerator):
base_total_rm_cost = 0
for d in self.get('items'):
if d.bom_no:
d.rate = self.get_bom_unitcost(d.bom_no)
d.base_rate = flt(d.rate) * flt(self.conversion_rate)
d.amount = flt(d.rate, self.precision("rate", d)) * flt(d.stock_qty, self.precision("stock_qty", d))
d.base_amount = d.amount * flt(self.conversion_rate)

View File

@@ -151,26 +151,28 @@ frappe.ui.form.on("Production Order", {
},
production_item: function(frm) {
frappe.call({
method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
args: {
item: frm.doc.production_item,
project: frm.doc.project
},
callback: function(r) {
if(r.message) {
erpnext.in_production_item_onchange = true;
$.each(["description", "stock_uom", "project", "bom_no"], function(i, field) {
frm.set_value(field, r.message[field]);
});
if (frm.doc.production_item) {
frappe.call({
method: "erpnext.manufacturing.doctype.production_order.production_order.get_item_details",
args: {
item: frm.doc.production_item,
project: frm.doc.project
},
callback: function(r) {
if(r.message) {
erpnext.in_production_item_onchange = true;
$.each(["description", "stock_uom", "project", "bom_no"], function(i, field) {
frm.set_value(field, r.message[field]);
});
if(r.message["set_scrap_wh_mandatory"]){
frm.toggle_reqd("scrap_warehouse", true);
if(r.message["set_scrap_wh_mandatory"]){
frm.toggle_reqd("scrap_warehouse", true);
}
erpnext.in_production_item_onchange = false;
}
erpnext.in_production_item_onchange = false;
}
}
});
});
}
},
project: function(frm) {
@@ -210,7 +212,9 @@ frappe.ui.form.on("Production Order", {
frappe.ui.form.on("Production Order Item", {
source_warehouse: function(frm, cdt, cdn) {
var row = locals[cdt][cdn];
if(row.source_warehouse) {
if(!row.item_code) {
frappe.throw(__("Please set the Item Code first"));
} else if(row.source_warehouse) {
frappe.call({
"method": "erpnext.stock.utils.get_latest_stock_qty",
args: {
@@ -263,7 +267,7 @@ erpnext.production_order = {
erpnext.production_order.stop_production_order(frm, "Resumed");
}, __("Status"));
}
if(!frm.doc.skip_transfer){
if ((flt(doc.material_transferred_for_manufacturing) < flt(doc.qty))
&& frm.doc.status != 'Stopped') {
@@ -272,7 +276,7 @@ erpnext.production_order = {
erpnext.production_order.make_se(frm, 'Material Transfer for Manufacture');
});
start_btn.addClass('btn-primary');
}
}
}
if(!frm.doc.skip_transfer){
@@ -291,8 +295,9 @@ erpnext.production_order = {
} else {
if ((flt(doc.produced_qty) < flt(doc.qty)) && frm.doc.status != 'Stopped') {
frm.has_finish_btn = true;
var finish_btn = frm.add_custom_button(__('Finish'),
cur_frm.cscript['Update Finished Goods']);
var finish_btn = frm.add_custom_button(__('Finish'), function() {
erpnext.production_order.make_se(frm, 'Manufacture');
});
finish_btn.addClass('btn-primary');
}
}

View File

@@ -1358,7 +1358,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-06-13 14:29:00.457874",
"modified": "2017-07-10 14:29:00.457874",
"modified_by": "Administrator",
"module": "Manufacturing",
"name": "Production Order",

View File

@@ -353,7 +353,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-05-15 17:37:20.212361",
"modified": "2017-07-10 17:37:20.212361",
"modified_by": "Administrator",
"module": "Manufacturing",
"name": "Production Order Item",

View File

@@ -413,4 +413,7 @@ execute:frappe.reload_doc('regional', 'doctype', 'gst_hsn_code')
erpnext.patches.v8_1.removed_roles_from_gst_report_non_indian_account
erpnext.patches.v8_1.gst_fixes #2017-07-06
erpnext.patches.v8_0.update_production_orders
erpnext.patches.v8_1.remove_sales_invoice_from_returned_serial_no
erpnext.patches.v8_1.remove_sales_invoice_from_returned_serial_no
erpnext.patches.v8_1.allow_invoice_copy_to_edit_after_submit
erpnext.patches.v8_1.add_hsn_sac_codes
erpnext.patches.v8_1.update_gst_state

View File

@@ -51,7 +51,7 @@ def check_is_warehouse_associated_with_company():
def make_warehouse_nestedset(company=None):
validate_parent_account_for_warehouse(company)
stock_account_group = get_stock_account_group(company.name)
enable_perpetual_inventory = cint(erpnext.is_perpetual_inventory_enabled(company)) or 0
enable_perpetual_inventory = cint(erpnext.is_perpetual_inventory_enabled(company.name)) or 0
if not stock_account_group and enable_perpetual_inventory:
return

View File

@@ -0,0 +1,33 @@
# Copyright (c) 2017, Frappe and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
import frappe
def execute():
# new field address_html is created in place of address field for the company's address in PR #8754 (without patch)
# so here is the patch for moving the address details in the address doc
company_list = []
if 'address' in frappe.db.get_table_columns('Company'):
company_list = frappe.db.sql('''select name, address from `tabCompany`
where address is not null and address != ""''', as_dict=1)
for company in company_list:
add_list = company.address.split(" ")
if ',' in company.address:
add_list = company.address.rpartition(',')
elif ' ' in company.address:
add_list = company.address.rpartition(' ')
else:
add_list = [company.address, None, company.address]
doc = frappe.get_doc({
"doctype":"Address",
"address_line1": add_list[0],
"city": add_list[2],
"links": [{
"link_doctype": "Company",
"link_name": company.name
}]
})
doc.save()

View File

@@ -9,8 +9,8 @@ from frappe.model.mapper import get_mapped_doc
def execute():
# for converting student batch into student group
for doctype in ["Student Group", "Student Group Student", "Student Group Instructor", "Student Attendance"]:
frappe.reload_doc("schools", "doctype", doctype)
for doctype in ["Student Group", "Student Group Student", "Student Group Instructor", "Student Attendance", "Student"]:
frappe.reload_doc("schools", "doctype", frappe.scrub(doctype))
if frappe.db.table_exists("Student Batch"):
student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch,

View File

@@ -0,0 +1,10 @@
import frappe
from erpnext.regional.india.setup import setup
def execute():
company = frappe.get_all('Company', filters = {'country': 'India'})
if not company:
return
# call setup for india
setup(patch=True)

View File

@@ -0,0 +1,12 @@
import frappe
def execute():
inv_copy_options = "ORIGINAL FOR RECIPIENT\nDUPLICATE FOR TRANSPORTER\nDUPLICATE FOR SUPPLIER\nTRIPLICATE FOR SUPPLIER"
frappe.db.sql("""update `tabCustom Field` set allow_on_submit=1, options=%s
where fieldname='invoice_copy' and dt = 'Sales Invoice'
""", inv_copy_options)
frappe.db.sql("""update `tabCustom Field` set read_only=1
where fieldname='gst_state_number' and dt = 'Address'
""")

View File

@@ -44,7 +44,7 @@ def add_custom_fields():
],
'Sales Invoice': [
dict(fieldname='invoice_copy', label='Invoice Copy',
fieldtype='Select', insert_after='project', print_hide=1,
fieldtype='Select', insert_after='project', print_hide=1, allow_on_submit=1,
options='ORIGINAL FOR RECIPIENT\nDUPLICATE FOR TRANSPORTER\nTRIPLICATE FOR SUPPLIER'),
],
'Sales Order Item': [hsn_sac_field],

View File

@@ -5,6 +5,7 @@ def execute():
frappe.reload_doc('regional', 'doctype', 'gst_settings')
frappe.reload_doc('regional', 'doctype', 'gst_hsn_code')
frappe.reload_doc('stock', 'doctype', 'item')
frappe.reload_doc("stock", "doctype", "customs_tariff_number")
for report_name in ('GST Sales Register', 'GST Purchase Register',
'GST Itemised Sales Register', 'GST Itemised Purchase Register'):

View File

@@ -0,0 +1,13 @@
import frappe
from erpnext.regional.india import states
def execute():
company = frappe.get_all('Company', filters = {'country': 'India'})
if not company:
return
if not frappe.db.get_value("Custom Field", filters={'fieldname':'gst_state'}):
return
frappe.db.sql("update `tabCustom Field` set options=%s where fieldname='gst_state'", '\n'.join(states))
frappe.db.sql("update `tabAddress` set gst_state='Chhattisgarh' where gst_state='Chattisgarh'")

View File

@@ -89,7 +89,11 @@ frappe.ui.form.on('Salary Structure', {
}
})
var get_payment_mode_account = function(frm, mode_of_payment, callback){
var get_payment_mode_account = function(frm, mode_of_payment, callback) {
if(!frm.doc.company) {
frappe.throw(__("Please select the Company first"));
}
return frappe.call({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
args: {

View File

@@ -675,7 +675,7 @@ erpnext.taxes_and_totals = erpnext.payments.extend({
item_tax[item_code][tax.name] = [tax_rate, tax_amount];
} else {
item_tax[item_code][tax.name] = [flt(tax_data, tax_rate_precision) + "%", ""];
item_tax[item_code][tax.name] = [flt(tax_data, tax_rate_precision) + "%", "0.00"];
}
});
tax_accounts.push([tax.name, tax.account_head]);
@@ -689,31 +689,38 @@ erpnext.taxes_and_totals = erpnext.payments.extend({
return '<th style="min-width: 80px;" class="text-right">' + (head || "") + "</th>";
}
}
).join("\n");
).join("");
var distinct_item_names = [];
var distinct_items = [];
var taxable_amount = {};
$.each(this.frm.doc["items"] || [], function(i, item) {
if(distinct_item_names.indexOf(item.item_code || item.item_name)===-1) {
distinct_item_names.push(item.item_code || item.item_name);
var item_code = item.item_code || item.item_name;
if(distinct_item_names.indexOf(item_code)===-1) {
distinct_item_names.push(item_code);
distinct_items.push(item);
taxable_amount[item_code] = item.net_amount;
} else {
taxable_amount[item_code] = taxable_amount[item_code] + item.net_amount;
}
});
var rows = $.map(distinct_items, function(item) {
var item_tax_record = item_tax[item.item_code || item.item_name];
var item_code = item.item_code || item.item_name;
var item_tax_record = item_tax[item_code];
if(!item_tax_record) { return null; }
return repl("<tr><td>%(item_name)s</td><td class='text-right'>%(taxable_amount)s</td>%(taxes)s</tr>", {
item_name: item.item_name,
taxable_amount: format_currency(item.net_amount,
taxable_amount: format_currency(taxable_amount[item_code],
company_currency, precision("net_amount", item)),
taxes: $.map(tax_accounts, function(head) {
return item_tax_record[head[0]] ?
"<td class='text-right'>(" + item_tax_record[head[0]][0] + ") " + item_tax_record[head[0]][1] + "</td>" :
"<td></td>";
}).join("\n")
}).join("")
});
}).join("\n");
}).join("");
if(!rows) return "";
return '<div class="tax-break-up" style="overflow-x: auto;">\

View File

@@ -63,37 +63,32 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
});
frappe.ui.form.on(this.frm.doctype, "additional_discount_percentage", function(frm) {
if (frm.via_discount_amount) {
return;
}
if(!frm.doc.apply_discount_on) {
frappe.msgprint(__("Please set 'Apply Additional Discount On'"));
return
return;
}
frm.via_discount_percentage = true;
if(frm.doc.additional_discount_percentage && frm.doc.discount_amount) {
// Reset discount amount and net / grand total
frm.set_value("discount_amount", 0);
frm.doc.discount_amount = 0;
frm.cscript.calculate_taxes_and_totals();
}
var total = flt(frm.doc[frappe.model.scrub(frm.doc.apply_discount_on)]);
var discount_amount = flt(total*flt(frm.doc.additional_discount_percentage) / 100,
precision("discount_amount"));
frm.set_value("discount_amount", discount_amount);
delete frm.via_discount_percentage;
frm.set_value("discount_amount", discount_amount)
.then(() => delete frm.via_discount_percentage);
});
frappe.ui.form.on(this.frm.doctype, "discount_amount", function(frm) {
frm.cscript.set_dynamic_labels();
if (!frm.via_discount_percentage) {
frm.via_discount_amount = true;
frm.set_value("additional_discount_percentage", 0);
delete frm.via_discount_amount;
frm.doc.additional_discount_percentage = 0;
}
frm.cscript.calculate_taxes_and_totals();
@@ -343,7 +338,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
this.frm.trigger("item_code", cdt, cdn);
}
else {
var sr_no = [];
var valid_serial_nos = [];
// Replacing all occurences of comma with carriage return
var serial_nos = item.serial_no.trim().replace(/,/g, '\n');
@@ -352,21 +347,19 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
// Trim each string and push unique string to new list
for (var x=0; x<=serial_nos.length - 1; x++) {
if (serial_nos[x].trim() != "" && sr_no.indexOf(serial_nos[x].trim()) == -1) {
sr_no.push(serial_nos[x].trim());
if (serial_nos[x].trim() != "" && valid_serial_nos.indexOf(serial_nos[x].trim()) == -1) {
valid_serial_nos.push(serial_nos[x].trim());
}
}
// Add the new list to the serial no. field in grid with each in new line
item.serial_no = "";
for (var x=0; x<=sr_no.length - 1; x++)
item.serial_no += sr_no[x] + '\n';
item.serial_no = valid_serial_nos.join('\n');
refresh_field("serial_no", item.name, item.parentfield);
if(!doc.is_return) {
frappe.model.set_value(item.doctype, item.name,
"qty", sr_no.length / item.conversion_factor);
frappe.model.set_value(item.doctype, item.name, "stock_qty", sr_no.length);
"qty", valid_serial_nos.length / item.conversion_factor);
frappe.model.set_value(item.doctype, item.name, "stock_qty", valid_serial_nos.length);
}
}
}
@@ -866,6 +859,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
"pricing_rule": d.pricing_rule,
"warehouse": d.warehouse,
"serial_no": d.serial_no,
"discount_percentage": d.discount_percentage || 0.0,
"conversion_factor": d.conversion_factor || 1.0
});

View File

@@ -68,13 +68,13 @@ var erpnext_slides = [
slide.get_input("company_name").on("change", function () {
var parts = slide.get_input("company_name").val().split(" ");
var abbr = $.map(parts, function (p) { return p ? p.substr(0, 1) : null }).join("");
slide.get_field("company_abbr").set_input(abbr.slice(0, 5).toUpperCase());
slide.get_field("company_abbr").set_value(abbr.slice(0, 5).toUpperCase());
}).val(frappe.boot.sysdefaults.company_name || "").trigger("change");
slide.get_input("company_abbr").on("change", function () {
if (slide.get_input("company_abbr").val().length > 5) {
frappe.msgprint("Company Abbreviation cannot have more than 5 characters");
slide.get_field("company_abbr").set_input("");
slide.get_field("company_abbr").set_value("");
}
});
}
@@ -189,6 +189,32 @@ var erpnext_slides = [
}
},
{
// Users
name: 'users',
domains: ["all"],
title: __("Add Users"),
help: __("Add users to your organization, other than yourself"),
add_more: 1,
max_count: 3,
fields: [
{fieldtype:"Section Break"},
{fieldtype:"Data", fieldname:"user_fullname",
label:__("Full Name"), static: 1},
{fieldtype:"Data", fieldname:"user_email", label:__("Email ID"),
placeholder:__("user@example.com"), options: "Email", static: 1},
{fieldtype:"Column Break"},
{fieldtype: "Check", fieldname: "user_sales",
label:__("Sales"), "default": 1, static: 1,
hidden: frappe.setup.domain==='Education' ? 1 : 0},
{fieldtype: "Check", fieldname: "user_purchaser",
label:__("Purchaser"), "default": 1, static: 1,
hidden: frappe.setup.domain==='Education' ? 1 : 0},
{fieldtype: "Check", fieldname: "user_accountant",
label:__("Accountant"), "default": 1, static: 1,
hidden: frappe.setup.domain==='Education' ? 1 : 0},
]
},
{
// Taxes
@@ -198,7 +224,8 @@ var erpnext_slides = [
title: __("Add Taxes"),
help: __("List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later."),
add_more: 1,
max_count: 4,
max_count: 3,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break"},
{fieldtype:"Data", fieldname:"tax", label:__("Tax"),
@@ -216,7 +243,8 @@ var erpnext_slides = [
title: __("Add Customers"),
help: __("List a few of your customers. They could be organizations or individuals."),
add_more: 1,
max_count: 6,
max_count: 5,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break"},
{fieldtype:"Data", fieldname:"customer", label:__("Customer"),
@@ -235,7 +263,8 @@ var erpnext_slides = [
title: __("Your Suppliers"),
help: __("List a few of your suppliers. They could be organizations or individuals."),
add_more: 1,
max_count: 6,
max_count: 5,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break"},
{fieldtype:"Data", fieldname:"supplier", label:__("Supplier"),
@@ -254,7 +283,8 @@ var erpnext_slides = [
title: __("Your Products or Services"),
help: __("List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start."),
add_more: 1,
max_count: 6,
max_count: 5,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break", show_section_border: true},
{fieldtype:"Data", fieldname:"item", label:__("Item"),
@@ -262,16 +292,16 @@ var erpnext_slides = [
{fieldtype:"Select", label:__("Group"), fieldname:"item_group",
options:[__("Products"), __("Services"),
__("Raw Material"), __("Consumable"), __("Sub Assemblies")],
"default": __("Products")},
"default": __("Products"), static: 1},
{fieldtype:"Select", fieldname:"item_uom", label:__("UOM"),
options:[__("Unit"), __("Nos"), __("Box"), __("Pair"), __("Kg"), __("Set"),
__("Hour"), __("Minute"), __("Litre"), __("Meter"), __("Gram")],
"default": __("Unit")},
{fieldtype: "Check", fieldname: "is_sales_item", label:__("We sell this Item"), default: 1},
{fieldtype: "Check", fieldname: "is_purchase_item", label:__("We buy this Item")},
"default": __("Unit"), static: 1},
{fieldtype: "Check", fieldname: "is_sales_item", label:__("We sell this Item"), default: 1, static: 1},
{fieldtype: "Check", fieldname: "is_purchase_item", label:__("We buy this Item"), static: 1},
{fieldtype:"Column Break"},
{fieldtype:"Currency", fieldname:"item_price", label:__("Rate")},
{fieldtype:"Attach Image", fieldname:"item_img", label:__("Attach Image"), is_private: 0},
{fieldtype:"Currency", fieldname:"item_price", label:__("Rate"), static: 1},
{fieldtype:"Attach Image", fieldname:"item_img", label:__("Attach Image"), is_private: 0, static: 1},
],
get_item_count: function() {
return this.item_count;
@@ -285,7 +315,8 @@ var erpnext_slides = [
title: __("Program"),
help: __("Example: Masters in Computer Science"),
add_more: 1,
max_count: 6,
max_count: 5,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break", show_section_border: true},
{fieldtype:"Data", fieldname:"program", label:__("Program"), placeholder: __("Program Name")},
@@ -299,7 +330,8 @@ var erpnext_slides = [
title: __("Course"),
help: __("Example: Basic Mathematics"),
add_more: 1,
max_count: 6,
max_count: 5,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break", show_section_border: true},
{fieldtype:"Data", fieldname:"course", label:__("Course"), placeholder: __("Course Name")},
@@ -313,7 +345,8 @@ var erpnext_slides = [
title: __("Instructor"),
help: __("People who teach at your organisation"),
add_more: 1,
max_count: 6,
max_count: 5,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break", show_section_border: true},
{fieldtype:"Data", fieldname:"instructor", label:__("Instructor"), placeholder: __("Instructor Name")},
@@ -327,20 +360,21 @@ var erpnext_slides = [
title: __("Room"),
help: __("Classrooms/ Laboratories etc where lectures can be scheduled."),
add_more: 1,
max_count: 4,
max_count: 3,
mandatory_entry: 1,
fields: [
{fieldtype:"Section Break", show_section_border: true},
{fieldtype:"Data", fieldname:"room", label:__("Room")},
{fieldtype:"Column Break"},
{fieldtype:"Int", fieldname:"room_capacity", label:__("Room") + " Capacity"},
{fieldtype:"Int", fieldname:"room_capacity", label:__("Room") + " Capacity", static: 1},
]
},
{
// last slide: Bootstrap
// last slide: Sample Data
name: 'bootstrap',
domains: ["all"],
title: __("Bootstrap"),
title: __("Sample Data"),
fields: [{fieldtype: "Section Break"},
{fieldtype: "Check", fieldname: "add_sample_data",
label: __("Add a few sample records"), "default": 1},

View File

@@ -50,6 +50,14 @@ erpnext.SerialNoBatchSelector = Class.extend({
batches.grid.refresh();
batches.grid.add_new_row(null, null, null);
}
},
get_query: function() {
return {
filters: {
is_group: 0,
company: me.frm.doc.company
}
};
}
},
{fieldtype:'Column Break'},

View File

@@ -1,11 +1,12 @@
states = [
'',
'Andaman and Nicobar Islands',
'Andhra Pradesh',
'Arunachal Pradesh',
'Assam',
'Bihar',
'Chandigarh',
'Chattisgarh',
'Chhattisgarh',
'Dadra and Nagar Haveli',
'Daman and Diu',
'Delhi',
@@ -25,6 +26,7 @@ states = [
'Mizoram',
'Nagaland',
'Odisha',
'Other Territory',
'Pondicherry',
'Punjab',
'Rajasthan',
@@ -38,12 +40,13 @@ states = [
]
state_numbers = {
"Andaman and Nicobar Islands": "35",
"Andhra Pradesh": "37",
"Arunachal Pradesh": "12",
"Assam": "18",
"Bihar": "10",
"Chandigarh": "04",
"Chattisgarh": "22",
"Chhattisgarh": "22",
"Dadra and Nagar Haveli": "26",
"Daman and Diu": "25",
"Delhi": "07",
@@ -63,6 +66,7 @@ state_numbers = {
"Mizoram": "15",
"Nagaland": "13",
"Odisha": "21",
"Other Territory": "98",
"Pondicherry": "34",
"Punjab": "03",
"Rajasthan": "08",
@@ -70,7 +74,7 @@ state_numbers = {
"Tamil Nadu": "33",
"Telangana": "36",
"Tripura": "16",
"Uttar Pradesh": "35",
"Uttarakhand": "36",
"West Bengal": "37"
"Uttar Pradesh": "09",
"Uttarakhand": "05",
"West Bengal": "19",
}

View File

@@ -15,7 +15,7 @@
"state_name": "Uttarakhand"
},
{
"state_number": "37",
"state_number": "19",
"state_code": "WB",
"state_name": "West Bengal"
},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -12,10 +12,10 @@ def setup(company=None, patch=True):
make_custom_fields()
add_permissions()
add_custom_roles_for_reports()
add_hsn_codes()
update_address_template()
add_hsn_sac_codes()
add_print_formats()
if not patch:
update_address_template()
make_fixtures()
def update_address_template():
@@ -33,21 +33,26 @@ def update_address_template():
template=html
)).insert()
def add_hsn_codes():
if frappe.db.count('GST HSN Code') > 100:
return
def add_hsn_sac_codes():
# HSN codes
with open(os.path.join(os.path.dirname(__file__), 'hsn_code_data.json'), 'r') as f:
hsn_codes = json.loads(f.read())
frappe.db.commit()
frappe.db.sql('truncate `tabGST HSN Code`')
for d in hsn_codes:
hsn_code = frappe.new_doc('GST HSN Code')
hsn_code.update(d)
hsn_code.name = hsn_code.hsn_code
hsn_code.db_insert()
create_hsn_codes(hsn_codes, code_field="hsn_code")
# SAC Codes
with open(os.path.join(os.path.dirname(__file__), 'sac_code_data.json'), 'r') as f:
sac_codes = json.loads(f.read())
create_hsn_codes(sac_codes, code_field="sac_code")
def create_hsn_codes(data, code_field):
for d in data:
if not frappe.db.exists("GST HSN Code", d[code_field]):
hsn_code = frappe.new_doc('GST HSN Code')
hsn_code.description = d["description"]
hsn_code.hsn_code = d[code_field]
hsn_code.name = d[code_field]
hsn_code.db_insert()
frappe.db.commit()
@@ -84,7 +89,7 @@ def make_custom_fields():
dict(fieldname='gst_state', label='GST State', fieldtype='Select',
options='\n'.join(states), insert_after='gstin'),
dict(fieldname='gst_state_number', label='GST State Number',
fieldtype='Int', insert_after='gst_state'),
fieldtype='Int', insert_after='gst_state', read_only=1),
],
'Purchase Invoice': [
dict(fieldname='supplier_gstin', label='Supplier GSTIN',
@@ -102,8 +107,8 @@ def make_custom_fields():
fieldtype='Data', insert_after='company_address',
options='company_address.gstin', print_hide=1),
dict(fieldname='invoice_copy', label='Invoice Copy',
fieldtype='Select', insert_after='project', print_hide=1,
options='ORIGINAL FOR RECIPIENT\nDUPLICATE FOR TRANSPORTER\nTRIPLICATE FOR SUPPLIER')
fieldtype='Select', insert_after='project', print_hide=1, allow_on_submit=1,
options='ORIGINAL FOR RECIPIENT\nDUPLICATE FOR TRANSPORTER\nDUPLICATE FOR SUPPLIER\nTRIPLICATE FOR SUPPLIER')
],
'Item': [
dict(fieldname='gst_hsn_code', label='HSN/SAC',
@@ -119,7 +124,13 @@ def make_custom_fields():
for doctype, fields in custom_fields.items():
for df in fields:
create_custom_field(doctype, df)
field = frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": df["fieldname"]})
if not field:
create_custom_field(doctype, df)
else:
custom_field = frappe.get_doc("Custom Field", field)
custom_field.update(df)
custom_field.save()
def make_fixtures():
docs = [

View File

@@ -19,6 +19,6 @@ def validate_gstin_for_india(doc, method):
if doc.gst_state:
doc.gst_state_number = state_numbers[doc.gst_state]
if doc.gst_state_number != doc.gstin[:2]:
if doc.gstin != "NA" and doc.gst_state_number != doc.gstin[:2]:
frappe.throw(_("First 2 digits of GSTIN should match with State number {0}")
.format(doc.gst_state_number))
.format(doc.gst_state_number))

View File

@@ -7,10 +7,10 @@
"docstatus": 0,
"doctype": "Print Format",
"font": "Default",
"format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"<div class=\\\"print-heading\\\">\\n\\t<h2>\\n\\t\\tSALES INVOICE<br>\\n\\t\\t<small>{{ doc.name }}</small>\\n\\t</h2>\\n</div>\\n<h2 class=\\\"text-center\\\">\\n\\t{% if doc.invoice_copy -%}\\n\\t\\t<small>{{ doc.invoice_copy }}</small>\\n\\t{% endif -%}\\n</h2>\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"company\", \"label\": \"Company\"}, {\"print_hide\": 0, \"fieldname\": \"company_address_display\", \"label\": \"Company Address\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"posting_date\", \"label\": \"Date\"}, {\"print_hide\": 0, \"fieldname\": \"due_date\", \"label\": \"Payment Due Date\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"options\": \"<hr>\", \"fieldname\": \"_custom_html\", \"fieldtype\": \"HTML\", \"label\": \"Custom HTML\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Address\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"customer_name\", \"label\": \"Customer Name\"}, {\"print_hide\": 0, \"fieldname\": \"address_display\", \"label\": \"Address\"}, {\"print_hide\": 0, \"fieldname\": \"contact_display\", \"label\": \"Contact\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"shipping_address\", \"label\": \"Shipping Address\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"item_code\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"200px\"}, {\"print_hide\": 0, \"fieldname\": \"gst_hsn_code\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"qty\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"uom\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"rate\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"items\", \"label\": \"Items\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"total\", \"label\": \"Total\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"300px\"}], \"print_hide\": 0, \"fieldname\": \"taxes\", \"label\": \"Sales Taxes and Charges\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"grand_total\", \"label\": \"Grand Total\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\", \"label\": \"Rounded Total\"}, {\"print_hide\": 0, \"fieldname\": \"in_words\", \"label\": \"In Words\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"other_charges_calculation\", \"align\": \"left\", \"label\": \"Item-wise Tax Breakup\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Terms\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"terms\", \"label\": \"Terms and Conditions Details\"}]",
"format_data": "[{\"fieldname\": \"print_heading_template\", \"fieldtype\": \"Custom HTML\", \"options\": \"<div class=\\\"print-heading\\\">\\n\\t<h2>\\n\\t\\tTAX INVOICE<br>\\n\\t\\t<small>{{ doc.name }}</small>\\n\\t</h2>\\n</div>\\n<h2 class=\\\"text-center\\\">\\n\\t{% if doc.invoice_copy -%}\\n\\t\\t<small>{{ doc.invoice_copy }}</small>\\n\\t{% endif -%}\\n</h2>\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"company\", \"label\": \"Company\"}, {\"print_hide\": 0, \"fieldname\": \"company_address_display\", \"label\": \"Company Address\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"posting_date\", \"label\": \"Date\"}, {\"print_hide\": 0, \"fieldname\": \"due_date\", \"label\": \"Payment Due Date\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"options\": \"<hr>\", \"fieldname\": \"_custom_html\", \"fieldtype\": \"HTML\", \"label\": \"Custom HTML\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Address\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"customer_name\", \"label\": \"Customer Name\"}, {\"print_hide\": 0, \"fieldname\": \"address_display\", \"label\": \"Address\"}, {\"print_hide\": 0, \"fieldname\": \"contact_display\", \"label\": \"Contact\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"shipping_address\", \"label\": \"Shipping Address\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"item_code\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"200px\"}, {\"print_hide\": 0, \"fieldname\": \"gst_hsn_code\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"qty\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"uom\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"rate\", \"print_width\": \"\"}, {\"print_hide\": 0, \"fieldname\": \"amount\", \"print_width\": \"\"}], \"print_hide\": 0, \"fieldname\": \"items\", \"label\": \"Items\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"total\", \"label\": \"Total\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"visible_columns\": [{\"print_hide\": 0, \"fieldname\": \"description\", \"print_width\": \"300px\"}], \"print_hide\": 0, \"fieldname\": \"taxes\", \"label\": \"Sales Taxes and Charges\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"grand_total\", \"label\": \"Grand Total\"}, {\"print_hide\": 0, \"fieldname\": \"rounded_total\", \"label\": \"Rounded Total\"}, {\"print_hide\": 0, \"fieldname\": \"in_words\", \"label\": \"In Words\"}, {\"fieldtype\": \"Section Break\", \"label\": \"\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"other_charges_calculation\", \"align\": \"left\", \"label\": \"Tax Breakup\"}, {\"fieldtype\": \"Section Break\", \"label\": \"Terms\"}, {\"fieldtype\": \"Column Break\"}, {\"print_hide\": 0, \"fieldname\": \"terms\", \"label\": \"Terms and Conditions Details\"}]",
"idx": 0,
"line_breaks": 0,
"modified": "2017-07-06 17:47:38.279783",
"modified": "2017-07-07 13:06:20.042807",
"modified_by": "Administrator",
"module": "Regional",
"name": "GST Tax Invoice",

View File

@@ -4,6 +4,7 @@
cur_frm.add_fetch("student_group", "course", "course");
cur_frm.add_fetch("examiner", "instructor_name", "examiner_name");
cur_frm.add_fetch("supervisor", "instructor_name", "supervisor_name");
cur_frm.add_fetch("course", "default_grading_scale", "grading_scale");
frappe.ui.form.on("Assessment Plan", {
onload: function(frm) {

View File

@@ -143,9 +143,10 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "Today",
"fieldname": "enrollment_date",
"fieldtype": "Date",
"default": "0",
"description": "Check this if the Student is residing at the Institute's Hostel.",
"fieldname": "boarding_student",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
@@ -153,9 +154,10 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Enrollment Date",
"label": "Boarding Student",
"length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"precision": "",
"print_hide": 0,
@@ -163,7 +165,7 @@
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
@@ -321,6 +323,37 @@
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "Today",
"fieldname": "enrollment_date",
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Enrollment Date",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
@@ -370,7 +403,7 @@
"label": "Mode of Transportation",
"length": 0,
"no_copy": 0,
"options": "\nSchool Bus\nPublic Transport\nSelf-Driving Vehicle\nPick/Drop by Guardian",
"options": "\nWalking\nSchool Bus\nPublic Transport\nSelf-Driving Vehicle\nPick/Drop by Guardian",
"permlevel": 0,
"precision": "",
"print_hide": 0,
@@ -638,7 +671,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2017-06-30 08:21:49.430996",
"modified": "2017-07-10 18:16:15.810616",
"modified_by": "Administrator",
"module": "Schools",
"name": "Program Enrollment",

View File

@@ -589,67 +589,6 @@
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "section_break_18",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Guardian Details",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "guardians",
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Guardians",
"length": 0,
"no_copy": 0,
"options": "Student Guardian",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
@@ -859,6 +798,67 @@
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "section_break_18",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Guardian Details",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "guardians",
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Guardians",
"length": 0,
"no_copy": 0,
"options": "Student Guardian",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
@@ -1114,7 +1114,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2017-06-30 08:21:50.423784",
"modified": "2017-07-07 16:30:08.930882",
"modified_by": "Administrator",
"module": "Schools",
"name": "Student",

View File

@@ -7,10 +7,24 @@ def get_data():
'fieldname': 'student',
'transactions': [
{
'items': ['Student Log', 'Student Group', 'Program Enrollment']
'label': _('Admission'),
'items': ['Program Enrollment']
},
{
'items': ['Fees', 'Assessment Result', 'Student Attendance', 'Student Leave Application']
'label': _('Student Activity'),
'items': ['Student Log', 'Student Group', ]
},
{
'label': _('Assessment'),
'items': ['Assessment Result']
},
{
'label': _('Attendance'),
'items': ['Student Attendance', 'Student Leave Application']
},
{
'label': _('Fee'),
'items': ['Fees']
}
]
}

View File

@@ -135,22 +135,24 @@ schools.StudentsEditor = Class.extend({
frappe.confirm(__("Do you want to update attendance?<br>Present: {0}\
<br>Absent: {1}", [students_present.length, students_absent.length]),
function() { //ifyes
frappe.call({
method: "erpnext.schools.api.mark_attendance",
freeze: true,
freeze_message: "Marking attendance",
args: {
"students_present": students_present,
"students_absent": students_absent,
"student_group": frm.doc.student_group,
"course_schedule": frm.doc.course_schedule,
"date": frm.doc.date
},
callback: function(r) {
$(me.wrapper.find(".btn-mark-att")).attr("disabled", false);
frm.trigger("student_group");
}
});
if(!frappe.request.ajax_count) {
frappe.call({
method: "erpnext.schools.api.mark_attendance",
freeze: true,
freeze_message: "Marking attendance",
args: {
"students_present": students_present,
"students_absent": students_absent,
"student_group": frm.doc.student_group,
"course_schedule": frm.doc.course_schedule,
"date": frm.doc.date
},
callback: function(r) {
$(me.wrapper.find(".btn-mark-att")).attr("disabled", false);
frm.trigger("student_group");
}
});
}
},
function() { //ifno
$(me.wrapper.find(".btn-mark-att")).attr("disabled", false);

View File

@@ -1,5 +1,6 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"autoname": "SLog.####",
@@ -13,6 +14,7 @@
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -43,64 +45,7 @@
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "type",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Type",
"length": 0,
"no_copy": 0,
"options": "General\nAcademic\nMedical\nAchievement",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -131,6 +76,38 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "type",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Type",
"length": 0,
"no_copy": 0,
"options": "General\nAcademic\nMedical\nAchievement",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -160,6 +137,160 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "academic_year",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Academic Year",
"length": 0,
"no_copy": 0,
"options": "Academic Year",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "academic_term",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Academic Term",
"length": 0,
"no_copy": 0,
"options": "Academic Term",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "program",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Program",
"length": 0,
"no_copy": 0,
"options": "Program",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "student_batch",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Student Batch",
"length": 0,
"no_copy": 0,
"options": "Student Batch Name",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -188,6 +319,7 @@
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -217,17 +349,17 @@
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-02-17 17:18:19.596892",
"modified": "2017-07-06 12:42:05.777673",
"modified_by": "Administrator",
"module": "Schools",
"name": "Student Log",

View File

@@ -4,9 +4,14 @@
from __future__ import unicode_literals
import frappe
from frappe import _
from frappe.utils import flt
from collections import defaultdict
from erpnext.schools.api import get_grade
def execute(filters=None):
data = []
args = frappe._dict()
args["assessment_group"] = filters.get("assessment_group")
if args["assessment_group"] == "All Assessment Groups":
@@ -14,65 +19,112 @@ def execute(filters=None):
args["course"] = filters.get("course")
args["student_group"] = filters.get("student_group")
if args["student_group"]:
cond = "and ap.student_group=%(student_group)s"
else:
cond = ''
# find all assessment plan linked with the filters provided
assessment_plan = frappe.db.sql('''
select
ap.name, ap.student_group, apc.assessment_criteria, apc.maximum_score as max_score
from
`tabAssessment Plan` ap, `tabAssessment Plan Criteria` apc
where
ap.assessment_group=%(assessment_group)s and ap.course=%(course)s and
ap.name=apc.parent and ap.docstatus=1 {0}
order by
apc.assessment_criteria'''.format(cond), (args), as_dict=1)
assessment_plan_list = set([d["name"] for d in assessment_plan])
if not assessment_plan_list:
frappe.throw(_("No assessment plan linked with this assessment group"))
student_group_list = set([d["student_group"] for d in assessment_plan])
assessment_result = frappe.db.sql('''select ar.student, ard.assessment_criteria, ard.grade, ard.score
from `tabAssessment Result` ar, `tabAssessment Result Detail` ard
where ar.assessment_plan in (%s) and ar.name=ard.parent and ar.docstatus=1
order by ard.assessment_criteria''' %', '.join(['%s']*len(assessment_plan_list)),
tuple(assessment_plan_list), as_dict=1)
result_dict = defaultdict(dict)
kounter = defaultdict(dict)
for result in assessment_result:
result_dict[result.student].update({frappe.scrub(result.assessment_criteria): result.grade,
frappe.scrub(result.assessment_criteria)+"_score": result.score})
if result.grade in kounter[result.assessment_criteria]:
kounter[result.assessment_criteria][result.grade] += 1
# find all assessment plan and related details linked with the given filters
def get_assessment_details():
if args["student_group"]:
cond = "and ap.student_group=%(student_group)s"
else:
kounter[result.assessment_criteria].update({result.grade: 1})
cond = ''
student_list = frappe.db.sql('''select sgs.student, sgs.student_name
from `tabStudent Group` sg, `tabStudent Group Student` sgs
where sg.name = sgs.parent and sg.name in (%s)
order by sgs.group_roll_number asc''' %', '.join(['%s']*len(student_group_list)),
tuple(student_group_list), as_dict=1)
assessment_plan = frappe.db.sql('''
select
ap.name, ap.student_group, ap.grading_scale, apc.assessment_criteria, apc.maximum_score as max_score
from
`tabAssessment Plan` ap, `tabAssessment Plan Criteria` apc
where
ap.assessment_group=%(assessment_group)s and ap.course=%(course)s and
ap.name=apc.parent and ap.docstatus=1 {0}
order by
apc.assessment_criteria'''.format(cond), (args), as_dict=1)
for student in student_list:
student.update(result_dict[student.student])
data = student_list
assessment_plan_list = list(set([d["name"] for d in assessment_plan]))
if not assessment_plan_list:
frappe.throw(_("No assessment plan linked with this assessment group"))
columns = get_column(list(set([(d["assessment_criteria"],d["max_score"]) for d in assessment_plan])))
assessment_criteria_list = list(set([(d["assessment_criteria"],d["max_score"]) for d in assessment_plan]))
student_group_list = list(set([d["student_group"] for d in assessment_plan]))
total_maximum_score = flt(sum([flt(d[1]) for d in assessment_criteria_list]))
grading_scale = assessment_plan[0]["grading_scale"]
grading_scale = frappe.db.get_value("Assessment Plan", list(assessment_plan_list)[0], "grading_scale")
grades = frappe.db.sql_list('''select grade_code from `tabGrading Scale Interval` where parent=%s''',
(grading_scale))
assessment_criteria_list = list(set([d["assessment_criteria"] for d in assessment_plan]))
chart = get_chart_data(grades, assessment_criteria_list, kounter)
return assessment_plan_list, assessment_criteria_list, total_maximum_score, grading_scale, student_group_list
# get all the result and make a dict map student as the key and value as dict of result
def get_result_map():
result_dict = defaultdict(dict)
kounter = defaultdict(dict)
assessment_result = frappe.db.sql('''select ar.student, ard.assessment_criteria, ard.grade, ard.score
from `tabAssessment Result` ar, `tabAssessment Result Detail` ard
where ar.assessment_plan in (%s) and ar.name=ard.parent and ar.docstatus=1
order by ard.assessment_criteria''' %', '.join(['%s']*len(assessment_plan_list)),
tuple(assessment_plan_list), as_dict=1, debug=True)
for result in assessment_result:
if "total_score" in result_dict[result.student]:
total_score = result_dict[result.student]["total_score"] + result.score
else:
total_score = result.score
total = get_grade(grading_scale, (total_score/total_maximum_score)*100)
if result.grade in kounter[result.assessment_criteria]:
kounter[result.assessment_criteria][result.grade] += 1
else:
kounter[result.assessment_criteria].update({result.grade: 1})
if "Total" not in kounter:
kounter["Total"] = {}
if "total" in result_dict[result.student]:
prev_grade = result_dict[result.student]["total"]
prev_grade_count = kounter["Total"].get(prev_grade) - 1
kounter["Total"].update({prev_grade: prev_grade_count})
latest_grade_count = kounter["Total"].get(total)+1 if kounter["Total"].get(total) else 1
kounter["Total"].update({total: latest_grade_count})
result_dict[result.student].update({
frappe.scrub(result.assessment_criteria): result.grade,
frappe.scrub(result.assessment_criteria)+"_score": result.score,
"total_score": total_score,
"total": total
})
return result_dict, kounter
# make data from the result dict
def get_data():
student_list = frappe.db.sql('''select sgs.student, sgs.student_name
from `tabStudent Group` sg, `tabStudent Group Student` sgs
where sg.name = sgs.parent and sg.name in (%s)
order by sgs.group_roll_number asc''' %', '.join(['%s']*len(student_group_list)),
tuple(student_group_list), as_dict=1)
for student in student_list:
student.update(result_dict[student.student])
return student_list
# get chart data
def get_chart():
grading_scale = frappe.db.get_value("Assessment Plan", list(assessment_plan_list)[0], "grading_scale")
grades = frappe.db.sql_list('''select grade_code from `tabGrading Scale Interval` where parent=%s''',
(grading_scale))
criteria_list = [d[0] for d in assessment_criteria_list] + ["Total"]
return get_chart_data(grades, criteria_list, kounter)
assessment_plan_list, assessment_criteria_list, total_maximum_score, grading_scale,\
student_group_list = get_assessment_details()
result_dict, kounter = get_result_map()
data = get_data()
columns = get_column(assessment_criteria_list, total_maximum_score)
chart = get_chart()
return columns, data, None, chart
def get_column(assessment_criteria):
def get_column(assessment_criteria, total_maximum_score):
columns = [{
"fieldname": "student",
"label": _("Student ID"),
@@ -99,6 +151,20 @@ def get_column(assessment_criteria):
"fieldtype": "Float",
"width": 100
})
columns += [{
"fieldname": "total",
"label": "Total",
"fieldtype": "Data",
"width": 100
},
{
"fieldname": "total_score",
"label": "Total Score("+ str(int(total_maximum_score)) + ")",
"fieldtype": "Float",
"width": 110
}]
return columns
def get_chart_data(grades, assessment_criteria_list, kounter):

View File

@@ -9,7 +9,7 @@ import frappe.defaults
from frappe.utils import flt, cint, cstr
from frappe.desk.reportview import build_match_conditions
from erpnext.utilities.transaction_base import TransactionBase
from erpnext.accounts.party import validate_party_accounts, get_dashboard_info # keep this
from erpnext.accounts.party import validate_party_accounts, get_dashboard_info, get_timeline_data # keep this
from frappe.contacts.address_and_contact import load_address_and_contact, delete_contact_and_address
class Customer(TransactionBase):

View File

@@ -30,12 +30,8 @@ erpnext.selling.InstallationNote = frappe.ui.form.Controller.extend({
setup_queries: function() {
var me = this;
this.frm.set_query("customer_address", function() {
return {
filters: {'customer': me.frm.doc.customer }
}
});
frappe.dynamic_link = {doc: this.frm.doc, fieldname: 'customer', doctype: 'Customer'}
frm.set_query('customer_address', erpnext.queries.address_query);
this.frm.set_query('contact_person', erpnext.queries.contact_query);
this.frm.set_query("customer", function() {

View File

@@ -86,6 +86,17 @@ class Quotation(SellingController):
print_lst.append(lst1)
return print_lst
def get_list_context(context=None):
from erpnext.controllers.website_list_for_contact import get_list_context
list_context = get_list_context(context)
list_context.update({
'show_sidebar': True,
'show_search': True,
'no_breadcrumbs': True,
'title': _('Quotes'),
})
return list_context
@frappe.whitelist()
def make_sales_order(source_name, target_doc=None):

View File

@@ -7,11 +7,12 @@ import json
import frappe.utils
from frappe.utils import cstr, flt, getdate, comma_and, cint
from frappe import _
from frappe.model.utils import get_fetch_values
from frappe.model.mapper import get_mapped_doc
from erpnext.stock.stock_balance import update_bin_qty, get_reserved_qty
from frappe.desk.notifications import clear_doctype_notifications
from erpnext.controllers.recurring_document import month_map, get_next_date
from frappe.contacts.doctype.address.address import get_company_address
from erpnext.controllers.selling_controller import SellingController
form_grid_templates = {
@@ -504,6 +505,11 @@ def make_sales_invoice(source_name, target_doc=None, ignore_permissions=False):
target.run_method("set_missing_values")
target.run_method("calculate_taxes_and_totals")
# set company address
target.update(get_company_address(target.company))
if target.company_address:
target.update(get_fetch_values("Sales Invoice", 'company_address', target.company_address))
def update_item(source, target, source_parent):
target.amount = flt(source.amount) - flt(source.billed_amt)
target.base_amount = target.amount * flt(source_parent.conversion_rate)

View File

@@ -69,7 +69,7 @@ class ItemGroup(NestedSet, WebsiteGenerator):
context.update({
"items": get_product_list_for_group(product_group = self.name, start=start,
limit=context.page_length + 1, search=frappe.form_dict.get("search")),
"parent_groups": get_parent_item_groups(self.name),
"parents": get_parent_item_groups(self.parent_item_group),
"title": self.name,
"products_as_list": cint(frappe.db.get_single_value('Website Settings', 'products_as_list'))
})
@@ -136,7 +136,8 @@ def get_group_item_count(item_group):
def get_parent_item_groups(item_group_name):
item_group = frappe.get_doc("Item Group", item_group_name)
return frappe.db.sql("""select name, route from `tabItem Group`
return [{"name": frappe._("Home"), "route":"/"}]+\
frappe.db.sql("""select name, route from `tabItem Group`
where lft <= %s and rgt >= %s
and show_in_website=1
order by lft asc""", (item_group.lft, item_group.rgt), as_dict=True)
@@ -146,6 +147,6 @@ def invalidate_cache_for(doc, item_group=None):
item_group = doc.name
for d in get_parent_item_groups(item_group):
d = frappe.get_doc("Item Group", d.name)
if d.route:
clear_cache(d.route)
item_group_name = frappe.db.get_value("Item Group", d.get('name'))
if item_group_name:
clear_cache(frappe.db.get_value('Item Group', item_group_name, 'route'))

View File

@@ -351,7 +351,7 @@ def create_items(args):
for i in xrange(1,6):
item = args.get("item_" + str(i))
if item:
item_group = args.get("item_group_" + str(i))
item_group = _(args.get("item_group_" + str(i)))
is_sales_item = args.get("is_sales_item_" + str(i))
is_purchase_item = args.get("is_purchase_item_" + str(i))
is_stock_item = item_group!=_("Services")
@@ -373,7 +373,7 @@ def create_items(args):
"is_purchase_item": is_purchase_item,
"is_stock_item": is_stock_item and 1 or 0,
"item_group": item_group,
"stock_uom": args.get("item_uom_" + str(i)),
"stock_uom": _(args.get("item_uom_" + str(i))),
"default_warehouse": default_warehouse
}).insert()

View File

@@ -8,10 +8,12 @@ from frappe.utils import flt, cint
from frappe import msgprint, _
import frappe.defaults
from frappe.model.utils import get_fetch_values
from frappe.model.mapper import get_mapped_doc
from erpnext.controllers.selling_controller import SellingController
from frappe.desk.notifications import clear_doctype_notifications
from erpnext.stock.doctype.batch.batch import set_batch_nos
from frappe.contacts.doctype.address.address import get_company_address
form_grid_templates = {
"items": "templates/form_grid/item_grid.html"
@@ -371,7 +373,7 @@ def get_invoiced_qty_map(delivery_note):
def make_sales_invoice(source_name, target_doc=None):
invoiced_qty_map = get_invoiced_qty_map(source_name)
def update_accounts(source, target):
def set_missing_values(source, target):
target.is_pos = 0
target.ignore_pricing_rule = 1
target.run_method("set_missing_values")
@@ -381,6 +383,11 @@ def make_sales_invoice(source_name, target_doc=None):
target.run_method("calculate_taxes_and_totals")
# set company address
target.update(get_company_address(target.company))
if target.company_address:
target.update(get_fetch_values("Sales Invoice", 'company_address', target.company_address))
def update_item(source_doc, target_doc, source_parent):
target_doc.qty = source_doc.qty - invoiced_qty_map.get(source_doc.name, 0)
@@ -415,7 +422,7 @@ def make_sales_invoice(source_name, target_doc=None):
},
"add_if_empty": True
}
}, target_doc, update_accounts)
}, target_doc, set_missing_values)
return doc

View File

@@ -146,10 +146,6 @@ class Item(WebsiteGenerator):
return cstr(frappe.db.get_value('Item Group', self.item_group,
'route')) + '/' + self.scrub(self.item_name + '-' + random_string(5))
def get_parents(self, context):
item_group, route = frappe.db.get_value('Item Group', self.item_group, ['name', 'route'])
context.parents = [{'name': route, 'label': item_group}]
def validate_website_image(self):
"""Validate if the website image is a public file"""
auto_set_website_image = False
@@ -242,15 +238,12 @@ class Item(WebsiteGenerator):
context.show_search=True
context.search_link = '/product_search'
context.parent_groups = get_parent_item_groups(self.item_group) + \
[{"name": self.name}]
context.parents = get_parent_item_groups(self.item_group)
self.set_variant_context(context)
self.set_attribute_context(context)
self.set_disabled_attributes(context)
self.get_parents(context)
return context
def set_variant_context(self, context):

View File

@@ -1597,7 +1597,7 @@
"collapsible": 0,
"columns": 0,
"default": ":Company",
"depends_on": "eval:cint(sys_defaults.auto_accounting_for_stock)",
"depends_on": "eval:cint(erpnext.is_perpetual_inventory_enabled(parent.company))",
"fieldname": "cost_center",
"fieldtype": "Link",
"hidden": 0,
@@ -2044,7 +2044,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-06-16 17:23:01.404744",
"modified": "2017-07-10 06:31:31.457497",
"modified_by": "Administrator",
"module": "Stock",
"name": "Purchase Receipt Item",

View File

@@ -85,6 +85,10 @@ class SerialNo(StockController):
self.supplier, self.supplier_name = \
frappe.db.get_value("Purchase Receipt", purchase_sle.voucher_no,
["supplier", "supplier_name"])
# If sales return entry
if self.purchase_document_type == 'Delivery Note':
self.sales_invoice = None
else:
for fieldname in ("purchase_document_type", "purchase_document_no",
"purchase_date", "purchase_time", "purchase_rate", "supplier", "supplier_name"):

View File

@@ -340,10 +340,15 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
production_order: function() {
var me = this;
this.toggle_enable_bom();
if(!me.frm.doc.production_order) {
return;
}
return frappe.call({
method: "erpnext.stock.doctype.stock_entry.stock_entry.get_production_order_details",
args: {production_order: me.frm.doc.production_order},
args: {
production_order: me.frm.doc.production_order
},
callback: function(r) {
if (!r.exc) {
$.each(["from_bom", "bom_no", "fg_completed_qty", "use_multi_level_bom"], function(i, field) {

View File

@@ -960,7 +960,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:cint(frappe.sys_defaults.auto_accounting_for_stock)",
"depends_on": "eval:cint(erpnext.is_perpetual_inventory_enabled(parent.company))",
"fieldname": "expense_account",
"fieldtype": "Link",
"hidden": 0,
@@ -1020,7 +1020,7 @@
"collapsible": 0,
"columns": 0,
"default": ":Company",
"depends_on": "eval:cint(frappe.sys_defaults.auto_accounting_for_stock)",
"depends_on": "eval:cint(erpnext.is_perpetual_inventory_enabled(parent.company))",
"fieldname": "cost_center",
"fieldtype": "Link",
"hidden": 0,
@@ -1266,7 +1266,7 @@
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-06-16 17:32:56.989049",
"modified": "2017-07-10 06:29:22.805345",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Entry Detail",

View File

@@ -90,7 +90,9 @@ def auto_close_tickets():
for issue in issues:
doc = frappe.get_doc("Issue", issue.get("name"))
doc.status = "Closed"
doc.save(ignore_permissions=True)
doc.flags.ignore_permissions = True
doc.flags.ignore_mandatory = True
doc.save()
@frappe.whitelist()
def set_multiple_status(names, status):

View File

@@ -17,7 +17,7 @@
{{ render_discount_amount(doc) }}
{%- endif -%}
{%- for charge in data -%}
{%- if not charge.included_in_print_rate -%}
{%- if charge.tax_amount and not charge.included_in_print_rate -%}
<div class="row">
<div class="col-xs-5 {%- if not doc._align_labels_left %} text-right{%- endif -%}">
<label>{{ charge.get_formatted("description") }}</label></div>

View File

@@ -1,48 +1,216 @@
$.extend(frappe.test_data, {
'Customer': {
'Test Customer 1': [
{customer_name: 'Test Customer 1'}
"Customer": {
"Test Customer 1": [
{customer_name: "Test Customer 1"}
],
'Test Customer 2': [
{customer_name: 'Test Customer 2'}
"Test Customer 2": [
{customer_name: "Test Customer 2"}
],
'Test Customer 3': [
{customer_name: 'Test Customer 3'}
"Test Customer 3": [
{customer_name: "Test Customer 3"}
],
},
'Item': {
'Test Product 1': [
{item_code: 'Test Product 1'},
{item_group: 'Products'},
"Item": {
"Test Product 1": [
{item_code: "Test Product 1"},
{item_group: "Products"},
{is_stock_item: 1},
{standard_rate: 100},
{opening_stock: 100},
],
'Test Product 2': [
{item_code: 'Test Product 2'},
{item_group: 'Products'},
"Test Product 2": [
{item_code: "Test Product 2"},
{item_group: "Products"},
{is_stock_item: 1},
{standard_rate: 150},
{opening_stock: 200},
],
'Test Product 3': [
{item_code: 'Test Product 3'},
{item_group: 'Products'},
"Test Product 3": [
{item_code: "Test Product 3"},
{item_group: "Products"},
{is_stock_item: 1},
{standard_rate: 250},
{opening_stock: 100},
],
'Test Service 1': [
{item_code: 'Test Service 1'},
{item_group: 'Services'},
"Test Service 1": [
{item_code: "Test Service 1"},
{item_group: "Services"},
{is_stock_item: 0},
{standard_rate: 200}
],
'Test Service 2': [
{item_code: 'Test Service 2'},
{item_group: 'Services'},
"Test Service 2": [
{item_code: "Test Service 2"},
{item_group: "Services"},
{is_stock_item: 0},
{standard_rate: 300}
]
},
"Lead": {
"LEAD-00001": [
{lead_name: "Test Lead 1"}
],
"LEAD-00002": [
{lead_name: "Test Lead 2"}
],
"LEAD-00003": [
{lead_name: "Test Lead 3"}
]
},
"Address": {
"Test1-Billing": [
{address_title:"Test1"},
{address_type: "Billing"},
{address_line1: "Billing Street 1"},
{city: "Billing City 1"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 1"}
]
]}
],
"Test1-Shipping": [
{address_title:"Test1"},
{address_type: "Shipping"},
{address_line1: "Shipping Street 1"},
{city: "Shipping City 1"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 1"}
]
]}
],
"Test1-Warehouse": [
{address_title:"Test1"},
{address_type: "Warehouse"},
{address_line1: "Warehouse Street 1"},
{city: "Warehouse City 1"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 1"}
]
]}
],
"Test2-Billing": [
{address_title:"Test2"},
{address_type: "Billing"},
{address_line1: "Billing Street 2"},
{city: "Billing City 2"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 2"}
]
]}
],
"Test2-Shipping": [
{address_title:"Test2"},
{address_type: "Shipping"},
{address_line1: "Shipping Street 2"},
{city: "Shipping City 2"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 2"}
]
]}
],
"Test2-Warehouse": [
{address_title:"Test2"},
{address_type: "Warehouse"},
{address_line1: "Warehouse Street 2"},
{city: "Warehouse City 2"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 2"}
]
]}
]
},
"Contact": {
"Contact 1-Test Customer 1": [
{first_name: "Contact 1"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 1"}
]
]}
],
"Contact 2-Test Customer 1": [
{first_name: "Contact 2"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 1"}
]
]}
],
"Contact 1-Test Customer 2": [
{first_name: "Contact 1"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 2"}
]
]}
],
"Contact 2-Test Customer 2": [
{first_name: "Contact 2"},
{links: [
[
{link_doctype: "Customer"},
{link_name: "Test Customer 2"}
]
]}
],
},
"Price List": {
"Test-Buying-USD": [
{price_list_name: "Test-Buying-USD"},
{currency: "USD"},
{buying: "1"}
],
"Test-Buying-EUR": [
{price_list_name: "Test-Buying-EUR"},
{currency: "EUR"},
{buying: "1"}
],
"Test-Selling-USD": [
{price_list_name: "Test-Selling-USD"},
{currency: "USD"},
{selling: "1"}
],
"Test-Selling-EUR": [
{price_list_name: "Test-Selling-EUR"},
{currency: "EUR"},
{selling: "1"}
],
},
"Terms and Conditions": {
"Test Term 1": [
{title: "Test Term 1"}
],
"Test Term 2": [
{title: "Test Term 2"}
]
},
"Sales Taxes and Charges Template": {
"TEST In State GST": [
{title: "TEST In State GST"},
{taxes:[
[
{charge_type:"On Net Total"},
{account_head:"CGST - "+frappe.get_abbr(frappe.defaults.get_default("Company")) }
],
[
{charge_type:"On Net Total"},
{account_head:"SGST - "+frappe.get_abbr(frappe.defaults.get_default("Company")) }
]
]}
]
}
});
});

View File

@@ -1,29 +1,120 @@
QUnit.module('sales');
QUnit.module("sales");
QUnit.test("test quotation", function(assert) {
assert.expect(2);
QUnit.test("test: lead", function (assert) {
assert.expect(1);
let done = assert.async();
let random = frappe.utils.get_random(10);
frappe.run_serially([
() => frappe.tests.setup_doctype("Lead"),
() => frappe.set_route("List", "Lead"),
() => frappe.new_doc("Lead"),
() => cur_frm.set_value("lead_name", random),
() => cur_frm.save(),
() => {
assert.ok(cur_frm.doc.lead_name.includes(random));
return done();
}
]);
});
QUnit.test("test: opportunity", function (assert) {
assert.expect(1);
let done = assert.async();
frappe.run_serially([
() => frappe.tests.setup_doctype('Customer'),
() => frappe.tests.setup_doctype('Item'),
() => {
return frappe.tests.make('Quotation', [
{customer: 'Test Customer 1'},
{items: [
[
{'item_code': 'Test Product 1'},
{'qty': 5}
return frappe.tests.make("Opportunity", [{
enquiry_from: "Lead"
},
{
lead: "LEAD-00002"
}
]);
},
() => {
assert.ok(cur_frm.doc.lead === "LEAD-00002");
return done();
}
]);
});
QUnit.test("test: quotation", function (assert) {
assert.expect(18);
let done = assert.async();
frappe.run_serially([
() => frappe.tests.setup_doctype("Customer"),
() => frappe.tests.setup_doctype("Item"),
() => frappe.tests.setup_doctype("Address"),
() => frappe.tests.setup_doctype("Contact"),
() => frappe.tests.setup_doctype("Price List"),
() => frappe.tests.setup_doctype("Terms and Conditions"),
() => frappe.tests.setup_doctype("Sales Taxes and Charges Template"),
() => {
return frappe.tests.make("Quotation", [{
customer: "Test Customer 1"
},
{
items: [
[{
"item_code": "Test Product 1"
},
{
"qty": 5
}
]
]}
]
}
]);
},
() => {
// get_item_details
assert.ok(cur_frm.doc.items[0].item_name=='Test Product 1');
assert.ok(cur_frm.doc.items[0].item_name == "Test Product 1", "Added Test Product 1");
// calculate_taxes_and_totals
assert.ok(cur_frm.doc.grand_total==500);
assert.ok(cur_frm.doc.grand_total === 500, "Total Amount is correct");
},
() => cur_frm.set_value("customer_address", "Test1-Billing"),
() => cur_frm.set_value("shipping_address_name", "Test1-Warehouse"),
() => cur_frm.set_value("contact_person", "Contact 1-Test Customer 1"),
() => cur_frm.set_value("currency", "USD"),
() => frappe.timeout(0.3),
() => cur_frm.set_value("selling_price_list", "Test-Selling-USD"),
() => frappe.timeout(0.5),
() => cur_frm.doc.items[0].rate = 200,
() => frappe.timeout(0.3),
() => cur_frm.set_value("tc_name", "Test Term 1"),
() => cur_frm.set_value("taxes_and_charges", "TEST In State GST"),
() => frappe.timeout(0.3),
() => cur_frm.save(),
() => {
// Check Address and Contact Info
assert.ok(cur_frm.doc.address_display.includes("Billing Street 1"), "Address Changed");
assert.ok(cur_frm.doc.shipping_address.includes("Warehouse Street 1"), "Address Changed");
assert.ok(cur_frm.doc.contact_display == "Contact 1", "Contact info changed");
// Check Currency
assert.ok(cur_frm.doc_currency == "USD", "Currency Changed");
assert.ok(cur_frm.doc.selling_price_list == "Test-Selling-USD", "Price List Changed");
assert.ok(cur_frm.doc.items[0].rate == 200, "Price Changed Manually");
assert.ok(cur_frm.doc.total == 1000, "New Total Calculated");
// Check Terms and Condtions
assert.ok(cur_frm.doc.tc_name == "Test Term 1", "Terms and Conditions Checked");
// Check Taxes
assert.ok(cur_frm.doc.taxes[0].account_head.includes("CGST"));
assert.ok(cur_frm.doc.taxes[1].account_head.includes("SGST"));
assert.ok(cur_frm.doc.grand_total == 1180, "Tax Amount Added to Total");
assert.ok(cur_frm.doc.taxes_and_charges == "TEST In State GST", "Tax Template Selected");
},
() => frappe.timeout(0.3),
() => cur_frm.print_doc(),
() => frappe.timeout(1),
() => assert.ok($('.btn-print-print').is(':visible'), "Print Format Available"),
() => assert.ok(RegExp(/QTN-\d\d\d\d\d/g).test($("#header-html small").text())),
() => assert.ok($(".important .text-right.value").text().includes("$ 1,180.00")),
() => assert.ok($(".section-break+ .section-break .column-break:nth-child(1) .data-field:nth-child(1) .value").text().includes("Billing Street 1"), "Print Preview Works As Expected"),
() => frappe.timeout(0.3),
() => cur_frm.print_doc(),
() => done()
]);
});
});

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@ apps/erpnext/erpnext/config/selling.py +153,Default settings for selling transac
DocType: Timesheet,% Amount Billed,% Beløb Billed
DocType: Purchase Order,% Billed,% Billed
,Lead Id,Bly Id
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +67,'Total','Total'
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +61,'Total','Total'
DocType: Selling Settings,Selling Settings,Salg af indstillinger
apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +73,Selling Amount,Selling Beløb
apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.py +166,Lead must be set if Opportunity is made from Lead,"Bly skal indstilles, hvis Opportunity er lavet af Lead"
1 apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py +97 'Opening' 'Åbning'
4 DocType: Timesheet % Amount Billed % Beløb Billed
5 DocType: Purchase Order % Billed % Billed
6 Lead Id Bly Id
7 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +67 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +61 'Total' 'Total'
8 DocType: Selling Settings Selling Settings Salg af indstillinger
9 apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +73 Selling Amount Selling Beløb
10 apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.py +166 Lead must be set if Opportunity is made from Lead Bly skal indstilles, hvis Opportunity er lavet af Lead

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,5 @@
DocType: Fee Structure,Components,Componentes
DocType: Purchase Invoice Item,Item,Producto
apps/erpnext/erpnext/hr/doctype/leave_block_list/leave_block_list.py +19,Date is repeated,La fecha está repetida
DocType: Payment Entry,Deductions or Loss,Deducciones o Pérdidas
DocType: Cheque Print Template,Cheque Size,Tamaño de Cheque
apps/erpnext/erpnext/utilities/activation.py +126,Make Student Batch,Hacer lotes de Estudiante
1 DocType: Fee Structure Components Componentes
2 DocType: Purchase Invoice Item Item Producto
apps/erpnext/erpnext/hr/doctype/leave_block_list/leave_block_list.py +19 Date is repeated La fecha está repetida
3 DocType: Payment Entry Deductions or Loss Deducciones o Pérdidas
4 DocType: Cheque Print Template Cheque Size Tamaño de Cheque
5 apps/erpnext/erpnext/utilities/activation.py +126 Make Student Batch Hacer lotes de Estudiante

View File

@@ -16,7 +16,6 @@ DocType: Grading Scale Interval,Grade Code,Grado de Código
apps/erpnext/erpnext/accounts/party.py +257,Billing currency must be equal to either default comapany's currency or party account currency,La moneda de facturación debe ser igual a la moneda por defecto de la compañía o la moneda de la cuenta de la parte
DocType: Fee Structure,Fee Structure,Estructura de Tarifas
apps/erpnext/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.py +50,Course Schedules created:,Calendario de Cursos creado:
DocType: Grading Scale,Grading Scale Intervals,Intervalos de Escala de Calificación
DocType: Purchase Order,Get Items from Open Material Requests,Obtener Ítems de Solicitudes Abiertas de Materiales
,Batch Item Expiry Status,Estatus de Expiración de Lote de Ítems
DocType: Guardian,Guardian Interests,Intereses del Guardián
@@ -26,13 +25,11 @@ DocType: BOM Scrap Item,Basic Amount (Company Currency),Monto Base (Divisa de Co
DocType: Grading Scale,Grading Scale Name,Nombre de Escala de Calificación
apps/erpnext/erpnext/schools/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py +61,Guardian2 Mobile No,Número de Móvil de Guardián 2
apps/erpnext/erpnext/schools/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py +59,Guardian2 Name,Nombre de Guardián 2
DocType: Grading Scale Interval,Grading Scale Interval,Intervalo de Escala de Calificación
DocType: Stock Entry,Customer or Supplier Details,Detalle de cliente o proveedor
DocType: Course Scheduling Tool,Course Scheduling Tool,Herramienta de Programación de cursos
DocType: Shopping Cart Settings,Checkout Settings,Ajustes de Finalización de Pedido
DocType: Guardian Interest,Guardian Interest,Interés del Guardián
apps/erpnext/erpnext/public/js/setup_wizard.js +330,Classrooms/ Laboratories etc where lectures can be scheduled.,"Aulas / laboratorios, etc., donde las lecturas se pueden programar."
apps/erpnext/erpnext/public/js/setup_wizard.js +361,Classrooms/ Laboratories etc where lectures can be scheduled.,"Aulas / laboratorios, etc., donde las lecturas se pueden programar."
apps/erpnext/erpnext/templates/includes/cart/cart_dropdown.html +18,Checkout,Finalizando pedido
DocType: Sales Invoice,Change Amount,Importe de Cambio
DocType: Guardian Student,Guardian Student,Guardián del Estudiante
DocType: BOM Operation,Base Hour Rate(Company Currency),Tarifa Base por Hora (Divisa de Compañía)
1 DocType: Assessment Plan Grading Scale Escala de Calificación
16 apps/erpnext/erpnext/accounts/party.py +257 Billing currency must be equal to either default comapany's currency or party account currency La moneda de facturación debe ser igual a la moneda por defecto de la compañía o la moneda de la cuenta de la parte
17 DocType: Fee Structure Fee Structure Estructura de Tarifas
18 apps/erpnext/erpnext/schools/doctype/course_scheduling_tool/course_scheduling_tool.py +50 Course Schedules created: Calendario de Cursos creado:
DocType: Grading Scale Grading Scale Intervals Intervalos de Escala de Calificación
19 DocType: Purchase Order Get Items from Open Material Requests Obtener Ítems de Solicitudes Abiertas de Materiales
20 Batch Item Expiry Status Estatus de Expiración de Lote de Ítems
21 DocType: Guardian Guardian Interests Intereses del Guardián
25 DocType: Grading Scale Grading Scale Name Nombre de Escala de Calificación
26 apps/erpnext/erpnext/schools/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py +61 Guardian2 Mobile No Número de Móvil de Guardián 2
27 apps/erpnext/erpnext/schools/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py +59 Guardian2 Name Nombre de Guardián 2
DocType: Grading Scale Interval Grading Scale Interval Intervalo de Escala de Calificación
28 DocType: Stock Entry Customer or Supplier Details Detalle de cliente o proveedor
29 DocType: Course Scheduling Tool Course Scheduling Tool Herramienta de Programación de cursos
30 DocType: Shopping Cart Settings Checkout Settings Ajustes de Finalización de Pedido
31 DocType: Guardian Interest Guardian Interest Interés del Guardián
32 apps/erpnext/erpnext/public/js/setup_wizard.js +330 apps/erpnext/erpnext/public/js/setup_wizard.js +361 Classrooms/ Laboratories etc where lectures can be scheduled. Aulas / laboratorios, etc., donde las lecturas se pueden programar.
33 apps/erpnext/erpnext/templates/includes/cart/cart_dropdown.html +18 Checkout Finalizando pedido
DocType: Sales Invoice Change Amount Importe de Cambio
34 DocType: Guardian Student Guardian Student Guardián del Estudiante
35 DocType: BOM Operation Base Hour Rate(Company Currency) Tarifa Base por Hora (Divisa de Compañía)

View File

@@ -1,7 +1,7 @@
apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js +13,This is a root sales person and cannot be edited.,Se trata de una persona de las ventas raíz y no se puede editar .
apps/erpnext/erpnext/config/setup.py +15,"Set Default Values like Company, Currency, Current Fiscal Year, etc.","Establecer Valores Predeterminados , como Empresa , Moneda, Año Fiscal Actual, etc"
DocType: HR Settings,Employee Settings,Configuración del Empleado
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +209,Serial No {0} does not belong to Item {1},Número de orden {0} no pertenece al elemento {1}
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +213,Serial No {0} does not belong to Item {1},Número de orden {0} no pertenece al elemento {1}
DocType: Naming Series,User must always select,Usuario elegirá siempre
apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +185,Employee {0} has already applied for {1} between {2} and {3},Empleado {0} ya se ha aplicado para {1} entre {2} y {3}
DocType: Account,Cost of Goods Sold,Costo de las Ventas
@@ -12,7 +12,7 @@ DocType: Packing Slip,From Package No.,Del Paquete N º
DocType: Purchase Invoice Item,Purchase Order Item,Articulos de la Orden de Compra
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +94,Raw material cannot be same as main Item,La materia prima no puede ser la misma que el artículo principal
apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +72,Avg. Buying Rate,Promedio de Compra
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +295,Serial No {0} created,Número de orden {0} creado
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +299,Serial No {0} created,Número de orden {0} creado
DocType: Item,If subcontracted to a vendor,Si es sub-contratado a un vendedor
DocType: Production Order Operation,"in Minutes
Updated via 'Time Log'",En minutos actualizado a través de 'Bitácora de tiempo'
@@ -31,7 +31,7 @@ apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +45,Retail & Wholesale,
DocType: Company,Default Holiday List,Listado de vacaciones / feriados predeterminados
apps/erpnext/erpnext/config/hr.py +229,Organization unit (department) master.,Unidad de Organización ( departamento) maestro.
DocType: Depreciation Schedule,Journal Entry,Asientos Contables
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +368,Completed Qty can not be greater than 'Qty to Manufacture',La cantidad completada no puede ser mayor que la cantidad a producir
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +363,Completed Qty can not be greater than 'Qty to Manufacture',La cantidad completada no puede ser mayor que la cantidad a producir
DocType: Leave Block List,Stop users from making Leave Applications on following days.,Deje que los usuarios realicen Solicitudes de Vacaciones en los siguientes días .
DocType: Sales Invoice Item,Qty as per Stock UOM,Cantidad de acuerdo a la Unidad de Medida del Inventario
DocType: Quality Inspection,Get Specification Details,Obtenga Especificación Detalles
@@ -87,7 +87,7 @@ apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +39,"Can n
DocType: Naming Series,Help HTML,Ayuda HTML
DocType: Production Order Operation,Actual Operation Time,Tiempo de operación actual
DocType: Sales Order,To Deliver and Bill,Para Entregar y Bill
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +436,Warehouse required for stock Item {0},Almacén requerido para la acción del artículo {0}
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +437,Warehouse required for stock Item {0},Almacén requerido para la acción del artículo {0}
DocType: Territory,Territory Targets,Territorios Objetivos
DocType: Warranty Claim,Warranty / AMC Status,Garantía / AMC Estado
DocType: Attendance,Employee Name,Nombre del Empleado
@@ -112,7 +112,7 @@ DocType: Email Digest,Next email will be sent on:,Siguiente correo electrónico
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py +65,Case No(s) already in use. Try from Case No {0},Nº de caso ya en uso. Intente Nº de caso {0}
apps/erpnext/erpnext/selling/report/sales_person_target_variance_item_group_wise/sales_person_target_variance_item_group_wise.js +27,Target On,Objetivo On
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +23,"To not apply Pricing Rule in a particular transaction, all applicable Pricing Rules should be disabled.","Para no aplicar la Regla de Precios en una transacción en particular, todas las Reglas de Precios aplicables deben ser desactivadas."
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +158,"Sorry, Serial Nos cannot be merged","Lo sentimos , Nos de serie no se puede fusionar"
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +162,"Sorry, Serial Nos cannot be merged","Lo sentimos , Nos de serie no se puede fusionar"
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +766,Make ,Hacer
DocType: Manufacturing Settings,Manufacturing Settings,Ajustes de Manufactura
DocType: Appraisal Template,Appraisal Template Title,Titulo de la Plantilla deEvaluación
@@ -132,7 +132,7 @@ DocType: Quotation,In Words will be visible once you save the Quotation.,En pala
apps/erpnext/erpnext/stock/doctype/delivery_note/delivery_note.py +270,Installation Note {0} has already been submitted,La nota de instalación {0} ya se ha presentado
DocType: Employee,The first Leave Approver in the list will be set as the default Leave Approver,El primer Administrador de Vacaciones in la lista sera definido como el Administrador de Vacaciones predeterminado.
apps/erpnext/erpnext/config/selling.py +105,Manage Territory Tree.,Vista en árbol para la administración de los territorios
apps/erpnext/erpnext/stock/utils.py +177,Serial number {0} entered more than once,Número de serie {0} entraron más de una vez
apps/erpnext/erpnext/stock/utils.py +200,Serial number {0} entered more than once,Número de serie {0} entraron más de una vez
apps/erpnext/erpnext/selling/doctype/sms_center/sms_center.py +68,Receiver List is empty. Please create Receiver List,"Lista de receptores está vacía. Por favor, cree Lista de receptores"
DocType: Purchase Invoice,The unique id for tracking all recurring invoices. It is generated on submit.,El identificador único para el seguimiento de todas las facturas recurrentes. Se genera al enviar .
DocType: Target Detail,Target Detail,Objetivo Detalle
@@ -158,17 +158,17 @@ DocType: Purchase Invoice Item,Rate (Company Currency),Precio (Moneda Local)
apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.js +56,Convert to Group,Convertir al Grupo
DocType: Hub Settings,Seller Name,Nombre del Vendedor
apps/erpnext/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py +44,{0} payment entries can not be filtered by {1},{0} registros de pago no se pueden filtrar por {1}
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +228,Serial No {0} not in stock,Número de orden {0} no está en stock
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +232,Serial No {0} not in stock,Número de orden {0} no está en stock
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +94,Ref Date,Fecha Ref
apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +34,Bank Statement balance as per General Ledger,Balanza de Estado de Cuenta Bancario según Libro Mayor
DocType: Naming Series,Setup Series,Serie de configuración
DocType: Production Order Operation,Actual Start Time,Hora de inicio actual
apps/erpnext/erpnext/stock/doctype/item/item.py +451,Barcode {0} already used in Item {1},El código de barras {0} ya se utiliza en el elemento {1}
apps/erpnext/erpnext/stock/doctype/item/item.py +444,Barcode {0} already used in Item {1},El código de barras {0} ya se utiliza en el elemento {1}
apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +31,Health Care,Cuidado de la Salud
DocType: Item,Manufacturer Part Number,Número de Pieza del Fabricante
DocType: Item Reorder,Re-Order Level,Reordenar Nivel
DocType: Customer,Sales Team Details,Detalles del equipo de ventas
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +559,Sales Order {0} is not submitted,Órden de Venta {0} no esta presentada
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +560,Sales Order {0} is not submitted,Órden de Venta {0} no esta presentada
apps/erpnext/erpnext/utilities/transaction_base.py +110,Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ,Fila # {0}: Tasa debe ser el mismo que {1}: {2} ({3} / {4})
apps/erpnext/erpnext/config/selling.py +18,Confirmed orders from Customers.,Pedidos en firme de los clientes.
DocType: Warranty Claim,Service Address,Dirección del Servicio
@@ -192,7 +192,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +132,Row {0
DocType: Employee,Leave Approvers,Supervisores de Vacaciones
apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.js +149,Please specify a valid Row ID for row {0} in table {1},"Por favor, especifique un ID de fila válida para la fila {0} en la tabla {1}"
DocType: Customer Group,Parent Customer Group,Categoría de cliente principal
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +31,Total Outstanding Amount,Total Monto Pendiente
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +25,Total Outstanding Amount,Total Monto Pendiente
DocType: Sales Partner,Select Monthly Distribution to unevenly distribute targets across months.,Seleccione Distribución Mensual de distribuir de manera desigual a través de objetivos meses.
apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +90,You need to enable Shopping Cart,Necesita habilitar Carito de Compras
apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +20,{0} is mandatory for Return,{0} es obligatorio para su devolución
@@ -202,7 +202,7 @@ DocType: Sales Invoice,Shipping Address Name,Dirección de envío Nombre
DocType: Item,Moving Average,Promedio Movil
,Qty to Deliver,Cantidad para Ofrecer
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +112,Row #{0}: Please specify Serial No for Item {1},"Fila # {0}: Por favor, especifique No de Serie de artículos {1}"
apps/erpnext/erpnext/public/js/setup_wizard.js +201,"List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later.","Enumere sus obligaciones fiscales (Ejemplo; IVA, aduanas, etc.) deben tener nombres únicos y sus tarifas por defecto. Esto creará una plantilla estándar, que podrá editar más tarde."
apps/erpnext/erpnext/public/js/setup_wizard.js +225,"List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later.","Enumere sus obligaciones fiscales (Ejemplo; IVA, aduanas, etc.) deben tener nombres únicos y sus tarifas por defecto. Esto creará una plantilla estándar, que podrá editar más tarde."
apps/erpnext/erpnext/setup/doctype/company/company.js +52,Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.,"Por favor, asegúrese que realmente desea borrar todas las transacciones de esta compañía. Sus datos maestros permanecerán intactos. Esta acción no se puede deshacer."
DocType: Shopping Cart Settings,Shopping Cart Settings,Compras Ajustes
DocType: BOM,Raw Material Cost,Costo de la Materia Prima
@@ -214,7 +214,7 @@ apps/erpnext/erpnext/controllers/stock_controller.py +331,Quality Inspection req
apps/erpnext/erpnext/public/js/setup_wizard.js +94,What does it do?,¿Qué hace?
DocType: Task,Actual Time (in Hours),Tiempo actual (En horas)
apps/erpnext/erpnext/selling/doctype/quotation/quotation.js +707,Make Sales Order,Hacer Orden de Venta
apps/erpnext/erpnext/public/js/setup_wizard.js +219,List a few of your customers. They could be organizations or individuals.,Enumere algunos de sus clientes. Pueden ser organizaciones o individuos.
apps/erpnext/erpnext/public/js/setup_wizard.js +244,List a few of your customers. They could be organizations or individuals.,Enumere algunos de sus clientes. Pueden ser organizaciones o individuos.
DocType: Item Customer Detail,Ref Code,Código Referencia
DocType: Item,Default Selling Cost Center,Centros de coste por defecto
DocType: Leave Block List,Leave Block List Allowed,Lista de Bloqueo de Vacaciones Permitida
@@ -246,12 +246,13 @@ DocType: Item,Website Item Groups,Grupos de Artículos del Sitio Web
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +103,Marketing Expenses,Gastos de Comercialización
apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.py +81,"Cannot declare as lost, because Quotation has been made.","No se puede declarar como perdido , porque la cotización ha sido hecha."
DocType: Leave Allocation,New Leaves Allocated,Nuevas Vacaciones Asignadas
apps/erpnext/erpnext/public/js/setup_wizard.js +205,user@example.com,user@example.com
DocType: Asset Movement,Source Warehouse,fuente de depósito
apps/erpnext/erpnext/public/js/templates/contact_list.html +34,No contacts added yet.,No se han añadido contactos todavía
apps/erpnext/erpnext/accounts/doctype/account/account.py +159,Root Type is mandatory,Tipo Root es obligatorio
DocType: Training Event,Scheduled,Programado
DocType: Salary Detail,Depends on Leave Without Pay,Depende de ausencia sin pago
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +74,Total Paid Amt,Total Pagado Amt
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +68,Total Paid Amt,Total Pagado Amt
apps/erpnext/erpnext/selling/report/inactive_customers/inactive_customers.py +16,'Days Since Last Order' must be greater than or equal to zero,'Días desde el último pedido' debe ser mayor o igual a cero
DocType: Material Request Item,For Warehouse,Por almacén
,Purchase Order Items To Be Received,Productos de la Orden de Compra a ser Recibidos
@@ -261,7 +262,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +534,Row No
DocType: Offer Letter Term,Offer Letter Term,Término de carta de oferta
DocType: Item,Synced With Hub,Sincronizado con Hub
apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +30,Cost Center with existing transactions can not be converted to ledger,Centro de Costos de las transacciones existentes no se puede convertir en el libro mayor
apps/erpnext/erpnext/public/js/controllers/transaction.js +1165,Please enter Item Code to get batch no,"Por favor, ingrese el código del producto para obtener el No. de lote"
apps/erpnext/erpnext/public/js/controllers/transaction.js +1086,Please enter Item Code to get batch no,"Por favor, ingrese el código del producto para obtener el No. de lote"
apps/erpnext/erpnext/selling/doctype/customer/customer.py +34,Series is mandatory,Serie es obligatorio
,Item Shortage Report,Reportar carencia de producto
DocType: Sales Invoice,Rate at which Price list currency is converted to customer's base currency,Grado en el que la lista de precios en moneda se convierte en la moneda base del cliente
@@ -274,11 +275,11 @@ apps/erpnext/erpnext/stock/doctype/price_list/price_list.py +14,Price List must
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +156,Warehouse required at Row No {0},Almacén requerido en la fila n {0}
DocType: Purchase Invoice Item,Serial No,Números de Serie
,Bank Reconciliation Statement,Extractos Bancarios
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +408,{0} is mandatory for Item {1},{0} es obligatorio para el producto {1}
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +409,{0} is mandatory for Item {1},{0} es obligatorio para el producto {1}
apps/erpnext/erpnext/config/hr.py +234,"Employee designation (e.g. CEO, Director etc.).","Cargo del empleado ( por ejemplo, director general, director , etc.)"
DocType: Item,Copy From Item Group,Copiar de Grupo de Elementos
apps/erpnext/erpnext/stock/get_item_details.py +526,No default BOM exists for Item {0},No existe una Solicitud de Materiales por defecto para el elemento {0}
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +164,{0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3},{0} ({1}) no puede ser mayor que cantidad planificada ({2}) en la Orden de Producción {3}
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +163,{0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3},{0} ({1}) no puede ser mayor que cantidad planificada ({2}) en la Orden de Producción {3}
apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +847,Select Item for Transfer,Seleccionar elemento de Transferencia
apps/erpnext/erpnext/hr/doctype/employee/employee.py +110,Date of Joining must be greater than Date of Birth,Fecha de acceso debe ser mayor que Fecha de Nacimiento
DocType: Buying Settings,Settings for Buying Module,Ajustes para la compra de módulo
@@ -300,8 +301,8 @@ apps/erpnext/erpnext/hr/doctype/job_applicant/job_applicant.py +25,Name or Email
apps/erpnext/erpnext/setup/doctype/company/delete_company_transactions.py +17,Transactions can only be deleted by the creator of the Company,Las transacciones sólo pueden ser borrados por el creador de la Compañía
DocType: Cost Center,Parent Cost Center,Centro de Costo Principal
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +26,Loans and Advances (Assets),Préstamos y anticipos (Activos)
apps/erpnext/erpnext/hooks.py +87,Shipments,Los envíos
apps/erpnext/erpnext/public/js/setup_wizard.js +273,We buy this Item,Compramos este artículo
apps/erpnext/erpnext/hooks.py +94,Shipments,Los envíos
apps/erpnext/erpnext/public/js/setup_wizard.js +301,We buy this Item,Compramos este artículo
apps/erpnext/erpnext/controllers/buying_controller.py +149,Please enter 'Is Subcontracted' as Yes or No,"Por favor, introduzca si 'Es Subcontratado' o no"
apps/erpnext/erpnext/setup/doctype/company/company.py +51,Abbreviation already used for another company,La Abreviación ya está siendo utilizada para otra compañía
DocType: Purchase Order Item Supplied,Purchase Order Item Supplied,Orden de Compra del Artículo Suministrado
@@ -334,7 +335,7 @@ apps/erpnext/erpnext/config/hr.py +142,Performance appraisal.,Evaluación del De
DocType: Quality Inspection Reading,Quality Inspection Reading,Lectura de Inspección de Calidad
DocType: Purchase Invoice Item,Net Amount (Company Currency),Importe neto (moneda de la compañía)
DocType: Sales Order,Track this Sales Order against any Project,Seguir este de órdenes de venta en contra de cualquier proyecto
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +41,"Selling must be checked, if Applicable For is selected as {0}","Ventas debe ser seleccionado, si se selecciona Aplicable Para como {0}"
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +40,"Selling must be checked, if Applicable For is selected as {0}","Ventas debe ser seleccionado, si se selecciona Aplicable Para como {0}"
DocType: Selling Settings,Maintain Same Rate Throughout Sales Cycle,Mantener misma tasa durante todo el ciclo de ventas
DocType: Employee External Work History,Salary,Salario
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +145,Stock Liabilities,Inventario de Pasivos
@@ -353,7 +354,7 @@ DocType: Serial No,Warranty Period (Days),Período de garantía ( Días)
DocType: Selling Settings,Campaign Naming By,Nombramiento de la Campaña Por
apps/erpnext/erpnext/hr/doctype/expense_claim/expense_claim.js +124,You are the Expense Approver for this record. Please Update the 'Status' and Save,Usted es el Supervisor de Gastos para este registro. Actualice el 'Estado' y Guarde
DocType: Material Request,Terms and Conditions Content,Términos y Condiciones Contenido
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +218,Serial No {0} does not belong to Warehouse {1},Número de orden {0} no pertenece al Almacén {1}
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +222,Serial No {0} does not belong to Warehouse {1},Número de orden {0} no pertenece al Almacén {1}
DocType: Shopping Cart Shipping Rule,Shopping Cart Shipping Rule,Compras Regla de envío
apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.js +36,Make Payment Entry,Registrar pago
DocType: Maintenance Schedule Detail,Scheduled Date,Fecha prevista
@@ -361,7 +362,7 @@ DocType: Material Request,% Ordered,% Pedido
apps/erpnext/erpnext/projects/doctype/task/task.py +37,'Expected Start Date' can not be greater than 'Expected End Date',La 'Fecha de inicio estimada' no puede ser mayor que la 'Fecha de finalización estimada'
DocType: UOM Conversion Detail,UOM Conversion Detail,Detalle de Conversión de Unidad de Medida
apps/erpnext/erpnext/accounts/report/general_ledger/general_ledger.py +50,"To filter based on Party, select Party Type first","Para filtrar en base a la fiesta, seleccione Partido Escriba primero"
apps/erpnext/erpnext/public/js/setup_wizard.js +228,Contact Name,Nombre del Contacto
apps/erpnext/erpnext/public/js/setup_wizard.js +254,Contact Name,Nombre del Contacto
apps/erpnext/erpnext/setup/setup_wizard/setup_wizard.py +21,Setup Already Complete!!,Configuración completa !
DocType: Quotation,Quotation Lost Reason,Cotización Pérdida Razón
DocType: Monthly Distribution,Monthly Distribution Percentages,Los porcentajes de distribución mensuales
@@ -401,12 +402,12 @@ apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py +35,Delivery Not
apps/erpnext/erpnext/stock/report/stock_ledger/stock_ledger.py +37,Serial #,Serial #
DocType: Delivery Note,Vehicle No,Vehículo No
DocType: Lead,Lower Income,Ingreso Bajo
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +201,Duplicate Serial No entered for Item {0},Duplicar Serie No existe para la partida {0}
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +205,Duplicate Serial No entered for Item {0},Duplicar Serie No existe para la partida {0}
apps/erpnext/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py +47,Delivered Amount,Cantidad Entregada
apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center_tree.js +16,New Company,Nueva Empresa
DocType: Employee,Permanent Address Is,Dirección permanente es
,Issued Items Against Production Order,Productos emitidos con una orden de producción
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +260,Max: {0},Max: {0}
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +349,Max: {0},Max: {0}
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +231,{0} {1} has been modified. Please refresh.,{0} {1} ha sido modificado. Por favor actualizar.
DocType: Item,Item Tax,Impuesto del artículo
,Item Prices,Precios de los Artículos
@@ -418,7 +419,7 @@ apps/erpnext/erpnext/accounts/general_ledger.py +142,Please mention Round Off Ac
apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py +59,Serial No {0} does not belong to Delivery Note {1},Número de orden {0} no pertenece a la nota de entrega {1}
DocType: Target Detail,Target Qty,Cantidad Objetivo
apps/erpnext/erpnext/stock/doctype/item/item.js +265,"Weight is mentioned,\nPlease mention ""Weight UOM"" too","Se menciona Peso, \n ¡Por favor indique ""Peso Unidad de Medida"" también"
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +153,You can not change rate if BOM mentioned agianst any item,No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +165,You can not change rate if BOM mentioned agianst any item,No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo
DocType: Account,Accounts,Contabilidad
apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +61,Expected Delivery Date cannot be before Purchase Order Date,Fecha prevista de entrega no puede ser anterior Fecha de Orden de Compra
DocType: Workstation,per hour,por horas
@@ -456,13 +457,13 @@ apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +282,New
apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +24,Electronics,Electrónica
DocType: Account,Heads (or groups) against which Accounting Entries are made and balances are maintained.,Cuentas (o grupos) contra el que las entradas contables se hacen y los saldos se mantienen.
DocType: Journal Entry Account,If Income or Expense,Si es un ingreso o egreso
apps/erpnext/erpnext/stock/doctype/item/item.py +500,Row {0}: An Reorder entry already exists for this warehouse {1},Fila {0}: Una entrada para reordenar ya existe para este almacén {1}
apps/erpnext/erpnext/stock/doctype/item/item.py +493,Row {0}: An Reorder entry already exists for this warehouse {1},Fila {0}: Una entrada para reordenar ya existe para este almacén {1}
DocType: Lead,Lead,Iniciativas
apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +152,There is not enough leave balance for Leave Type {0},No hay suficiente saldo para Tipo de Vacaciones {0}
apps/erpnext/erpnext/config/hr.py +87,Block leave applications by department.,Bloquee solicitud de ausencias por departamento.
apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py +58,Repeat Customers,Repita los Clientes
DocType: Account,Depreciation,Depreciación
apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +165,Please create Customer from Lead {0},"Por favor, cree Cliente de la Oportunidad {0}"
apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +176,Please create Customer from Lead {0},"Por favor, cree Cliente de la Oportunidad {0}"
DocType: Payment Request,Make Sales Invoice,Hacer Factura de Venta
DocType: Purchase Invoice,Supplier Invoice No,Factura del Proveedor No
DocType: Payment Gateway Account,Payment Account,Pago a cuenta
@@ -492,9 +493,9 @@ apps/erpnext/erpnext/config/hr.py +104,Generate Salary Slips,Generar etiquetas s
apps/erpnext/erpnext/config/buying.py +23,Quotations received from Suppliers.,Cotizaciones recibidas de los proveedores.
DocType: Sales Partner,Sales Partner Target,Socio de Ventas Objetivo
apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.js +47,Make Maintenance Visit,Hacer Visita de Mantenimiento
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +441,Stock cannot be updated against Delivery Note {0},Inventario no puede actualizarse contra Nota de Envio {0}
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +442,Stock cannot be updated against Delivery Note {0},Inventario no puede actualizarse contra Nota de Envio {0}
DocType: Workstation,Rent Cost,Renta Costo
apps/erpnext/erpnext/hooks.py +116,Issues,Problemas
apps/erpnext/erpnext/hooks.py +124,Issues,Problemas
DocType: BOM Replace Tool,Current BOM,Lista de materiales actual
apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +75,Row # {0}:,Fila # {0}:
DocType: Timesheet,% Amount Billed,% Monto Facturado
@@ -515,7 +516,7 @@ DocType: Notification Control,Send automatic emails to Contacts on Submitting tr
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +78,{0} is not a valid Batch Number for Item {1},{0} no es un número de lote válido para el producto {1}
apps/erpnext/erpnext/config/hr.py +110,Salary template master.,Plantilla Maestra para Salario .
apps/erpnext/erpnext/setup/doctype/company/company.py +70,"Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.","No se puede cambiar la moneda por defecto de la compañía, porque existen transacciones, estas deben ser canceladas para cambiar la moneda por defecto."
apps/erpnext/erpnext/stock/doctype/item/item.py +422,Default BOM ({0}) must be active for this item or its template,La lista de materiales por defecto ({0}) debe estar activa para este producto o plantilla
apps/erpnext/erpnext/stock/doctype/item/item.py +415,Default BOM ({0}) must be active for this item or its template,La lista de materiales por defecto ({0}) debe estar activa para este producto o plantilla
apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.js +27,Note: This Cost Center is a Group. Cannot make accounting entries against groups.,Nota: Este centro de costos es un grupo. No se pueden crear asientos contables en los grupos.
DocType: Email Digest,How frequently?,¿Con qué frecuencia ?
DocType: C-Form Invoice Detail,Invoice No,Factura No
@@ -542,7 +543,7 @@ apps/erpnext/erpnext/support/page/support_analytics/support_analytics.js +21,Sup
DocType: Stock Entry,Subcontract,Subcontrato
DocType: Customer,From Lead,De la iniciativa
DocType: GL Entry,Party,Socio
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +25,Update Cost,Actualización de Costos
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +37,Update Cost,Actualización de Costos
DocType: BOM,Last Purchase Rate,Tasa de Cambio de la Última Compra
DocType: Bin,Actual Quantity,Cantidad actual
DocType: Asset Movement,Stock Manager,Gerente
@@ -553,7 +554,7 @@ apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.js +57,'To Case No.
DocType: Employee,Health Details,Detalles de la Salud
DocType: Maintenance Visit,Unscheduled,No Programada
DocType: Purchase Receipt,Other Details,Otros Datos
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +45,"Buying must be checked, if Applicable For is selected as {0}","Compra debe comprobarse, si se selecciona Aplicable Para como {0}"
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +44,"Buying must be checked, if Applicable For is selected as {0}","Compra debe comprobarse, si se selecciona Aplicable Para como {0}"
apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.js +49,Period Closing Entry,Entradas de cierre de período
apps/erpnext/erpnext/projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py +26,Cost of Purchased Items,El costo de artículos comprados
DocType: Company,Delete Company Transactions,Eliminar Transacciones de la empresa
@@ -590,18 +591,18 @@ apps/erpnext/erpnext/accounts/report/accounts_receivable_summary/accounts_receiv
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +109,Office Maintenance Expenses,Gastos de Mantenimiento de Oficinas
DocType: BOM,Manufacturing,Producción
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +448,'Entries' cannot be empty,'Entradas' no puede estar vacío
apps/erpnext/erpnext/public/js/setup_wizard.js +209,Rate (%),Procentaje (% )
apps/erpnext/erpnext/public/js/setup_wizard.js +234,Rate (%),Procentaje (% )
DocType: Leave Control Panel,Leave Control Panel,Salir del Panel de Control
DocType: Monthly Distribution Percentage,Percentage Allocation,Porcentaje de asignación de
DocType: Shipping Rule Condition,Shipping Amount,Importe del envío
apps/erpnext/erpnext/stock/doctype/item/item.py +46,Item Code is mandatory because Item is not automatically numbered,El código del artículo es obligatorio porque el producto no se enumera automáticamente
DocType: Sales Invoice Item,Sales Order Item,Articulo de la Solicitud de Venta
apps/erpnext/erpnext/config/stock.py +163,Incoming quality inspection.,Inspección de calidad entrante
apps/erpnext/erpnext/public/js/setup_wizard.js +257,"List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start.","Enumere algunos de los productos o servicios que usted compra o vende. asegúrese de revisar el 'Grupo' de los artículos, unidad de medida (UOM) y las demás propiedades."
apps/erpnext/erpnext/public/js/setup_wizard.js +284,"List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start.","Enumere algunos de los productos o servicios que usted compra o vende. asegúrese de revisar el 'Grupo' de los artículos, unidad de medida (UOM) y las demás propiedades."
DocType: Sales Person,Parent Sales Person,Contacto Principal de Ventas
DocType: Warehouse,Warehouse Contact Info,Información de Contacto del Almacén
DocType: Supplier,Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor
apps/erpnext/erpnext/stock/doctype/item/item.py +403,Unit of Measure {0} has been entered more than once in Conversion Factor Table,Unidad de Medida {0} se ha introducido más de una vez en la Tabla de Factores de Conversión
apps/erpnext/erpnext/stock/doctype/item/item.py +396,Unit of Measure {0} has been entered more than once in Conversion Factor Table,Unidad de Medida {0} se ha introducido más de una vez en la Tabla de Factores de Conversión
apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py +23,From Currency and To Currency cannot be same,'Desde Moneda' y 'A Moneda' no puede ser la misma
DocType: Shopping Cart Settings,Default settings for Shopping Cart,Ajustes por defecto para Compras
apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +38,Cost Center with existing transactions can not be converted to group,Centro de Costos de las transacciones existentes no se puede convertir al grupo
@@ -634,7 +635,7 @@ DocType: Hub Settings,Sync Now,Sincronizar ahora
DocType: Serial No,Out of AMC,Fuera de AMC
DocType: Leave Application,Apply / Approve Leaves,Aplicar / Aprobar Vacaciones
DocType: Offer Letter,Select Terms and Conditions,Selecciona Términos y Condiciones
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +562,Delivery Note {0} is not submitted,Nota de Entrega {0} no está presentada
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +563,Delivery Note {0} is not submitted,Nota de Entrega {0} no está presentada
apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py +137,"Row {0}: To set {1} periodicity, difference between from and to date \
must be greater than or equal to {2}","Fila {0}: Para establecer {1} periodicidad, diferencia entre desde y hasta la fecha \
debe ser mayor que o igual a {2}"
@@ -687,7 +688,7 @@ DocType: Request for Quotation Item,Project Name,Nombre del proyecto
,Serial No Warranty Expiry,Número de orden de caducidad Garantía
DocType: Request for Quotation,Manufacturing Manager,Gerente de Manufactura
DocType: BOM,Item UOM,Unidad de Medida del Artículo
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +73,Total Invoiced Amt,Total Monto Facturado
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +67,Total Invoiced Amt,Total Monto Facturado
DocType: Leave Application,Total Leave Days,Total Vacaciones
apps/erpnext/erpnext/config/selling.py +169,Tax template for selling transactions.,Plantilla de Impuestos para las transacciones de venta.
DocType: Appraisal Goal,Score Earned,Puntuación Obtenida
@@ -705,7 +706,7 @@ apps/erpnext/erpnext/hr/doctype/employee/employee.py +154,Employee cannot report
DocType: Stock Entry,Delivery Note No,No. de Nota de Entrega
DocType: Journal Entry Account,Purchase Order,Órdenes de Compra
apps/erpnext/erpnext/hr/doctype/attendance/attendance.py +49,Employee {0} is not active or does not exist,Empleado {0} no está activo o no existe
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +541,POS Profile required to make POS Entry,Se requiere un perfil POS para crear entradas en el Punto-de-Venta
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +542,POS Profile required to make POS Entry,Se requiere un perfil POS para crear entradas en el Punto-de-Venta
,Requested Items To Be Ordered,Solicitud de Productos Aprobados
DocType: Salary Slip,Leave Without Pay,Licencia sin Sueldo
apps/erpnext/erpnext/accounts/doctype/account/account.py +84,Root cannot be edited.,Root no se puede editar .
@@ -717,7 +718,7 @@ DocType: Naming Series,Change the starting / current sequence number of an exist
DocType: Serial No,Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,Depósito sólo se puede cambiar a través de la Entrada de Almacén / Nota de Entrega / Recibo de Compra
DocType: Quotation,Quotation To,Cotización Para
apps/erpnext/erpnext/support/page/support_analytics/support_analytics.js +30,Select Fiscal Year,Seleccione el año fiscal
apps/erpnext/erpnext/stock/doctype/item/item.py +412,'Has Serial No' can not be 'Yes' for non-stock item,"'Tiene Número de Serie' no puede ser """" para elementos que son de inventario"
apps/erpnext/erpnext/stock/doctype/item/item.py +405,'Has Serial No' can not be 'Yes' for non-stock item,"'Tiene Número de Serie' no puede ser """" para elementos que son de inventario"
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +20,Cash In Hand,Efectivo Disponible
DocType: Salary Component,Earning,Ganancia
apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +27,Please specify currency in Company,"Por favor, especifique la moneda en la compañía"
@@ -763,7 +764,7 @@ apps/erpnext/erpnext/config/hr.py +29,Upload attendance from a .csv file,Sube la
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +212,Stock Entries already created for Production Order ,Imagenes de entradas ya creadas por Orden de Producción
DocType: Shipping Rule,Specify conditions to calculate shipping amount,Especificar condiciones de calcular el importe de envío
apps/erpnext/erpnext/setup/doctype/customer_group/customer_group.js +13,This is a root customer group and cannot be edited.,Este es una categoría de cliente raíz y no se puede editar.
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +40,Submit this Production Order for further processing.,Enviar esta Orden de Producción para su posterior procesamiento .
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +102,Submit this Production Order for further processing.,Enviar esta Orden de Producción para su posterior procesamiento .
DocType: Item,Customer Items,Artículos de clientes
DocType: Selling Settings,Customer Naming By,Naming Cliente Por
DocType: Account,Fixed Asset,Activos Fijos
@@ -774,7 +775,7 @@ apps/erpnext/erpnext/config/manufacturing.py +57,Where manufacturing operations
apps/erpnext/erpnext/hr/doctype/appraisal/appraisal.py +42,Appraisal {0} created for Employee {1} in the given date range,Evaluación {0} creado por Empleado {1} en el rango de fechas determinado
DocType: Employee Leave Approver,Employee Leave Approver,Supervisor de Vacaciones del Empleado
apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +33,Investment Banking,Banca de Inversión
apps/erpnext/erpnext/public/js/setup_wizard.js +269,Unit,Unidad
apps/erpnext/erpnext/public/js/setup_wizard.js +297,Unit,Unidad
,Stock Analytics,Análisis de existencias
DocType: Leave Control Panel,Leave blank if considered for all departments,Dejar en blanco si se considera para todos los departamentos
,Purchase Order Items To Be Billed,Ordenes de Compra por Facturar
@@ -797,9 +798,9 @@ apps/erpnext/erpnext/accounts/doctype/account/account.py +101,Account with child
,Stock Projected Qty,Cantidad de Inventario Proyectada
DocType: Hub Settings,Seller Country,País del Vendedor
DocType: Production Order Operation,Updated via 'Time Log',Actualizado a través de 'Hora de Registro'
apps/erpnext/erpnext/public/js/setup_wizard.js +272,We sell this Item,Vendemos este artículo
apps/erpnext/erpnext/public/js/setup_wizard.js +300,We sell this Item,Vendemos este artículo
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +372,{0} against Bill {1} dated {2},{0} contra Factura {1} de fecha {2}
apps/erpnext/erpnext/public/js/setup_wizard.js +256,Your Products or Services,Sus productos o servicios
apps/erpnext/erpnext/public/js/setup_wizard.js +283,Your Products or Services,Sus productos o servicios
apps/erpnext/erpnext/controllers/accounts_controller.py +650,{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.,{0} es obligatorio. Tal vez tipo de cambio no se ha creado para {1} en {2}.
DocType: Timesheet Detail,To Time,Para Tiempo
apps/erpnext/erpnext/public/js/templates/address_list.html +20,No address added yet.,No se ha añadido ninguna dirección todavía.
@@ -816,7 +817,7 @@ DocType: Purchase Invoice,Terms,Términos
apps/erpnext/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py +49,Supplier(s),Proveedor (s)
DocType: Serial No,Serial No Details,Serial No Detalles
DocType: Selling Settings,Allow user to edit Price List Rate in transactions,Permitir al usuario editar Precio de Lista en las transacciones
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +230,Serial Nos Required for Serialized Item {0},Serie n Necesario para artículo serializado {0}
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +234,Serial Nos Required for Serialized Item {0},Serie n Necesario para artículo serializado {0}
DocType: Item,"Show ""In Stock"" or ""Not in Stock"" based on stock available in this warehouse.","Mostrar ""en la acción "" o "" No disponible "", basada en stock disponible en este almacén."
DocType: Employee,Place of Issue,Lugar de emisión
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +226,Purchase Order {0} is not submitted,La órden de compra {0} no existe
@@ -828,7 +829,7 @@ apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +539,Stock
apps/erpnext/erpnext/config/support.py +12,Support queries from customers.,Consultas de soporte de clientes .
apps/erpnext/erpnext/config/selling.py +13,Quotes to Leads or Customers.,Cotizaciones a Oportunidades o Clientes
apps/erpnext/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py +46,Consumed Amount,Cantidad Consumida
apps/erpnext/erpnext/stock/doctype/item/item.py +439,Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,"Campo de impuesto del producto {0} debe tener un tipo de cuenta de impuestos, ingresos, cargos o gastos"
apps/erpnext/erpnext/stock/doctype/item/item.py +432,Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,"Campo de impuesto del producto {0} debe tener un tipo de cuenta de impuestos, ingresos, cargos o gastos"
DocType: Purchase Order Item,Supplier Part Number,Número de pieza del proveedor
apps/erpnext/erpnext/stock/report/itemwise_recommended_reorder_level/itemwise_recommended_reorder_level.py +18,'From Date' must be after 'To Date','Desde fecha' debe ser después de 'Hasta Fecha'
apps/erpnext/erpnext/accounts/doctype/account/account.py +131,Account with child nodes cannot be converted to ledger,Cuenta con nodos hijos no se puede convertir a cuentas del libro mayor
@@ -928,7 +929,7 @@ DocType: Stock Reconciliation Item,Stock Reconciliation Item,Articulo de Reconci
DocType: Process Payroll,Process Payroll,Nómina de Procesos
apps/erpnext/erpnext/accounts/doctype/account/account.py +54,Account {0}: Parent account {1} does not belong to company: {2},Cuenta {0}: Cuenta Padre {1} no pertenece a la compañía: {2}
DocType: Serial No,Purchase / Manufacture Details,Detalles de Compra / Fábricas
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +342,Debit To account must be a Receivable account,La cuenta para Débito debe ser una cuenta por cobrar
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +343,Debit To account must be a Receivable account,La cuenta para Débito debe ser una cuenta por cobrar
DocType: Warehouse,Warehouse Detail,Detalle de almacenes
DocType: Stock Settings,Raise Material Request when stock reaches re-order level,Enviar solicitud de materiales cuando se alcance un nivel bajo el stock
DocType: Maintenance Schedule Detail,Maintenance Schedule Detail,Detalle de Calendario de Mantenimiento
@@ -947,7 +948,7 @@ DocType: Account,Round Off,Redondear
apps/erpnext/erpnext/crm/doctype/opportunity/opportunity.js +175,Set as Lost,Establecer como Perdidos
,Sales Partners Commission,Comisiones de Ventas
,Sales Person Target Variance Item Group-Wise,Variación por Vendedor de Meta
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +546,BOM {0} must be submitted,La lista de materiales (LdM) {0} debe ser enviada
apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +549,BOM {0} must be submitted,La lista de materiales (LdM) {0} debe ser enviada
apps/erpnext/erpnext/controllers/buying_controller.py +157,Please select BOM in BOM field for Item {0},"Por favor, seleccione la Solicitud de Materiales en el campo de Solicitud de Materiales para el punto {0}"
DocType: Purchase Receipt,Rate at which supplier's currency is converted to company's base currency,Grado a la que la moneda de proveedor se convierte en la moneda base de la compañía
DocType: Lead,Person Name,Nombre de la persona
@@ -958,7 +959,7 @@ apps/erpnext/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +20
DocType: SMS Settings,Enter url parameter for receiver nos,Introduzca el parámetro url para el receptor no
,Cash Flow,Flujo de Caja
DocType: Accounts Settings,Role that is allowed to submit transactions that exceed credit limits set.,Función que esta autorizada a presentar las transacciones que excedan los límites de crédito establecidos .
apps/erpnext/erpnext/stock/utils.py +182,{0} valid serial nos for Item {1},{0} No. de serie válidos para el producto {1}
apps/erpnext/erpnext/stock/utils.py +205,{0} valid serial nos for Item {1},{0} No. de serie válidos para el producto {1}
DocType: Stock Settings,Default Stock UOM,Unidad de Medida Predeterminada para Inventario
DocType: Job Opening,Description of a Job Opening,Descripción de una oferta de trabajo
apps/erpnext/erpnext/controllers/trends.py +269,Project-wise data is not available for Quotation,El seguimiento preciso del proyecto no está disponible para la cotización--
@@ -968,7 +969,7 @@ apps/erpnext/erpnext/accounts/doctype/pos_profile/pos_profile.py +27,Global POS
DocType: Quotation Item,Quotation Item,Cotización del artículo
DocType: Employee,Date of Issue,Fecha de emisión
DocType: Sales Invoice Item,Sales Invoice Item,Articulo de la Factura de Venta
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +418,Customer {0} does not belong to project {1},Cliente {0} no pertenece a proyectar {1}
apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +419,Customer {0} does not belong to project {1},Cliente {0} no pertenece a proyectar {1}
DocType: Delivery Note Item,Against Sales Invoice Item,Contra la Factura de Venta de Artículos
DocType: Sales Invoice,Accounting Details,detalles de la contabilidad
apps/erpnext/erpnext/config/accounts.py +61,Accounting journal entries.,Entradas en el diario de contabilidad.
@@ -990,7 +991,7 @@ apps/erpnext/erpnext/accounts/doctype/payment_entry/payment_entry.py +237,Agains
apps/erpnext/erpnext/controllers/buying_controller.py +293,Row #{0}: Rejected Qty can not be entered in Purchase Return,Fila # {0}: Rechazado Cantidad no se puede introducir en la Compra de Retorno
apps/erpnext/erpnext/config/accounts.py +300,Enable / disable currencies.,Habilitar / Deshabilitar el tipo de monedas
DocType: Stock Entry,Material Transfer for Manufacture,Trasferencia de Material para Manufactura
apps/erpnext/erpnext/stock/doctype/item/item.py +537,"To merge, following properties must be same for both items","Para combinar, la siguientes propiedades deben ser las mismas para ambos artículos"
apps/erpnext/erpnext/stock/doctype/item/item.py +530,"To merge, following properties must be same for both items","Para combinar, la siguientes propiedades deben ser las mismas para ambos artículos"
apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py +195,Serial No {0} is under maintenance contract upto {1},Número de orden {0} tiene un contrato de mantenimiento hasta {1}
apps/erpnext/erpnext/selling/doctype/installation_note/installation_note.py +83,Please pull items from Delivery Note,"Por favor, extraiga los productos desde la nota de entrega--"
apps/erpnext/erpnext/config/hr.py +75,Allocate leaves for a period.,Asignar las vacaciones para un período .
@@ -1032,12 +1033,12 @@ apps/erpnext/erpnext/config/selling.py +86,Rules for adding shipping costs.,Regl
DocType: Opportunity,Your sales person will get a reminder on this date to contact the customer,Su persona de ventas recibirá un aviso con esta fecha para ponerse en contacto con el cliente
apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +164,Item Code required at Row No {0},Código del producto requerido en la fila No. {0}
DocType: SMS Log,No of Requested SMS,No. de SMS solicitados
apps/erpnext/erpnext/public/js/setup_wizard.js +269,Nos,Números
apps/erpnext/erpnext/public/js/setup_wizard.js +297,Nos,Números
DocType: Employee,Short biography for website and other publications.,Breve biografía de la página web y otras publicaciones.
apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +208,Leave of type {0} cannot be longer than {1},Permiso de tipo {0} no puede tener más de {1}
,Sales Browser,Navegador de Ventas
DocType: Employee,Contact Details,Datos del Contacto
apps/erpnext/erpnext/stock/utils.py +189,Warehouse {0} does not belong to company {1},Almacén {0} no pertenece a la empresa {1}
apps/erpnext/erpnext/stock/utils.py +212,Warehouse {0} does not belong to company {1},Almacén {0} no pertenece a la empresa {1}
apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +81,The Item {0} cannot have Batch,El artículo {0} no puede tener lotes
DocType: Employee Leave Approver,Users who can approve a specific employee's leave applications,Los usuarios que pueden aprobar las solicitudes de licencia de un empleado específico
apps/erpnext/erpnext/config/manufacturing.py +18,Generate Material Requests (MRP) and Production Orders.,Generar Solicitudes de Material ( MRP ) y Órdenes de Producción .
@@ -1055,7 +1056,7 @@ apps/erpnext/erpnext/setup/doctype/naming_series/naming_series.py +155,Series Up
DocType: Opportunity,Opportunity Date,Oportunidad Fecha
apps/erpnext/erpnext/config/stock.py +153,Upload stock balance via csv.,Sube saldo de existencias a través csv .
apps/erpnext/erpnext/setup/doctype/email_digest/email_digest.js +7,There was an error. One probable reason could be that you haven't saved the form. Please contact support@erpnext.com if the problem persists.,"Ha ocurrido un error . Una razón probable podría ser que usted no ha guardado el formulario. Por favor, póngase en contacto con support@erpnext.com si el problema persiste."
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +74,Max discount allowed for item: {0} is {1}%,Descuento máximo permitido para cada elemento: {0} es {1}%
apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +73,Max discount allowed for item: {0} is {1}%,Descuento máximo permitido para cada elemento: {0} es {1}%
,POS,POS
apps/erpnext/erpnext/hr/doctype/appraisal/appraisal.py +33,End Date can not be less than Start Date,Fecha Final no puede ser inferior a Fecha de Inicio
DocType: Leave Control Panel,Please select Carry Forward if you also want to include previous fiscal year's balance leaves to this fiscal year,"Por favor seleccione trasladar, si usted desea incluir los saldos del año fiscal anterior a este año"
@@ -1063,7 +1064,7 @@ DocType: Supplier,Contact HTML,HTML del Contacto
DocType: Shipping Rule,Calculate Based On,Calcular basado en
DocType: Production Order,Qty To Manufacture,Cantidad Para Fabricación
DocType: BOM Item,Basic Rate (Company Currency),Precio Base (Moneda Local)
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +76,Total Outstanding Amt,Monto Total Soprepasado
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +70,Total Outstanding Amt,Monto Total Soprepasado
apps/erpnext/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py +39,Outstanding Amt,Monto Sobrepasado
apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +199,Row {0}: Credit entry can not be linked with a {1},Fila {0}: Crédito no puede vincularse con {1}
apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +149,Credit Card,Tarjeta de Crédito
@@ -1078,8 +1079,8 @@ apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +29,New Serial No cann
apps/erpnext/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +80,Overlapping conditions found between:,Condiciones coincidentes encontradas entre :
apps/erpnext/erpnext/stock/doctype/packing_slip/packing_slip.py +47,Please specify a valid 'From Case No.',"Por favor, especifique 'Desde el caso No.' válido"
DocType: Process Payroll,Make Bank Entry,Hacer Entrada del Banco
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +786,Item or Warehouse for row {0} does not match Material Request,Artículo o Bodega para la fila {0} no coincide Solicitud de material
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +67,'Total','Total'
apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +793,Item or Warehouse for row {0} does not match Material Request,Artículo o Bodega para la fila {0} no coincide Solicitud de material
apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +61,'Total','Total'
apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +12,Debtors,Deudores
DocType: Territory,Set Item Group-wise budgets on this Territory. You can also include seasonality by setting the Distribution.,Establecer presupuestos - Grupo sabio artículo en este Territorio. También puede incluir la estacionalidad mediante el establecimiento de la Distribución .
DocType: Territory,For reference,Por referencia
@@ -1088,8 +1089,8 @@ apps/erpnext/erpnext/projects/doctype/timesheet/timesheet.js +48,Make Salary Sli
DocType: Sales Invoice,Rounded Total (Company Currency),Total redondeado (Moneda local)
DocType: Item,Default BOM,Solicitud de Materiales por Defecto
,Delivery Note Trends,Tendencia de Notas de Entrega
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +213,Serial No {0} has already been received,Número de orden {0} ya se ha recibido
apps/erpnext/erpnext/stock/doctype/item/item.py +442,{0} entered twice in Item Tax,{0} ingresado dos veces en el Impuesto del producto
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +217,Serial No {0} has already been received,Número de orden {0} ya se ha recibido
apps/erpnext/erpnext/stock/doctype/item/item.py +435,{0} entered twice in Item Tax,{0} ingresado dos veces en el Impuesto del producto
apps/erpnext/erpnext/config/projects.py +13,Project master.,Proyecto maestro
apps/erpnext/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +47,"There can only be one Shipping Rule Condition with 0 or blank value for ""To Value""","Sólo puede haber una Condición de Regla de Envió con valor 0 o valor en blanco para ""To Value"""
DocType: Item Group,Item Group Name,Nombre del grupo de artículos
@@ -1109,9 +1110,9 @@ DocType: Monthly Distribution,Distribution Name,Nombre del Distribución
DocType: Journal Entry Account,Sales Order,Ordenes de Venta
apps/erpnext/erpnext/accounts/page/pos/pos.js +73, to ,para
DocType: Item,Weight UOM,Peso Unidad de Medida
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +175,Work-in-Progress Warehouse is required before Submit,Se requiere un Almacen de Trabajo en Proceso antes de Enviar
apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +173,Work-in-Progress Warehouse is required before Submit,Se requiere un Almacen de Trabajo en Proceso antes de Enviar
DocType: Production Planning Tool,Get Sales Orders,Recibe Órdenes de Venta
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +194,Serial No {0} quantity {1} cannot be a fraction,Número de orden {0} {1} cantidad no puede ser una fracción
apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +198,Serial No {0} quantity {1} cannot be a fraction,Número de orden {0} {1} cantidad no puede ser una fracción
DocType: Employee,Applicable Holiday List,Lista de Días Feriados Aplicable
apps/erpnext/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +131,Successfully Reconciled,Reconciliado con éxito
DocType: Process Payroll,Select Employees,Seleccione Empleados
1 apps/erpnext/erpnext/setup/doctype/sales_person/sales_person.js +13 This is a root sales person and cannot be edited. Se trata de una persona de las ventas raíz y no se puede editar .
2 apps/erpnext/erpnext/config/setup.py +15 Set Default Values like Company, Currency, Current Fiscal Year, etc. Establecer Valores Predeterminados , como Empresa , Moneda, Año Fiscal Actual, etc
3 DocType: HR Settings Employee Settings Configuración del Empleado
4 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +209 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +213 Serial No {0} does not belong to Item {1} Número de orden {0} no pertenece al elemento {1}
5 DocType: Naming Series User must always select Usuario elegirá siempre
6 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +185 Employee {0} has already applied for {1} between {2} and {3} Empleado {0} ya se ha aplicado para {1} entre {2} y {3}
7 DocType: Account Cost of Goods Sold Costo de las Ventas
12 DocType: Purchase Invoice Item Purchase Order Item Articulos de la Orden de Compra
13 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.py +94 Raw material cannot be same as main Item La materia prima no puede ser la misma que el artículo principal
14 apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +72 Avg. Buying Rate Promedio de Compra
15 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +295 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +299 Serial No {0} created Número de orden {0} creado
16 DocType: Item If subcontracted to a vendor Si es sub-contratado a un vendedor
17 DocType: Production Order Operation in Minutes Updated via 'Time Log' En minutos actualizado a través de 'Bitácora de tiempo'
18 DocType: Maintenance Visit Maintenance Time Tiempo de Mantenimiento
31 apps/erpnext/erpnext/config/hr.py +229 Organization unit (department) master. Unidad de Organización ( departamento) maestro.
32 DocType: Depreciation Schedule Journal Entry Asientos Contables
33 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +368 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +363 Completed Qty can not be greater than 'Qty to Manufacture' La cantidad completada no puede ser mayor que la cantidad a producir
34 DocType: Leave Block List Stop users from making Leave Applications on following days. Deje que los usuarios realicen Solicitudes de Vacaciones en los siguientes días .
35 DocType: Sales Invoice Item Qty as per Stock UOM Cantidad de acuerdo a la Unidad de Medida del Inventario
36 DocType: Quality Inspection Get Specification Details Obtenga Especificación Detalles
37 DocType: Item Manufacture Manufactura
87 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +436 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +437 Warehouse required for stock Item {0} Almacén requerido para la acción del artículo {0}
88 DocType: Territory Territory Targets Territorios Objetivos
89 DocType: Warranty Claim Warranty / AMC Status Garantía / AMC Estado
90 DocType: Attendance Employee Name Nombre del Empleado
91 apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py +215 Maintenance Schedule is not generated for all the items. Please click on 'Generate Schedule' Programa de mantenimiento no se genera para todos los artículos. Por favor, haga clic en ¨ Generar Programación¨
92 DocType: Email Digest New Sales Orders Nueva Órden de Venta
93 apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +49 Software Software
112 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +158 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +162 Sorry, Serial Nos cannot be merged Lo sentimos , Nos de serie no se puede fusionar
113 apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +766 Make Hacer
114 DocType: Manufacturing Settings Manufacturing Settings Ajustes de Manufactura
115 DocType: Appraisal Template Appraisal Template Title Titulo de la Plantilla deEvaluación
116 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +130 Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry. Fila {0}: Por favor, consulte "¿Es Avance 'contra la Cuenta {1} si se trata de una entrada con antelación.
117 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +43 Capital Equipments Maquinaria y Equipos
118 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +241 {0} {1} is not submitted {0} {1} no esta presentado
132 apps/erpnext/erpnext/stock/utils.py +177 apps/erpnext/erpnext/stock/utils.py +200 Serial number {0} entered more than once Número de serie {0} entraron más de una vez
133 apps/erpnext/erpnext/selling/doctype/sms_center/sms_center.py +68 Receiver List is empty. Please create Receiver List Lista de receptores está vacía. Por favor, cree Lista de receptores
134 DocType: Purchase Invoice The unique id for tracking all recurring invoices. It is generated on submit. El identificador único para el seguimiento de todas las facturas recurrentes. Se genera al enviar .
135 DocType: Target Detail Target Detail Objetivo Detalle
136 DocType: Purchase Taxes and Charges Template Purchase Taxes and Charges Template Plantillas de Cargos e Impuestos
137 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +138 Current Liabilities Pasivo Corriente
138 apps/erpnext/erpnext/config/setup.py +32 Titles for print templates e.g. Proforma Invoice. Títulos para plantillas de impresión, por ejemplo, Factura Proforma.
158 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +228 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +232 Serial No {0} not in stock Número de orden {0} no está en stock
159 apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +94 Ref Date Fecha Ref
160 apps/erpnext/erpnext/accounts/report/bank_reconciliation_statement/bank_reconciliation_statement.py +34 Bank Statement balance as per General Ledger Balanza de Estado de Cuenta Bancario según Libro Mayor
161 DocType: Naming Series Setup Series Serie de configuración
162 DocType: Production Order Operation Actual Start Time Hora de inicio actual
163 apps/erpnext/erpnext/stock/doctype/item/item.py +451 apps/erpnext/erpnext/stock/doctype/item/item.py +444 Barcode {0} already used in Item {1} El código de barras {0} ya se utiliza en el elemento {1}
164 apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +31 Health Care Cuidado de la Salud
165 DocType: Item Manufacturer Part Number Número de Pieza del Fabricante
166 DocType: Item Reorder Re-Order Level Reordenar Nivel
167 DocType: Customer Sales Team Details Detalles del equipo de ventas
168 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +559 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +560 Sales Order {0} is not submitted Órden de Venta {0} no esta presentada
169 apps/erpnext/erpnext/utilities/transaction_base.py +110 Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) Fila # {0}: Tasa debe ser el mismo que {1}: {2} ({3} / {4})
170 apps/erpnext/erpnext/config/selling.py +18 Confirmed orders from Customers. Pedidos en firme de los clientes.
171 DocType: Warranty Claim Service Address Dirección del Servicio
172 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +9 Application of Funds (Assets) Aplicación de Fondos (Activos )
173 DocType: Pricing Rule Discount on Price List Rate (%) Descuento sobre la tarifa del listado de precios (%)
174 apps/erpnext/erpnext/public/js/setup_wizard.js +90 The name of your company for which you are setting up this system. El nombre de su empresa para la que va a configurar el sistema.
192 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +31 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +25 Total Outstanding Amount Total Monto Pendiente
193 DocType: Sales Partner Select Monthly Distribution to unevenly distribute targets across months. Seleccione Distribución Mensual de distribuir de manera desigual a través de objetivos meses.
194 apps/erpnext/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py +90 You need to enable Shopping Cart Necesita habilitar Carito de Compras
195 apps/erpnext/erpnext/controllers/sales_and_purchase_return.py +20 {0} is mandatory for Return {0} es obligatorio para su devolución
196 DocType: Leave Control Panel New Leaves Allocated (In Days) Nuevas Vacaciones Asignados (en días)
197 DocType: Employee Rented Alquilado
198 DocType: Sales Invoice Shipping Address Name Dirección de envío Nombre
202 apps/erpnext/erpnext/public/js/setup_wizard.js +201 apps/erpnext/erpnext/public/js/setup_wizard.js +225 List your tax heads (e.g. VAT, Customs etc; they should have unique names) and their standard rates. This will create a standard template, which you can edit and add more later. Enumere sus obligaciones fiscales (Ejemplo; IVA, aduanas, etc.) deben tener nombres únicos y sus tarifas por defecto. Esto creará una plantilla estándar, que podrá editar más tarde.
203 apps/erpnext/erpnext/setup/doctype/company/company.js +52 Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone. Por favor, asegúrese que realmente desea borrar todas las transacciones de esta compañía. Sus datos maestros permanecerán intactos. Esta acción no se puede deshacer.
204 DocType: Shopping Cart Settings Shopping Cart Settings Compras Ajustes
205 DocType: BOM Raw Material Cost Costo de la Materia Prima
206 apps/erpnext/erpnext/selling/doctype/customer/customer.py +115 A Customer Group exists with same name please change the Customer name or rename the Customer Group Existe una categoría de cliente con el mismo nombre, por favor cambie el nombre del cliente o cambie el nombre de la categoría
207 apps/erpnext/erpnext/config/hr.py +147 Template for performance appraisals. Plantilla para las evaluaciones de desempeño .
208 DocType: SMS Settings Enter static url parameters here (Eg. sender=ERPNext, username=ERPNext, password=1234 etc.) Introduzca los parámetros de URL estáticas aquí (Ej. sender = ERPNext , nombre de usuario = ERPNext , contraseña = 1234 etc )
214 apps/erpnext/erpnext/public/js/setup_wizard.js +219 apps/erpnext/erpnext/public/js/setup_wizard.js +244 List a few of your customers. They could be organizations or individuals. Enumere algunos de sus clientes. Pueden ser organizaciones o individuos.
215 DocType: Item Customer Detail Ref Code Código Referencia
216 DocType: Item Default Selling Cost Center Centros de coste por defecto
217 DocType: Leave Block List Leave Block List Allowed Lista de Bloqueo de Vacaciones Permitida
218 DocType: Quality Inspection Report Date Fecha del Informe
219 apps/erpnext/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +143 Purchase Invoice {0} is already submitted Factura de Compra {0} ya existe
220 DocType: Purchase Invoice Currency and Price List Divisa y Lista de precios
246 DocType: Asset Movement apps/erpnext/erpnext/public/js/setup_wizard.js +205 Source Warehouse user@example.com fuente de depósito user@example.com
247 apps/erpnext/erpnext/public/js/templates/contact_list.html +34 DocType: Asset Movement No contacts added yet. Source Warehouse No se han añadido contactos todavía fuente de depósito
248 apps/erpnext/erpnext/accounts/doctype/account/account.py +159 apps/erpnext/erpnext/public/js/templates/contact_list.html +34 Root Type is mandatory No contacts added yet. Tipo Root es obligatorio No se han añadido contactos todavía
249 apps/erpnext/erpnext/accounts/doctype/account/account.py +159 Root Type is mandatory Tipo Root es obligatorio
250 DocType: Training Event Scheduled Programado
251 DocType: Salary Detail Depends on Leave Without Pay Depende de ausencia sin pago
252 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +74 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +68 Total Paid Amt Total Pagado Amt
253 apps/erpnext/erpnext/selling/report/inactive_customers/inactive_customers.py +16 'Days Since Last Order' must be greater than or equal to zero 'Días desde el último pedido' debe ser mayor o igual a cero
254 DocType: Material Request Item For Warehouse Por almacén
255 Purchase Order Items To Be Received Productos de la Orden de Compra a ser Recibidos
256 DocType: Notification Control Delivery Note Message Mensaje de la Nota de Entrega
257 DocType: Purchase Invoice Item Raw Materials Supplied Cost Coste materias primas suministradas
258 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +534 Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. Pending Amount is {2} linea No. {0}: El importe no puede ser mayor que el reembolso pendiente {1}. El importe pendiente es {2}
262 apps/erpnext/erpnext/public/js/controllers/transaction.js +1165 apps/erpnext/erpnext/public/js/controllers/transaction.js +1086 Please enter Item Code to get batch no Por favor, ingrese el código del producto para obtener el No. de lote
263 apps/erpnext/erpnext/selling/doctype/customer/customer.py +34 Series is mandatory Serie es obligatorio
264 Item Shortage Report Reportar carencia de producto
265 DocType: Sales Invoice Rate at which Price list currency is converted to customer's base currency Grado en el que la lista de precios en moneda se convierte en la moneda base del cliente
266 DocType: Stock Entry Sales Invoice No Factura de Venta No
267 DocType: HR Settings Don't send Employee Birthday Reminders En enviar recordatorio de cumpleaños del empleado
268 Ordered Items To Be Delivered Artículos pedidos para ser entregados
275 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +408 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +409 {0} is mandatory for Item {1} {0} es obligatorio para el producto {1}
276 apps/erpnext/erpnext/config/hr.py +234 Employee designation (e.g. CEO, Director etc.). Cargo del empleado ( por ejemplo, director general, director , etc.)
277 DocType: Item Copy From Item Group Copiar de Grupo de Elementos
278 apps/erpnext/erpnext/stock/get_item_details.py +526 No default BOM exists for Item {0} No existe una Solicitud de Materiales por defecto para el elemento {0}
279 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +164 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +163 {0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3} {0} ({1}) no puede ser mayor que cantidad planificada ({2}) en la Orden de Producción {3}
280 apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +847 Select Item for Transfer Seleccionar elemento de Transferencia
281 apps/erpnext/erpnext/hr/doctype/employee/employee.py +110 Date of Joining must be greater than Date of Birth Fecha de acceso debe ser mayor que Fecha de Nacimiento
282 DocType: Buying Settings Settings for Buying Module Ajustes para la compra de módulo
283 DocType: Sales Person Sales Person Targets Metas de Vendedor
284 apps/erpnext/erpnext/config/setup.py +42 Standard contract terms for Sales or Purchase. Condiciones contractuales estándar para ventas y compras.
285 DocType: Stock Entry Detail Actual Qty (at source/target) Cantidad Actual (en origen/destino)
301 apps/erpnext/erpnext/hooks.py +87 apps/erpnext/erpnext/hooks.py +94 Shipments Los envíos
302 apps/erpnext/erpnext/public/js/setup_wizard.js +273 apps/erpnext/erpnext/public/js/setup_wizard.js +301 We buy this Item Compramos este artículo
303 apps/erpnext/erpnext/controllers/buying_controller.py +149 Please enter 'Is Subcontracted' as Yes or No Por favor, introduzca si 'Es Subcontratado' o no
304 apps/erpnext/erpnext/setup/doctype/company/company.py +51 Abbreviation already used for another company La Abreviación ya está siendo utilizada para otra compañía
305 DocType: Purchase Order Item Supplied Purchase Order Item Supplied Orden de Compra del Artículo Suministrado
306 DocType: Selling Settings Sales Order Required Orden de Ventas Requerida
307 DocType: Request for Quotation Item Required Date Fecha Requerida
308 DocType: Manufacturing Settings Allow Overtime Permitir horas extras
335 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +41 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +40 Selling must be checked, if Applicable For is selected as {0} Ventas debe ser seleccionado, si se selecciona Aplicable Para como {0}
336 DocType: Selling Settings Maintain Same Rate Throughout Sales Cycle Mantener misma tasa durante todo el ciclo de ventas
337 DocType: Employee External Work History Salary Salario
338 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +145 Stock Liabilities Inventario de Pasivos
339 DocType: Shipping Rule Shipping Rule Label Regla Etiqueta de envío
340 apps/erpnext/erpnext/stock/doctype/item/item.js +55 This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set Este artículo es una plantilla y no se puede utilizar en las transacciones. Atributos artículo se copiarán en las variantes menos que se establece 'No Copy'
341 DocType: Target Detail Target Amount Monto Objtetivo
354 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +218 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +222 Serial No {0} does not belong to Warehouse {1} Número de orden {0} no pertenece al Almacén {1}
355 DocType: Shopping Cart Shipping Rule Shopping Cart Shipping Rule Compras Regla de envío
356 apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.js +36 Make Payment Entry Registrar pago
357 DocType: Maintenance Schedule Detail Scheduled Date Fecha prevista
358 DocType: Material Request % Ordered % Pedido
359 apps/erpnext/erpnext/projects/doctype/task/task.py +37 'Expected Start Date' can not be greater than 'Expected End Date' La 'Fecha de inicio estimada' no puede ser mayor que la 'Fecha de finalización estimada'
360 DocType: UOM Conversion Detail UOM Conversion Detail Detalle de Conversión de Unidad de Medida
362 apps/erpnext/erpnext/public/js/setup_wizard.js +228 apps/erpnext/erpnext/public/js/setup_wizard.js +254 Contact Name Nombre del Contacto
363 apps/erpnext/erpnext/setup/setup_wizard/setup_wizard.py +21 Setup Already Complete!! Configuración completa !
364 DocType: Quotation Quotation Lost Reason Cotización Pérdida Razón
365 DocType: Monthly Distribution Monthly Distribution Percentages Los porcentajes de distribución mensuales
366 apps/erpnext/erpnext/config/maintenance.py +12 Plan for maintenance visits. Plan para las visitas de mantenimiento.
367 SO Qty SO Cantidad
368 DocType: Shopping Cart Settings Quotation Series Serie Cotización
402 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +201 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +205 Duplicate Serial No entered for Item {0} Duplicar Serie No existe para la partida {0}
403 apps/erpnext/erpnext/stock/report/supplier_wise_sales_analytics/supplier_wise_sales_analytics.py +47 Delivered Amount Cantidad Entregada
404 apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center_tree.js +16 New Company Nueva Empresa
405 DocType: Employee Permanent Address Is Dirección permanente es
406 Issued Items Against Production Order Productos emitidos con una orden de producción
407 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +260 apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.js +349 Max: {0} Max: {0}
408 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +231 {0} {1} has been modified. Please refresh. {0} {1} ha sido modificado. Por favor actualizar.
409 DocType: Item Item Tax Impuesto del artículo
410 Item Prices Precios de los Artículos
411 DocType: Account Balance must be Balance debe ser
412 DocType: Sales Partner A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission. Terceros / proveedor / comisionista / afiliado / distribuidor que vende productos de empresas a cambio de una comisión.
413 DocType: Manufacturing Settings Try planning operations for X days in advance. Trate de operaciones para la planificación de X días de antelación.
419 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +153 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +165 You can not change rate if BOM mentioned agianst any item No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo
420 DocType: Account Accounts Contabilidad
421 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +61 Expected Delivery Date cannot be before Purchase Order Date Fecha prevista de entrega no puede ser anterior Fecha de Orden de Compra
422 DocType: Workstation per hour por horas
423 apps/erpnext/erpnext/crm/doctype/opportunity/opportunity_list.js +17 Set as Closed Establecer como Cerrada
424 DocType: Production Order Operation Work In Progress Trabajos en Curso
425 DocType: Accounts Settings Credit Controller Credit Controller
457 apps/erpnext/erpnext/stock/doctype/item/item.py +500 apps/erpnext/erpnext/stock/doctype/item/item.py +493 Row {0}: An Reorder entry already exists for this warehouse {1} Fila {0}: Una entrada para reordenar ya existe para este almacén {1}
458 DocType: Lead Lead Iniciativas
459 apps/erpnext/erpnext/hr/doctype/leave_application/leave_application.py +152 There is not enough leave balance for Leave Type {0} No hay suficiente saldo para Tipo de Vacaciones {0}
460 apps/erpnext/erpnext/config/hr.py +87 Block leave applications by department. Bloquee solicitud de ausencias por departamento.
461 apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py +58 Repeat Customers Repita los Clientes
462 DocType: Account Depreciation Depreciación
463 apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +165 apps/erpnext/erpnext/selling/doctype/quotation/quotation.py +176 Please create Customer from Lead {0} Por favor, cree Cliente de la Oportunidad {0}
464 DocType: Payment Request Make Sales Invoice Hacer Factura de Venta
465 DocType: Purchase Invoice Supplier Invoice No Factura del Proveedor No
466 DocType: Payment Gateway Account Payment Account Pago a cuenta
467 DocType: Journal Entry Cash Entry Entrada de Efectivo
468 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +105 Row {0}: Party Type and Party is only applicable against Receivable / Payable account Fila {0}: el tipo de entidad es aplicable únicamente contra las cuentas de cobrar/pagar
469 apps/erpnext/erpnext/public/js/account_tree_grid.js +66 Select Fiscal Year... Seleccione el año fiscal ...
493 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +441 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +442 Stock cannot be updated against Delivery Note {0} Inventario no puede actualizarse contra Nota de Envio {0}
494 DocType: Workstation Rent Cost Renta Costo
495 apps/erpnext/erpnext/hooks.py +116 apps/erpnext/erpnext/hooks.py +124 Issues Problemas
496 DocType: BOM Replace Tool Current BOM Lista de materiales actual
497 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +75 Row # {0}: Fila # {0}:
498 DocType: Timesheet % Amount Billed % Monto Facturado
499 DocType: BOM Manage cost of operations Administrar el costo de las operaciones
500 DocType: Employee Company Email Correo de la compañía
501 apps/erpnext/erpnext/config/support.py +32 Single unit of an Item. Números de serie únicos para cada producto
516 apps/erpnext/erpnext/stock/doctype/item/item.py +422 apps/erpnext/erpnext/stock/doctype/item/item.py +415 Default BOM ({0}) must be active for this item or its template La lista de materiales por defecto ({0}) debe estar activa para este producto o plantilla
517 apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.js +27 Note: This Cost Center is a Group. Cannot make accounting entries against groups. Nota: Este centro de costos es un grupo. No se pueden crear asientos contables en los grupos.
518 DocType: Email Digest How frequently? ¿Con qué frecuencia ?
519 DocType: C-Form Invoice Detail Invoice No Factura No
520 apps/erpnext/erpnext/config/hr.py +12 Employee records. Registros de empleados .
521 DocType: Employee Bank A/C No. Número de cuenta bancaria
522 DocType: Delivery Note Customer's Purchase Order No Nº de Pedido de Compra del Cliente
543 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +25 apps/erpnext/erpnext/manufacturing/doctype/bom/bom.js +37 Update Cost Actualización de Costos
544 DocType: BOM Last Purchase Rate Tasa de Cambio de la Última Compra
545 DocType: Bin Actual Quantity Cantidad actual
546 DocType: Asset Movement Stock Manager Gerente
547 DocType: Shipping Rule Condition Shipping Rule Condition Regla Condición inicial
548 apps/erpnext/erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py +169 Opening Balance Equity Apertura de saldos de capital
549 DocType: Stock Entry Detail Stock Entry Detail Detalle de la Entrada de Inventario
554 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +45 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +44 Buying must be checked, if Applicable For is selected as {0} Compra debe comprobarse, si se selecciona Aplicable Para como {0}
555 apps/erpnext/erpnext/accounts/report/trial_balance/trial_balance.js +49 Period Closing Entry Entradas de cierre de período
556 apps/erpnext/erpnext/projects/report/project_wise_stock_tracking/project_wise_stock_tracking.py +26 Cost of Purchased Items El costo de artículos comprados
557 DocType: Company Delete Company Transactions Eliminar Transacciones de la empresa
558 DocType: Purchase Order Item Supplied Stock UOM Unidad de Media del Inventario
559 Itemwise Recommended Reorder Level Nivel recomendado de re-ordenamiento de producto
560 DocType: Leave Type Leave Type Name Nombre de Tipo de Vacaciones
591 apps/erpnext/erpnext/public/js/setup_wizard.js +209 apps/erpnext/erpnext/public/js/setup_wizard.js +234 Rate (%) Procentaje (% )
592 DocType: Leave Control Panel Leave Control Panel Salir del Panel de Control
593 DocType: Monthly Distribution Percentage Percentage Allocation Porcentaje de asignación de
594 DocType: Shipping Rule Condition Shipping Amount Importe del envío
595 apps/erpnext/erpnext/stock/doctype/item/item.py +46 Item Code is mandatory because Item is not automatically numbered El código del artículo es obligatorio porque el producto no se enumera automáticamente
596 DocType: Sales Invoice Item Sales Order Item Articulo de la Solicitud de Venta
597 apps/erpnext/erpnext/config/stock.py +163 Incoming quality inspection. Inspección de calidad entrante
598 apps/erpnext/erpnext/public/js/setup_wizard.js +257 apps/erpnext/erpnext/public/js/setup_wizard.js +284 List your products or services that you buy or sell. Make sure to check the Item Group, Unit of Measure and other properties when you start. Enumere algunos de los productos o servicios que usted compra o vende. asegúrese de revisar el 'Grupo' de los artículos, unidad de medida (UOM) y las demás propiedades.
599 DocType: Sales Person Parent Sales Person Contacto Principal de Ventas
600 DocType: Warehouse Warehouse Contact Info Información de Contacto del Almacén
601 DocType: Supplier Statutory info and other general information about your Supplier Información legal y otra información general acerca de su proveedor
602 apps/erpnext/erpnext/stock/doctype/item/item.py +403 apps/erpnext/erpnext/stock/doctype/item/item.py +396 Unit of Measure {0} has been entered more than once in Conversion Factor Table Unidad de Medida {0} se ha introducido más de una vez en la Tabla de Factores de Conversión
603 apps/erpnext/erpnext/setup/doctype/currency_exchange/currency_exchange.py +23 From Currency and To Currency cannot be same 'Desde Moneda' y 'A Moneda' no puede ser la misma
604 DocType: Shopping Cart Settings Default settings for Shopping Cart Ajustes por defecto para Compras
605 apps/erpnext/erpnext/accounts/doctype/cost_center/cost_center.py +38 Cost Center with existing transactions can not be converted to group Centro de Costos de las transacciones existentes no se puede convertir al grupo
606 DocType: Fiscal Year Year Start Date Fecha de Inicio
607 DocType: Buying Settings Supplier Naming By Ordenar proveedores por:
608 DocType: Notification Control Sales Invoice Message Mensaje de la Factura
635 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +562 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +563 Delivery Note {0} is not submitted Nota de Entrega {0} no está presentada
636 apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py +137 Row {0}: To set {1} periodicity, difference between from and to date \ must be greater than or equal to {2} Fila {0}: Para establecer {1} periodicidad, diferencia entre desde y hasta la fecha \ debe ser mayor que o igual a {2}
637 apps/erpnext/erpnext/accounts/doctype/pricing_rule/pricing_rule.js +36 Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc. Luego las reglas de precios son filtradas en base a Cliente, Categoría de cliente, Territorio, Proveedor, Tipo de Proveedor, Campaña, Socio de Ventas, etc
638 DocType: Opportunity Enter name of campaign if source of enquiry is campaign Introduzca el nombre de la campaña si el origen de la encuesta es una campaña
639 DocType: BOM Item Scrap % Chatarra %
640 apps/erpnext/erpnext/public/js/setup_wizard.js +43 Upload your letter head and logo. (you can edit them later). Carge su membrete y su logotipo. (Puede editarlos más tarde).
641 DocType: Item Is Purchase Item Es una compra de productos
688 DocType: Item Reorder Material Request Type Tipo de Solicitud de Material
689 apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py +187 Serial No {0} not found Serial No {0} no encontrado
690 DocType: Quotation Rate at which Price list currency is converted to company's base currency Grado en el que la lista de precios en moneda se convierte en la moneda base de la compañía
691 apps/erpnext/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +166 Row {0}: Allocated amount {1} must be less than or equals to invoice outstanding amount {2} Fila {0}: cantidad asignada {1} debe ser menor o igual a cantidad pendiente a facturar {2}
692 Open Production Orders Abrir Ordenes de Producción
693 DocType: Sales Taxes and Charges Tax Amount After Discount Amount (Company Currency) Monto de impuestos Después Cantidad de Descuento (Compañía moneda)
694 DocType: Holiday List Holiday List Name Lista de nombres de vacaciones
706 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +144 Source warehouse is mandatory for row {0} Almacén de origen es obligatoria para la fila {0}
707 DocType: Sales Partner Target Distribution Distribución Objetivo
708 apps/erpnext/erpnext/config/hr.py +45 Opening for a Job. Apertura de un Trabajo .
709 DocType: BOM Item Image (if not slideshow) Imagen del Artículo (si no, presentación de diapositivas)
710 DocType: Naming Series Change the starting / current sequence number of an existing series. Defina el número de secuencia nuevo para esta transacción
711 DocType: Serial No Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt Depósito sólo se puede cambiar a través de la Entrada de Almacén / Nota de Entrega / Recibo de Compra
712 DocType: Quotation Quotation To Cotización Para
718 DocType: Notification Control Purchase Order Message Mensaje de la Orden de Compra
719 DocType: Customer Group Only leaf nodes are allowed in transaction Sólo las Cuentas de Detalle se permiten en una transacción
720 apps/erpnext/erpnext/hr/doctype/leave_block_list/leave_block_list.py +19 Date is repeated Fecha se repite
721 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +116 Government Gobierno
722 apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +46 Securities & Commodity Exchanges Valores y Bolsas de Productos
723 DocType: Supplier Quotation Stopped Detenido
724 DocType: Item Items with higher weightage will be shown higher Los productos con mayor peso se mostraran arriba
764 DocType: Purchase Invoice Start date of current invoice's period Fecha del período de facturación actual Inicie
765 DocType: Appraisal Goal Score (0-5) Puntuación ( 0-5)
766 apps/erpnext/erpnext/accounts/doctype/fiscal_year/fiscal_year.js +19 To set this Fiscal Year as Default, click on 'Set as Default' Para establecer este Año Fiscal como Predeterminado , haga clic en " Establecer como Predeterminado "
767 apps/erpnext/erpnext/config/manufacturing.py +57 Where manufacturing operations are carried. ¿Dónde se realizan las operaciones de fabricación.
768 apps/erpnext/erpnext/hr/doctype/appraisal/appraisal.py +42 Appraisal {0} created for Employee {1} in the given date range Evaluación {0} creado por Empleado {1} en el rango de fechas determinado
769 DocType: Employee Leave Approver Employee Leave Approver Supervisor de Vacaciones del Empleado
770 apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +33 Investment Banking Banca de Inversión
775 apps/erpnext/erpnext/stock/doctype/batch/batch.py +37 The selected item cannot have Batch El elemento seleccionado no puede tener lotes
776 DocType: Account Setting Account Type helps in selecting this Account in transactions. Ajuste del tipo de cuenta le ayuda en la selección de esta cuenta en las transacciones.
777 apps/erpnext/erpnext/hr/doctype/employee/employee.py +144 User {0} is already assigned to Employee {1} El usuario {0} ya está asignado a Empleado {1}
778 DocType: Account Expenses Included In Valuation Gastos dentro de la valoración
779 apps/erpnext/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py +57 New Customers Clientes Nuevos
780 DocType: Purchase Invoice Total Taxes and Charges (Company Currency) Total Impuestos y Cargos (Moneda Local)
781 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +72 Piecework Pieza de trabajo
798 DocType: Timesheet Detail To Time Para Tiempo
799 apps/erpnext/erpnext/public/js/templates/address_list.html +20 No address added yet. No se ha añadido ninguna dirección todavía.
800 Terretory Territorios
801 DocType: Naming Series Series List for this Transaction Lista de series para esta transacción
802 DocType: Item Attribute Value This will be appended to the Item Code of the variant. For example, if your abbreviation is "SM", and the item code is "T-SHIRT", the item code of the variant will be "T-SHIRT-SM" Esto se añade al Código del Artículo de la variante. Por ejemplo, si su abreviatura es "SM", y el código del artículo es "CAMISETA", el código de artículo de la variante será "CAMISETA-SM"
803 DocType: Project Total Billing Amount (via Time Logs) Monto total de facturación (a través de los registros de tiempo)
804 DocType: Workstation Wages Salario
805 apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +196 Outstanding for {0} cannot be less than zero ({1}) Sobresaliente para {0} no puede ser menor que cero ({1} )
806 DocType: Appraisal Goal Appraisal Goal Evaluación Meta
817 apps/erpnext/erpnext/controllers/accounts_controller.py +291 Account {0} is invalid. Account Currency must be {1} La Cuenta {0} no es válida. La Moneda de la Cuenta debe de ser {1}
818 DocType: Item If this item has variants, then it cannot be selected in sales orders etc. Si este artículo tiene variantes, entonces no podrá ser seleccionado en los pedidos de venta, etc.
819 apps/erpnext/erpnext/accounts/page/pos/pos.js +72 is mandatory. Maybe Currency Exchange record is not created for es mandatorio. Quizás el registro de Cambio de Moneda no ha sido creado para
820 DocType: Sales Invoice Sales Team1 Team1 Ventas
821 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +539 Stock Entry {0} is not submitted Entrada de la {0} no se presenta
822 apps/erpnext/erpnext/config/support.py +12 Support queries from customers. Consultas de soporte de clientes .
823 apps/erpnext/erpnext/config/selling.py +13 Quotes to Leads or Customers. Cotizaciones a Oportunidades o Clientes
829 Serial No Service Contract Expiry Número de orden de servicio Contrato de caducidad
830 apps/erpnext/erpnext/controllers/buying_controller.py +153 Supplier Warehouse mandatory for sub-contracted Purchase Receipt Almacén de Proveedor es necesario para recibos de compras sub contratadas
831 DocType: Employee Education School/University Escuela / Universidad
832 apps/erpnext/erpnext/stock/get_item_details.py +151 Item {0} must be a Sub-contracted Item El elemento {0} debe ser un producto sub-contratado
833 DocType: Supplier Is Frozen Está Inactivo
834 apps/erpnext/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py +191 Serial No {0} is under warranty upto {1} Número de orden {0} está en garantía hasta {1}
835 apps/erpnext/erpnext/config/manufacturing.py +84 Global settings for all manufacturing processes. Configuración global para todos los procesos de fabricación.
929 DocType: Purchase Invoice Item Rejected Serial No Rechazado Serie No
930 apps/erpnext/erpnext/stock/report/bom_search/bom_search.js +38 Search Sub Assemblies Asambleas Buscar Sub
931 DocType: Item Supplier Items Artículos del Proveedor
932 DocType: Opportunity Contact Mobile No No Móvil del Contacto
933 DocType: C-Form Invoice Detail Invoice Date Fecha de la factura
934 DocType: Purchase Invoice Repeat on Day of Month Repita el Día del mes
935 DocType: Employee Date Of Retirement Fecha de la jubilación
948 DocType: Expense Claim Employees Email Id Empleados Email Id
949 apps/erpnext/erpnext/stock/report/stock_projected_qty/stock_projected_qty.py +20 Shortage Qty Escasez Cantidad
950 DocType: SMS Settings Enter url parameter for receiver nos Introduzca el parámetro url para el receptor no
951 Cash Flow Flujo de Caja
952 DocType: Accounts Settings Role that is allowed to submit transactions that exceed credit limits set. Función que esta autorizada a presentar las transacciones que excedan los límites de crédito establecidos .
953 apps/erpnext/erpnext/stock/utils.py +182 apps/erpnext/erpnext/stock/utils.py +205 {0} valid serial nos for Item {1} {0} No. de serie válidos para el producto {1}
954 DocType: Stock Settings Default Stock UOM Unidad de Medida Predeterminada para Inventario
959 apps/erpnext/erpnext/accounts/doctype/pos_profile/pos_profile.py +27 Global POS Profile {0} already created for company {1} El perfil de POS global {0} ya fue creado para la compañía {1}
960 DocType: Quotation Item Quotation Item Cotización del artículo
961 DocType: Employee Date of Issue Fecha de emisión
962 DocType: Sales Invoice Item Sales Invoice Item Articulo de la Factura de Venta
963 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +418 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +419 Customer {0} does not belong to project {1} Cliente {0} no pertenece a proyectar {1}
964 DocType: Delivery Note Item Against Sales Invoice Item Contra la Factura de Venta de Artículos
965 DocType: Sales Invoice Accounting Details detalles de la contabilidad
969 DocType: HR Settings Employee Records to be created by Registros de empleados a ser creados por
970 DocType: Account Expense Account Cuenta de gastos
971 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +212 Maintenance Schedule {0} must be cancelled before cancelling this Sales Order Programa de mantenimiento {0} debe ser cancelado antes de cancelar esta orden de venta
972 DocType: Stock Ledger Entry Actual Qty After Transaction Cantidad actual después de la transacción
973 DocType: Hub Settings Seller Email Correo Electrónico del Vendedor
974 apps/erpnext/erpnext/setup/doctype/territory/territory.py +19 Either target qty or target amount is mandatory Cualquiera Cantidad Meta o Monto Meta es obligatoria
975 DocType: Authorization Rule Applicable To (Role) Aplicable a (Rol )
991 DocType: Stock Settings Auto Material Request Solicitud de Materiales Automatica
992 apps/erpnext/erpnext/stock/doctype/material_request/material_request.js +785 Get Items from BOM Obtener elementos de la Solicitud de Materiales
993 apps/erpnext/erpnext/config/selling.py +229 Customer Addresses And Contacts Las direcciones de clientes y contactos
994 apps/erpnext/erpnext/accounts/doctype/account/account.py +50 Account {0}: You can not assign itself as parent account Cuenta {0}: no puede asignar la misma cuenta como su cuenta Padre.
995 DocType: Item Price Item Price Precios de Productos
996 DocType: Leave Control Panel Leave blank if considered for all branches Dejar en blanco si se considera para todas las ramas
997 DocType: Purchase Order To Bill A Facturar
1033 apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +81 The Item {0} cannot have Batch El artículo {0} no puede tener lotes
1034 DocType: Employee Leave Approver Users who can approve a specific employee's leave applications Los usuarios que pueden aprobar las solicitudes de licencia de un empleado específico
1035 apps/erpnext/erpnext/config/manufacturing.py +18 Generate Material Requests (MRP) and Production Orders. Generar Solicitudes de Material ( MRP ) y Órdenes de Producción .
1036 apps/erpnext/erpnext/config/stock.py +27 Requests for items. Listado de solicitudes de productos
1037 apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py +177 For Quantity (Manufactured Qty) is mandatory Por Cantidad (Cantidad fabricada) es obligatorio
1038 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +546 cannot be greater than 100 No puede ser mayor que 100
1039 DocType: Maintenance Visit Customer Feedback Comentarios del cliente
1040 DocType: Purchase Receipt Item Supplied Required Qty Cant. Necesaria
1041 apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +815 Delivery Note Notas de Entrega
1042 DocType: Bin Stock Value Valor de Inventario
1043 DocType: Purchase Invoice In Words (Company Currency) En palabras (Moneda Local)
1044 DocType: Website Item Group Website Item Group Grupo de Artículos del Sitio Web
1056 DocType: Production Order Qty To Manufacture Cantidad Para Fabricación
1057 DocType: BOM Item Basic Rate (Company Currency) Precio Base (Moneda Local)
1058 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +76 apps/erpnext/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +70 Total Outstanding Amt Monto Total Soprepasado
1059 apps/erpnext/erpnext/selling/report/customer_credit_balance/customer_credit_balance.py +39 Outstanding Amt Monto Sobrepasado
1060 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +199 Row {0}: Credit entry can not be linked with a {1} Fila {0}: Crédito no puede vincularse con {1}
1061 apps/erpnext/erpnext/setup/setup_wizard/install_fixtures.py +149 Credit Card Tarjeta de Crédito
1062 apps/erpnext/erpnext/accounts/party.py +253 Accounting entries have already been made in currency {0} for company {1}. Please select a receivable or payable account with currency {0}. Partidas contables ya han sido realizadas en {0} para la empresa {1}. Por favor seleccione una cuenta por cobrar o pagar con moneda {0}
1064 DocType: Leave Application Leave Application Solicitud de Vacaciones
1065 apps/erpnext/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js +782 For Supplier Por proveedor
1066 DocType: Hub Settings Seller Description Descripción del Vendedor
1067 apps/erpnext/erpnext/config/maintenance.py +17 Visit report for maintenance call. Informe de visita por llamada de mantenimiento .
1068 apps/erpnext/erpnext/config/selling.py +118 Manage Sales Person Tree. Vista en árbol para la administración de las categoría de vendedores
1069 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +29 New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt El numero de serie no tiene almacén. el almacén debe establecerse por entradas de stock o recibos de compra
1070 apps/erpnext/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +80 Overlapping conditions found between: Condiciones coincidentes encontradas entre :
1079 apps/erpnext/erpnext/projects/doctype/timesheet/timesheet.js +48 Make Salary Slip Hacer Nómina
1080 DocType: Sales Invoice Rounded Total (Company Currency) Total redondeado (Moneda local)
1081 DocType: Item Default BOM Solicitud de Materiales por Defecto
1082 Delivery Note Trends Tendencia de Notas de Entrega
1083 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +213 apps/erpnext/erpnext/stock/doctype/serial_no/serial_no.py +217 Serial No {0} has already been received Número de orden {0} ya se ha recibido
1084 apps/erpnext/erpnext/stock/doctype/item/item.py +442 apps/erpnext/erpnext/stock/doctype/item/item.py +435 {0} entered twice in Item Tax {0} ingresado dos veces en el Impuesto del producto
1085 apps/erpnext/erpnext/config/projects.py +13 Project master. Proyecto maestro
1086 apps/erpnext/erpnext/accounts/doctype/shipping_rule/shipping_rule.py +47 There can only be one Shipping Rule Condition with 0 or blank value for "To Value" Sólo puede haber una Condición de Regla de Envió con valor 0 o valor en blanco para "To Value"
1089 DocType: Account Root Type Tipo Root
1090 apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +118 Reference No & Reference Date is required for {0} Se requiere de No de Referencia y Fecha de Referencia para {0}
1091 apps/erpnext/erpnext/hr/doctype/employee/employee.py +129 Please enter relieving date. Por favor, introduzca la fecha de recepción.
1092 DocType: Sales Order Item Gross Profit Utilidad bruta
1093 apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +93 Warehouse not found in the system Almacén no se encuentra en el sistema
1094 DocType: Production Planning Tool Pull sales orders (pending to deliver) based on the above criteria Obtener Ordenes de venta (pendientes de entrega) basados en los criterios anteriores
1095 Serial No Status Número de orden Estado
1096 DocType: Bin Ordered Quantity Cantidad Pedida
1110 apps/erpnext/erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py +94 Stock transactions before {0} are frozen Operaciones de Inventario antes de {0} se congelan
1111 DocType: Purchase Invoice Item Net Rate (Company Currency) Tasa neta (Moneda Local)
1112 DocType: Period Closing Voucher Closing Account Head Cuenta de cierre principal
1113 apps/erpnext/erpnext/selling/report/inactive_customers/inactive_customers.py +72 Days Since Last Order Días desde el último pedido
1114 DocType: Item Default Buying Cost Center Centro de Costos Por Defecto
1115 apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py +218 Maintenance Visit {0} must be cancelled before cancelling this Sales Order Visita de Mantenimiento {0} debe ser cancelado antes de cancelar la Orden de Ventas
1116 DocType: Rename Tool Attach .csv file with two columns, one for the old name and one for the new name Adjuntar archivo .csv con dos columnas, una para el nombre antiguo y otro para el nombre nuevo
1117 DocType: Depreciation Schedule Schedule Date Horario Fecha
1118 DocType: UOM UOM Name Nombre Unidad de Medida

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More