[demo] [minor] simulate quotation
This commit is contained in:
parent
0983cb75d5
commit
7c2a2e24a2
@ -388,7 +388,7 @@ class AccountsController(TransactionBase):
|
||||
|
||||
total_billed_amt = flt(flt(already_billed) + flt(item.fields[based_on]),
|
||||
self.precision(based_on, item))
|
||||
|
||||
|
||||
if max_allowed_amt and total_billed_amt - max_allowed_amt > 0.02:
|
||||
webnotes.msgprint(_("Row ")+ cstr(item.idx) + ": " + cstr(item.item_code) +
|
||||
_(" will be over-billed against mentioned ") + cstr(ref_dt) +
|
||||
|
@ -59,7 +59,7 @@ def get_item_details(args):
|
||||
|
||||
if args.price_list_name and args.price_list_currency:
|
||||
out.update(_get_price_list_rate(args, item_bean, meta))
|
||||
|
||||
|
||||
out.update(_get_item_discount(out.item_group, args.customer))
|
||||
|
||||
if out.get(warehouse_fieldname):
|
||||
@ -70,7 +70,7 @@ def get_item_details(args):
|
||||
if cint(args.is_pos):
|
||||
pos_settings = get_pos_settings(args.company)
|
||||
out.update(apply_pos_settings(pos_settings, out))
|
||||
|
||||
|
||||
return out
|
||||
|
||||
def _get_item_code(barcode):
|
||||
@ -132,7 +132,7 @@ def _get_price_list_rate(args, item_bean, meta):
|
||||
"price_list_name": args.price_list_name,
|
||||
"ref_currency": args.price_list_currency,
|
||||
"buying_or_selling": "Selling"})
|
||||
|
||||
|
||||
if not base_ref_rate:
|
||||
return {}
|
||||
|
||||
|
@ -17,6 +17,8 @@ class TestDeliveryNote(unittest.TestCase):
|
||||
pr.submit()
|
||||
|
||||
def test_over_billing_against_dn(self):
|
||||
self._insert_purchase_receipt()
|
||||
|
||||
from stock.doctype.delivery_note.delivery_note import make_sales_invoice
|
||||
|
||||
dn = webnotes.bean(copy=test_records[0]).insert()
|
||||
@ -31,8 +33,8 @@ class TestDeliveryNote(unittest.TestCase):
|
||||
self.assertEquals(len(si), len(dn.doclist))
|
||||
|
||||
# modify export_amount
|
||||
si[1].export_rate = 200
|
||||
self.assertRaises(webnotes.ValidationError, webnotes.bean(si).submit)
|
||||
si[1].ref_rate = 200
|
||||
self.assertRaises(webnotes.ValidationError, webnotes.bean(si).insert)
|
||||
|
||||
|
||||
def test_delivery_note_no_gl_entry(self):
|
||||
|
23
utilities/demo_docs/Fiscal_Year.csv
Normal file
23
utilities/demo_docs/Fiscal_Year.csv
Normal file
@ -0,0 +1,23 @@
|
||||
Data Import Template,,,,
|
||||
Table:,Fiscal Year,,,
|
||||
,,,,
|
||||
,,,,
|
||||
Notes:,,,,
|
||||
Please do not change the template headings.,,,,
|
||||
First data column must be blank.,,,,
|
||||
"If you are uploading new records, leave the ""name"" (ID) column blank.",,,,
|
||||
"If you are uploading new records, ""Naming Series"" becomes mandatory, if present.",,,,
|
||||
Only mandatory fields are necessary for new records. You can delete non-mandatory columns if you wish.,,,,
|
||||
"For updating, you can update only selective columns.",,,,
|
||||
You can only upload upto 5000 records in one go. (may be less in some cases),,,,
|
||||
,,,,
|
||||
DocType:,Fiscal Year,,,
|
||||
Column Labels:,ID,Year Name,Year Start Date,Year Closed
|
||||
Column Name:,name,year,year_start_date,is_fiscal_year_closed
|
||||
Mandatory:,Yes,Yes,Yes,No
|
||||
Type:,Data (text),Data,Date,Select
|
||||
Info:,,,,"One of: No, Yes"
|
||||
Start entering data below this line,,,,
|
||||
,,2009,01-Jan-2009,No
|
||||
,,2010,01-Jan-2010,No
|
||||
,,2011,01-Jan-2011,No
|
|
@ -31,4 +31,20 @@ Start entering data below this line,,,,,
|
||||
,Shaft,Standard Buying,Buying,30,USD
|
||||
,Stand,Standard Buying,Buying,40,USD
|
||||
,Upper Bearing Plate,Standard Buying,Buying,50,USD
|
||||
,Wing Sheet,Standard Buying,Buying,22,USD
|
||||
,Wing Sheet,Standard Buying,Buying,22,USD
|
||||
,Wind Turbine,Standard Selling,Selling,300,USD
|
||||
,Wind Mill A Series,Standard Selling,Selling,340,USD
|
||||
,Wind MIll C Series,Standard Selling,Selling,400,USD
|
||||
,Base Bearing Plate,Standard Selling,Selling,21,USD
|
||||
,Base Plate,Standard Selling,Selling,28,USD
|
||||
,Bearing Block,Standard Selling,Selling,14,USD
|
||||
,Bearing Collar,Standard Selling,Selling,28,USD
|
||||
,Bearing Pipe,Standard Selling,Selling,21,USD
|
||||
,Blade Rib,Standard Selling,Selling,14,USD
|
||||
,Disc Collars,Standard Selling,Selling,103.6,USD
|
||||
,External Disc,Standard Selling,Selling,63,USD
|
||||
,Internal Disc,Standard Selling,Selling,46.2,USD
|
||||
,Shaft,Standard Selling,Selling,42,USD
|
||||
,Stand,Standard Selling,Selling,56,USD
|
||||
,Upper Bearing Plate,Standard Selling,Selling,70,USD
|
||||
,Wing Sheet,Standard Selling,Selling,30.8,USD
|
|
@ -1,14 +1,30 @@
|
||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
import webnotes, os
|
||||
import webnotes, os, datetime
|
||||
import webnotes.utils
|
||||
import random
|
||||
|
||||
webnotes.session = webnotes._dict({"user":"Administrator"})
|
||||
from core.page.data_import_tool.data_import_tool import upload
|
||||
|
||||
start_date = '2010-01-01'
|
||||
runs_for = 100
|
||||
prob = {
|
||||
"Quotation": 0.5
|
||||
}
|
||||
|
||||
def make():
|
||||
webnotes.connect()
|
||||
webnotes.print_messages = True
|
||||
webnotes.mute_emails = True
|
||||
|
||||
# setup()
|
||||
# simulate()
|
||||
make_quotation("2010-01-01")
|
||||
webnotes.conn.commit()
|
||||
|
||||
def setup():
|
||||
install()
|
||||
complete_setup()
|
||||
make_items()
|
||||
@ -17,6 +33,81 @@ def make():
|
||||
# make_bom()
|
||||
# make_opening_stock()
|
||||
# make_opening_accounts()
|
||||
|
||||
def simulate():
|
||||
current_date = None
|
||||
for i in xrange(runs_for):
|
||||
if not current_date:
|
||||
current_date = webnotes.utils.getdate(start_date)
|
||||
else:
|
||||
current_date = webnotes.utils.add_days(current_date, 1)
|
||||
|
||||
if current_date.weekday() in (5, 6):
|
||||
continue
|
||||
|
||||
run_sales(current_date)
|
||||
|
||||
webnotes.conn.commit()
|
||||
|
||||
|
||||
def run_sales(current_date):
|
||||
if random.random() < prob["Quotation"]:
|
||||
make_quotation(current_date)
|
||||
|
||||
def make_quotation(current_date):
|
||||
b = webnotes.bean([{
|
||||
"creation": current_date,
|
||||
"doctype": "Quotation",
|
||||
"quotation_to": "Customer",
|
||||
"customer": get_random("Customer"),
|
||||
"order_type": "Sales",
|
||||
"price_list_name": "Standard Selling",
|
||||
"transaction_date": current_date,
|
||||
"fiscal_year": "2010"
|
||||
}])
|
||||
|
||||
add_random_children(b, {
|
||||
"doctype": "Quotation Item",
|
||||
"parentfield": "quotation_details",
|
||||
}, rows=3, randomize = {
|
||||
"qty": (1, 5),
|
||||
"item_code": ("Item", {"is_sales_item": "Yes"})
|
||||
}, unique="item_code")
|
||||
|
||||
b.insert()
|
||||
print b.doc.name
|
||||
|
||||
def add_random_children(bean, template, rows, randomize, unique=None):
|
||||
for i in xrange(random.randrange(1, rows)):
|
||||
d = template.copy()
|
||||
for key, val in randomize.items():
|
||||
if isinstance(val[0], basestring):
|
||||
d[key] = get_random(*val)
|
||||
else:
|
||||
d[key] = random.randrange(*val)
|
||||
|
||||
if unique:
|
||||
if not bean.doclist.get({"doctype": d["doctype"], unique:d[unique]}):
|
||||
bean.doclist.append(d)
|
||||
else:
|
||||
bean.doclist.append(d)
|
||||
|
||||
|
||||
|
||||
def get_random(doctype, filters=None):
|
||||
condition = []
|
||||
if filters:
|
||||
for key, val in filters.items():
|
||||
condition.append("%s='%s'" % (key, val))
|
||||
if condition:
|
||||
condition = " where " + " and ".join(condition)
|
||||
else:
|
||||
condition = ""
|
||||
|
||||
out = webnotes.conn.sql("""select name from `tab%s` %s
|
||||
order by RAND() limit 0,1""" % (doctype, condition))[0][0]
|
||||
|
||||
return out
|
||||
|
||||
def install():
|
||||
print "Creating Fresh Database..."
|
||||
@ -37,6 +128,11 @@ def complete_setup():
|
||||
"timezone": "America/New York",
|
||||
"country": "United States"
|
||||
})
|
||||
|
||||
print "Importing Fiscal Years..."
|
||||
webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", "Fiscal_Year.csv")
|
||||
upload()
|
||||
|
||||
|
||||
def make_items():
|
||||
print "Importing Items..."
|
||||
@ -75,7 +171,7 @@ def make_users_and_employees():
|
||||
upload()
|
||||
|
||||
print "Importing Salary Structure..."
|
||||
webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", "Salary Structure.csv")
|
||||
webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", "Salary_Structure.csv")
|
||||
upload()
|
||||
|
||||
if __name__=="__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user