コード例 #1
0
def get_all_suppliers(doctype, filters, items, field, start=0, limit=20):
    """return all suppliers"""

    x = frappe.get_list(doctype,
                        filters=filters,
                        limit_start=start,
                        limit_page_length=limit)

    for val in x:

        info = get_dashboard_info(doctype, val.name)
        value = 0
        if (field == "annual_billing"):
            value = info["billing_this_year"]
        elif (field == "total_unpaid"):
            value = abs(info["total_unpaid"])

        item_obj = {
            "name": val.name,
            "annual_billing": get_formatted_value(info["billing_this_year"]),
            "total_unpaid": get_formatted_value(abs(info["total_unpaid"])),
            "href": "#Form/Supplier/" + val.name,
            "value": value
        }
        items.append(item_obj)

    items.sort(key=lambda k: k['value'], reverse=True)
    return items
コード例 #2
0
def get_all_suppliers(doctype, filters, items, start=0, limit=100):
    """return all suppliers"""

    x = frappe.get_list(doctype,
                        fields=["name", "modified"],
                        filters=filters,
                        limit_start=start,
                        limit_page_length=limit)

    for val in x:
        info = get_dashboard_info(doctype, val.name)
        items.append({
            "title":
            val.name,
            "annual_billing":
            get_formatted_value(info["billing_this_year"]),
            "total_unpaid":
            get_formatted_value(abs(info["total_unpaid"])),
            "href":
            "#Form/Supplier/" + val.name,
            "modified":
            val.modified
        })

    if len(x) > 99:
        return get_all_suppliers(doctype, filters, items, start=start)
    else:
        return items
コード例 #3
0
ファイル: custom.py プロジェクト: ksbbalean/rpricemill
def update_loyality(doc, action):
    loyalty = frappe.get_doc("Customer", doc.customer)
    value = 0
    if (loyalty.loyalty_program):
        if_loyalty = frappe.get_doc("Loyalty Program", loyalty.loyalty_program)
        if (if_loyalty.loyalty_program_based_on_item == 1):
            for ite in doc.items:
                if frappe.db.exists('Item', ite.item_code):
                    item = frappe.get_doc("Item", ite.item_code)
                    if (item.loyalty_points > 0):
                        value += (float(item.loyalty_points) * float(
                            item.loyalty_points_booster)) * int(ite.qty)
        point_entry = frappe.db.sql(
            "select name from `tabLoyalty Point Entry` where invoice = %s and redeem_against is null",
            (doc.name))
        if (len(point_entry)):
            val_point = frappe.get_doc("Loyalty Point Entry",
                                       point_entry[0][0])
            val_point.loyalty_points = value
            # frappe.db.set_value("Loyalty Point Entry",point_entry[0][0],"")
            val_point.save(ignore_permissions=True)
    data_points = get_dashboard_info('Customer', doc.customer)
    outstanding = 0
    for data_point in data_points:
        if data_point['total_unpaid']:
            outstanding += data_point['total_unpaid']
    if outstanding and doc.doctype == 'POS Invoice':
        customer_name = frappe.db.get_value('Customer', doc.customer,
                                            'customer_name')
        frappe.msgprint(
            get_link_to_form('Customer', doc.customer) + " - " +
            customer_name + " has an outstanding of " + str(outstanding))
コード例 #4
0
    def test_loyalty_points_for_dashboard(self):
        doc = frappe.get_doc('Customer', 'Test Loyalty Customer')
        company_wise_info = get_dashboard_info("Customer", doc.name,
                                               doc.loyalty_program)

        for d in company_wise_info:
            self.assertTrue(d.get("loyalty_points"))
コード例 #5
0
def set_tcs(doc, action):
	if action == "validate":
		settings = frappe.get_single("India TCS 206C_1H App Settings")
		if not cint(settings.enable_tcs):
			return
		if doc.docstatus != 0:
			return
		if len(doc.taxes) < 1:
			return
		if doc.taxes[-1].account_head == settings.tcs_account:
			return
		from erpnext.accounts.party import get_dashboard_info
		info = get_dashboard_info("Customer", doc.customer)
		customer_turnover = 0
		for company_info in info:
			if company_info['company'] == doc.company:
				customer_turnover = company_info['billing_this_year']
		if settings.tcs_trigger_amount >= customer_turnover + flt(doc.rounded_total):
			return
		tcs_row = frappe.new_doc('Sales Taxes and Charges')
		tcs_row.update({
						"charge_type": "On Previous Row Total",
						"row_id": str(len(doc.taxes)),
						"account_head": settings.tcs_account,
						"rate": settings.tcs_percentage,
						"description": settings.tcs_invoice_description,
						"parenttype": "Sales Invoice",
						"parentfield": "taxes",
						"parent": doc.name,
						"idx": len(doc.taxes) + 1
					})
		doc.taxes.append(tcs_row)
		from erpnext.controllers.taxes_and_totals import calculate_taxes_and_totals
		calculate_taxes_and_totals(doc)
コード例 #6
0
 def load_dashboard_info(self):
     info = get_dashboard_info(self.doctype, self.name)
     loyalty_point_details = self.get_loyalty_points()
     if loyalty_point_details and loyalty_point_details.get(
             "loyalty_points"):
         info["loyalty_point"] = loyalty_point_details.loyalty_points
     self.set_onload('dashboard_info', info)
