def set_address_details(out, party, party_type, doctype=None, company=None): billing_address_field = "customer_address" if party_type == "Lead" \ else party_type.lower() + "_address" out[billing_address_field] = get_default_address(party_type, party.name) out.update( get_fetch_values(doctype, billing_address_field, out[billing_address_field])) # address display out.address_display = get_address_display(out[billing_address_field]) # shipping address if party_type in ["Customer", "Lead"]: out.shipping_address_name = get_default_address( party_type, party.name, 'is_shipping_address') out.shipping_address = get_address_display( out["shipping_address_name"]) out.update( get_fetch_values(doctype, 'shipping_address_name', out.shipping_address_name)) if doctype and doctype in ['Sales Invoice']: out.update(get_company_address(company)) if out.company_address: out.update( get_fetch_values(doctype, 'company_address', out.company_address))
def set_address_details(party_details, party, party_type, doctype=None, company=None, party_address=None, company_address=None, shipping_address=None): billing_address_field = "customer_address" if party_type == "Lead" \ else party_type.lower() + "_address" party_details[billing_address_field] = party_address or get_default_address(party_type, party.name) if doctype: party_details.update(get_fetch_values(doctype, billing_address_field, party_details[billing_address_field])) # address display party_details.address_display = get_address_display(party_details[billing_address_field]) # shipping address if party_type in ["Customer", "Lead"]: party_details.shipping_address_name = shipping_address or get_party_shipping_address(party_type, party.name) party_details.shipping_address = get_address_display(party_details["shipping_address_name"]) if doctype: party_details.update(get_fetch_values(doctype, 'shipping_address_name', party_details.shipping_address_name)) if company_address: party_details.update({'company_address': company_address}) else: party_details.update(get_company_address(company)) if doctype and doctype in ['Delivery Note', 'Sales Invoice', 'Sales Order']: if party_details.company_address: party_details.update(get_fetch_values(doctype, 'company_address', party_details.company_address)) get_regional_address_details(party_details, doctype, company) elif doctype and doctype in ["Purchase Invoice", "Purchase Order", "Purchase Receipt"]: if party_details.company_address: party_details["shipping_address"] = shipping_address or party_details["company_address"] party_details.shipping_address_display = get_address_display(party_details["shipping_address"]) party_details.update(get_fetch_values(doctype, 'shipping_address', party_details.shipping_address)) get_regional_address_details(party_details, doctype, company) return party_details.get(billing_address_field), party_details.shipping_address_name
def set_address_details(out, party, party_type, doctype=None, company=None, party_address=None, shipping_address=None): billing_address_field = "customer_address" if party_type == "Lead" \ else party_type.lower() + "_address" out[billing_address_field] = party_address or get_default_address(party_type, party.name) if doctype: out.update(get_fetch_values(doctype, billing_address_field, out[billing_address_field])) # address display out.address_display = get_address_display(out[billing_address_field]) # shipping address if party_type in ["Customer", "Lead"]: out.shipping_address_name = shipping_address or get_party_shipping_address(party_type, party.name) out.shipping_address = get_address_display(out["shipping_address_name"]) if doctype: out.update(get_fetch_values(doctype, 'shipping_address_name', out.shipping_address_name)) if doctype and doctype in ['Delivery Note', 'Sales Invoice']: out.update(get_company_address(company)) if out.company_address: out.update(get_fetch_values(doctype, 'company_address', out.company_address)) get_regional_address_details(out, doctype, company) elif doctype and doctype == "Purchase Invoice": out.update(get_company_address(company)) if out.company_address: out["shipping_address"] = shipping_address or out["company_address"] out.shipping_address_display = get_address_display(out["shipping_address"]) out.update(get_fetch_values(doctype, 'shipping_address', out.shipping_address)) get_regional_address_details(out, doctype, company)
def get_address_country(out, party, party_type, doctype=None, company=None): billing_address_field = "customer_address" if party_type == "Lead" \ else party_type.lower() + "_address" out[billing_address_field] = get_default_address(party_type, party.name) out.update(get_fetch_values(doctype, billing_address_field, out[billing_address_field])) # # address display # out.address_display = get_address_display(out[billing_address_field]) # address country address_dict = frappe.db.get_value("Address", out[billing_address_field], "*", as_dict=True) or {} billing_country_field = "customer_country" if party_type == "Lead" \ else party_type.lower() + "_country" out[billing_country_field] = address_dict.country out.update(get_fetch_values(doctype, billing_country_field, out[billing_country_field])) # # shipping address # if party_type in ["Customer", "Lead"]: # out.shipping_address_name = get_default_address(party_type, party.name, 'is_shipping_address') # out.shipping_address = get_address_display(out["shipping_address_name"]) # 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))
def _set_item_pl_rate(effective_date, item_code, price_list, price_list_rate, uom=None, conversion_factor=None): from frappe.model.utils import get_fetch_values from erpnext.stock.get_item_details import get_item_price if not price_list_rate: frappe.msgprint(_("Rate for Item {0} is 0 in Price List {1}. Please confirm rate").format(item_code, price_list)) effective_date = getdate(effective_date) item_price_args = { "item_code": item_code, "price_list": price_list, "uom": uom, "min_qty": 0, "transaction_date": effective_date, } current_effective_item_price = get_item_price(item_price_args, item_code) current_effective_item_price = current_effective_item_price[0] if current_effective_item_price else None existing_item_price = past_item_price = None if current_effective_item_price and getdate(current_effective_item_price[3]) == effective_date: existing_item_price = current_effective_item_price else: past_item_price = current_effective_item_price item_price_args['period'] = 'future' future_item_price = get_item_price(item_price_args, item_code) future_item_price = future_item_price[0] if future_item_price else None # Update or add item price if existing_item_price: doc = frappe.get_doc("Item Price", existing_item_price[0]) doc.price_list_rate = convert_item_uom_for(price_list_rate, item_code, uom, doc.uom, conversion_factor) else: doc = frappe.new_doc("Item Price") doc.item_code = item_code doc.price_list = price_list doc.uom = uom doc.price_list_rate = flt(price_list_rate) doc.update(get_fetch_values("Item Price", 'item_code', item_code)) doc.update(get_fetch_values("Item Price", 'price_list', price_list)) doc.valid_from = effective_date if future_item_price: doc.valid_upto = frappe.utils.add_days(future_item_price[3], -1) doc.save() # Update previous item price before_effective_date = frappe.utils.add_days(effective_date, -1) if past_item_price and past_item_price[4] != before_effective_date: frappe.set_value("Item Price", past_item_price[0], 'valid_upto', before_effective_date) frappe.msgprint(_("Price updated for Item {0} in Price List {1}").format(item_code, price_list), alert=1)
def set_missing_values(source, target): if source.po_no: if target.po_no: target_po_no = target.po_no.split(", ") target_po_no.append(source.po_no) target.po_no = ", ".join(list(set(target_po_no))) if len( target_po_no) > 1 else target_po_no[0] else: target.po_no = source.po_no # Since the credit limit check is bypassed at sales order level, # we need to check it at delivery note if cint( frappe.db.get_value( "Customer", source.customer, "bypass_credit_limit_check_at_sales_order")): check_credit_limit(source.customer, source.company) target.ignore_pricing_rule = 1 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("Delivery Note", 'company_address', target.company_address))
def _set_item_pl_rate(effective_date, item_code, price_list, price_list_rate): from frappe.model.utils import get_fetch_values item_prices = frappe.db.sql(""" select name, valid_from, valid_upto from `tabItem Price` where selling = 1 and item_code = %s and price_list = %s order by valid_from """, [item_code, price_list], as_dict=1) existing_item_price = filter(lambda d: d.valid_from == effective_date, item_prices) existing_item_price = existing_item_price[ 0] if existing_item_price else None past_item_price = filter( lambda d: not d.valid_from or d.valid_from < effective_date, item_prices) past_item_price = past_item_price[-1] if past_item_price else None future_item_price = filter( lambda d: d.valid_from and d.valid_from > effective_date, item_prices) future_item_price = future_item_price[0] if future_item_price else None # Update or add item price if existing_item_price: doc = frappe.get_doc("Item Price", existing_item_price.name) else: doc = frappe.new_doc("Item Price") doc.item_code = item_code doc.price_list = price_list doc.update(get_fetch_values("Item Price", 'item_code', item_code)) doc.update(get_fetch_values("Item Price", 'price_list', price_list)) doc.price_list_rate = flt(price_list_rate) doc.valid_from = effective_date if future_item_price: doc.valid_upto = frappe.utils.add_days(future_item_price.valid_from, -1) doc.save() # Update previous item price before_effective_date = frappe.utils.add_days(effective_date, -1) if past_item_price and past_item_price.valid_upto != before_effective_date: frappe.set_value("Item Price", past_item_price.name, 'valid_upto', before_effective_date)
def update_party_details(party_details, doctype): for address_field in [ 'shipping_address', 'company_address', 'supplier_address', 'shipping_address_name', 'customer_address' ]: if party_details.get(address_field): party_details.update( get_fetch_values(doctype, address_field, party_details.get(address_field)))
def set_missing_values(source, target): target.ignore_pricing_rule = 1 target.run_method("set_missing_values") target.run_method("set_po_nos") 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("Delivery Note", 'company_address', target.company_address))
def set_missing_values(source, target): target.ignore_pricing_rule = 1 target.run_method("set_missing_values") target.run_method("set_po_nos") 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("Delivery Note", 'company_address', target.company_address))
def set_address_details(out, party, party_type, doctype=None, company=None): billing_address_field = "customer_address" if party_type == "Lead" \ else party_type.lower() + "_address" out[billing_address_field] = get_default_address(party_type, party.name) out.update(get_fetch_values(doctype, billing_address_field, out[billing_address_field])) # address display out.address_display = get_address_display(out[billing_address_field]) # shipping address if party_type in ["Customer", "Lead"]: out.shipping_address_name = get_default_address(party_type, party.name, 'is_shipping_address') out.shipping_address = get_address_display(out["shipping_address_name"]) out.update(get_fetch_values(doctype, 'shipping_address_name', out.shipping_address_name)) if doctype and doctype in ['Sales Invoice']: out.update(get_company_address(company)) if out.company_address: out.update(get_fetch_values(doctype, 'company_address', out.company_address))
def set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.flags.ignore_permissions = True 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 set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.flags.ignore_permissions = True target.run_method("set_missing_values") target.run_method("set_po_nos") 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 set_missing_values(source, target): target.run_method("set_missing_values") target.run_method("set_po_nos") target.run_method("calculate_taxes_and_totals") if source.company_address: target.update({"company_address": source.company_address}) else: # set company address target.update(get_company_address(target.company)) if target.company_address: target.update(get_fetch_values("Delivery Note", "company_address", target.company_address))
def set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.run_method("set_missing_values") if len(target.get("items")) == 0: frappe.throw(_("All these items have already been invoiced")) 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 set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.run_method("set_missing_values") if len(target.get("items")) == 0: frappe.throw(_("All these items have already been invoiced")) 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 set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.flags.ignore_permissions = True target.run_method("set_missing_values") target.run_method("calculate_taxes_and_totals") # Since the credit limit check is bypassed at sales order level, we need to check it at sales invoice if cint(frappe.db.get_value("Customer", source.customer, "bypass_credit_limit_check_at_sales_order")): check_credit_limit(source.customer, source.company) # 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 set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.flags.ignore_permissions = True target.run_method("set_missing_values") target.run_method("set_po_nos") 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)) # set the redeem loyalty points if provided via shopping cart if source.loyalty_points and source.order_type == "Shopping Cart": target.redeem_loyalty_points = 1
def set_missing_values(source, target): if (not source.allow_delivery and source.advance_paid < source.rounded_total): frappe.throw( _('Not allowed to create the Delivery Note before Payment')) target.ignore_pricing_rule = 1 target.run_method("set_missing_values") target.run_method("set_po_nos") 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("Delivery Note", 'company_address', target.company_address))
def set_missing_values(source, target): target.is_pos = 0 target.ignore_pricing_rule = 1 target.flags.ignore_permissions = True target.run_method("set_missing_values") target.run_method("set_po_nos") 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)) # set the redeem loyalty points if provided via shopping cart if source.loyalty_points and source.order_type == "Shopping Cart": target.redeem_loyalty_points = 1
def set_missing_values(source, target): if source.po_no: if target.po_no: target_po_no = target.po_no.split(", ") target_po_no.append(source.po_no) target.po_no = ", ".join(list(set(target_po_no))) if len(target_po_no) > 1 else target_po_no[0] else: target.po_no = source.po_no target.ignore_pricing_rule = 1 target.run_method("set_missing_values") target.run_method("calculate_taxes_and_totals") # set company address target.update(get_company_address(target.company)) if target.company_address: target.update(get_fetch_values("Delivery Note", 'company_address', target.company_address))
def set_missing_values(source, target): so = [d.against_sales_order for d in target.items] if so: po_no_list = frappe.get_all('Sales Order', 'po_no', filters={'name': ('in', so)}) target.po_no = ', '.join(d.po_no for d in po_no_list if d.po_no) target.ignore_pricing_rule = 1 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("Delivery Note", 'company_address', target.company_address))
def set_missing_values(source, target): target.ignore_pricing_rule = 1 target.flags.ignore_permissions = True target.run_method("set_missing_values") target.run_method("set_po_nos") target.run_method("calculate_taxes_and_totals") if source.company_address: target.update({'company_address': source.company_address}) else: # 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)) # set print heading target.select_print_heading = frappe.db.get_single_value( 'ERPNext France Settings', 'deposit_print_heading')
def set_missing_values(source, target): target.run_method("set_missing_values") target.run_method("set_po_nos") if len(target.get("items")) == 0: frappe.throw( _("All these items have already been Invoiced/Returned")) target.run_method("calculate_taxes_and_totals") # set company address if source.company_address: target.update({"company_address": source.company_address}) else: # 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 set_missing_values(source, target): if source.po_no: if target.po_no: target_po_no = target.po_no.split(", ") target_po_no.append(source.po_no) target.po_no = ", ".join(list(set(target_po_no))) if len(target_po_no) > 1 else target_po_no[0] else: target.po_no = source.po_no # Since the credit limit check is bypassed at sales order level, # we need to check it at delivery note if cint(frappe.db.get_value("Customer", source.customer, "bypass_credit_limit_check_at_sales_order")): check_credit_limit(source.customer, source.company) target.ignore_pricing_rule = 1 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("Delivery Note", 'company_address', target.company_address))
def make_against_project(project_name, dt): from frappe.model.utils import get_fetch_values project = frappe.get_doc("Project", project_name) doc = frappe.new_doc(dt) if doc.meta.has_field('company'): doc.company = project.company if doc.meta.has_field('project'): doc.project = project_name if doc.meta.has_field('set_project'): doc.set_project = project_name # Set customer if project.customer: if doc.meta.has_field('customer'): doc.customer = project.customer doc.update(get_fetch_values(doc.doctype, 'customer', project.customer)) elif dt == 'Quotation': doc.quotation_to = 'Customer' doc.party_name = project.customer doc.update(get_fetch_values(doc.doctype, 'party_name', project.customer)) if project.item_code: if doc.meta.has_field('item_code'): doc.item_code = project.item_code doc.update(get_fetch_values(doc.doctype, 'item_code', project.item_code)) if doc.meta.has_field('serial_no'): doc.serial_no = project.serial_no doc.update(get_fetch_values(doc.doctype, 'serial_no', project.serial_no)) else: child = doc.append("purposes" if dt == "Maintenance Visit" else "items", { "item_code": project.item_code, "serial_no": project.serial_no }) child.update(get_fetch_values(child.doctype, 'item_code', project.item_code)) if child.meta.has_field('serial_no'): child.update(get_fetch_values(child.doctype, 'serial_no', project.serial_no)) doc.run_method("set_missing_values") doc.run_method("calculate_taxes_and_totals") return doc