コード例 #7
0
def send_sms(customer, invoice_no, inv_date, amount):
    mobile_number = (get_mobile_number(customer))[0]["mobile_no"]
    settings = frappe.get_single("Nirmala Settings")
    user = settings.user
    sender_id = settings.sender_id
    password = frappe.utils.password.get_decrypted_password(
        "Nirmala Settings", settings.name, fieldname="password")
    mobile_number = "91" + mobile_number
    outstanding_amt = (get_dashboard_info("Customer",
                                          customer))[0]["total_unpaid"]
    message = "Dear Customer, Invoice {} of Rs.{} was generated on {}. Outstanding amt: Rs.{} Thanks. Have a great day! - Team Nirmala Home mart".format(
        invoice_no, amount, inv_date, outstanding_amt)
    result = sms_gateway(user, password, sender_id, mobile_number, message,
                         invoice_no)
    if result.status_code == 200:
        res_json = json.loads(result.text)
        if res_json["ErrorCode"] == "000":
            return True
    return False
コード例 #8
0
ファイル: leaderboard.py プロジェクト: PawanMeh/erpnext
def get_all_suppliers(doctype, filters, items, field, start=0, limit=20):
	"""return all suppliers"""

	x = frappe.get_list(doctype, filters=filters, limit_start=start, limit_page_length=limit)

	for val in x:

		info = get_dashboard_info(doctype, val.name)
		value = 0
		if(field=="annual_billing"):
			value = info["billing_this_year"]
		elif(field=="total_unpaid"):
			value = abs(info["total_unpaid"])

		item_obj = {"name": val.name,
			"annual_billing":  get_formatted_value(info["billing_this_year"]),
			"total_unpaid": get_formatted_value(abs(info["total_unpaid"])),
			"href":"#Form/Supplier/" + val.name,
			"value": value}
		items.append(item_obj)

	items.sort(key=lambda k: k['value'], reverse=True)
	return items
コード例 #9
0
ファイル: custom.py プロジェクト: ksbbalean/rpricemill
def get_customer_data(customer, company):
    if customer:
        doc = frappe.get_doc("Customer", customer)
        data_points = get_dashboard_info(doc.doctype, doc.name,
                                         doc.loyalty_program)
        res = {
            'total_unpaid': 0,
            'billing_this_year': 0,
            'info': '',
            'loyalty_points': 0
        }
        for data_point in data_points:
            if data_point['total_unpaid']:
                res['total_unpaid'] += data_point['total_unpaid']
            if data_point['billing_this_year']:
                res['billing_this_year'] += data_point['billing_this_year']
            if 'loyalty_points' not in data_point:
                data_point['loyalty_points'] = 0
            if 'loyalty_points' in data_point:
                if company == data_point["company"]:
                    res['loyalty_points'] = data_point['loyalty_points']
            res['info'] += f"Company: {data_point['company']}, \n Outstanding: {data_point['total_unpaid']}, \n Turn Over: {data_point['billing_this_year']}, \n Loyalty Points: {data_point['loyalty_points']} \n\n"
        return res
コード例 #10
0
ファイル: supplier.py プロジェクト: jitendraharpalani/erpnext
 def load_dashboard_info(self):
     info = get_dashboard_info(self.doctype, self.name)
     self.set_onload('dashboard_info', info)
コード例 #11
0
ファイル: customer.py プロジェクト: Aptitudetech/ERPNext
	def load_dashboard_info(self):
		info = get_dashboard_info(self.doctype, self.name)
		self.set_onload('dashboard_info', info)
コード例 #12
0
ファイル: patient.py プロジェクト: MorezMartin/erpnext
 def load_dashboard_info(self):
     if self.customer:
         info = get_dashboard_info('Customer', self.customer, None)
         self.set_onload('dashboard_info', info)
コード例 #13
0
ファイル: tenant.py プロジェクト: asoral/facility_management
 def onload(self):
     info = get_dashboard_info('Customer', self.customer)
     self.set_onload('dashboard_info', info)
コード例 #14
0
	def test_loyalty_points_for_dashboard(self):
		doc = frappe.get_doc('Customer', 'Test Loyalty Customer')
		company_wise_info = get_dashboard_info("Customer", doc.name, doc.loyalty_program)

		for d in company_wise_info:
			self.assertTrue(d.loyalty_points)
コード例 #15
0
ファイル: booking_party.py プロジェクト: libermatic/gg_custom
 def onload(self):
     load_address_and_contact(self)
     if self.customer:
         self.set_onload("dashboard_info",
                         get_dashboard_info("Customer", self.customer))
コード例 #16
0
ファイル: customer.py プロジェクト: Aptronics/erpnext
	def load_dashboard_info(self):
		info = get_dashboard_info(self.doctype, self.name, self.loyalty_program)
		self.set_onload('dashboard_info', info)
コード例 #17
0
 def load_dashboard_info(self):
     info = get_dashboard_info(self.doctype, self.name,
                               self.loyalty_program)
     self.set_onload('dashboard_info', info)
コード例 #18
0
ファイル: patient.py プロジェクト: erpnext-tm/erpnext
 def load_dashboard_info(self):
     if self.customer:
         info = get_dashboard_info("Customer", self.customer, None)
         self.set_onload("dashboard_info", info)