def get_party_details(party, party_type, args=None): out = {} billing_address, shipping_address = None, None if args: if args.get('billing_address'): billing_address = frappe.get_doc('Address', args.get('billing_address')) if args.get('shipping_address'): shipping_address = frappe.get_doc('Address', args.get('shipping_address')) else: billing_address_name = get_default_address(party_type, party) shipping_address_name = get_default_address(party_type, party, 'is_shipping_address') if billing_address_name: billing_address = frappe.get_doc('Address', billing_address_name) if shipping_address_name: shipping_address = frappe.get_doc('Address', shipping_address_name) if billing_address: out["billing_city"]= billing_address.city out["billing_county"]= billing_address.county out["billing_state"]= billing_address.state out["billing_country"]= billing_address.country if shipping_address: out["shipping_city"]= shipping_address.city out["shipping_county"]= shipping_address.county out["shipping_state"]= shipping_address.state out["shipping_country"]= shipping_address.country return out
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 get_party_details(party, party_type, args=None): out = {} billing_address, shipping_address = None, None if args: if args.get('billing_address'): billing_address = frappe.get_doc('Address', args.get('billing_address')) if args.get('shipping_address'): shipping_address = frappe.get_doc('Address', args.get('shipping_address')) else: billing_address_name = get_default_address(party_type, party) shipping_address_name = get_default_address(party_type, party, 'is_shipping_address') if billing_address_name: billing_address = frappe.get_doc('Address', billing_address_name) if shipping_address_name: shipping_address = frappe.get_doc('Address', shipping_address_name) if billing_address: out["billing_city"] = billing_address.city out["billing_county"] = billing_address.county out["billing_state"] = billing_address.state out["billing_zipcode"] = billing_address.pincode out["billing_country"] = billing_address.country if shipping_address: out["shipping_city"] = shipping_address.city out["shipping_county"] = shipping_address.county out["shipping_state"] = shipping_address.state out["shipping_zipcode"] = shipping_address.pincode out["shipping_country"] = shipping_address.country return out
def get_addresses(company=None, party_type=None, party=None): if not (company and party_type and party): return {} company_addr = frappe.get_doc("Address", get_default_address("Company", company)) party_addr = frappe.get_doc("Address", get_default_address(party_type, party)) return {"company": company_addr, "party": party_addr}
def set_address_details(out, party, party_type): 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) # 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"])
def get_addresses(company=None, party_type=None, party=None): if not (company and party_type and party): return {} company_address, party_address = {}, {} default_company_address = get_default_address("Company", company) if default_company_address: company_address = frappe.get_doc("Address", default_company_address) default_party_address = get_default_address(party_type, party) if default_party_address: party_address = frappe.get_doc("Address", default_party_address) return {"company": company_address, "party": party_address}
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 get_customer_address(customer=None): '''Returns formatted address of Customer''' if not customer: return None address = frappe.get_value( 'Address', get_default_address('Customer', customer), [ 'address_line1', 'address_line2', 'city', 'county', 'state', 'pincode' ], as_dict=True ) or {} state = ' - '.join(filter(lambda x: not not x, [ address.get('state'), address.get('pincode'), ])) return ', '.join(filter(lambda x: not not x, [ address.get('address_line1'), address.get('address_line2'), address.get('city'), address.get('county'), state, ]))
def get_rows(self): self.data = [] self.get_periodic_data() for entity, period_data in iteritems(self.entity_periodic_data): row = { "entity": entity, "entity_name": self.entity_names.get(entity) } if self.filters.tree_type == 'Customer': address = get_default_address("Customer", entity) row.update({ "city": frappe.db.get_value("Address", address, "city"), "sales_partner": frappe.db.get_value("Customer", entity, "default_sales_partner") }) total = 0 for end_date in self.periodic_daterange: period = self.get_period(end_date) amount = flt(period_data.get(period, 0.0)) row[scrub(period)] = amount total += amount row["total"] = total if self.filters.tree_type == "Item": row["stock_uom"] = period_data.get("stock_uom") self.data.append(row)
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 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 get_primary_address(suppname): add = get_address_display(get_default_address('Supplier', suppname)) if add is not None: return add.replace("<br>", ' ') else: return add
def set_address_details(out, party, party_type): 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) # address display out.address_display = get_address_display(out[billing_address_field])
def update_address(self): # exit if one of the two fields are not present if not self.party_type or not self.party: return self.party_address = get_default_address(self.party_type, self.party) if self.party_address: self.display_address = get_address_display(self.party_address) else: self.display_address = None
def make_transfer_dn(company, customer, source_name, project=None): try: current_dn = frappe.get_doc("Delivery Note", source_name) new_dn = frappe.copy_doc(current_dn, ignore_no_copy=True) new_dn.company = company new_dn.company_trn = frappe.db.get_value("Company", company, "tax_id") new_dn.customer = customer new_dn.project = project from erpnext.selling.doctype.customer.customer import get_customer_details from frappe.contacts.doctype.address.address import get_default_address, get_address_display customer_details = get_customer_details(customer) if customer_details: new_dn.tax_id = customer_details.tax_id new_dn.customer_name_in_arabic = customer_details.customer_name_in_arabic new_dn.shipping_address_name = get_default_address( 'Customer', customer) new_dn.shipping_address = get_address_display( new_dn.shipping_address_name) new_dn.customer_address = get_default_address('Customer', customer) new_dn.address_display = get_address_display(new_dn.customer_address) if not new_dn.company == current_dn.company: from erpnext.stock.utils import get_default_warehouse default_warehouse = get_default_warehouse( company=new_dn.company).get("source_warehouse") for d in new_dn.get("items"): d.warehouse = default_warehouse new_dn.insert(ignore_permissions=True) return new_dn.name except: return False
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 _make_address_text(customer=None): """Returns formatted address of Customer""" if not customer: return None address = frappe.get_value( "Address", get_default_address("Customer", customer), ["address_line1", "city"], as_dict=True, ) if not address: return None return join(", ")([address.get("address_line1"), address.get("city")])
def _make_address_text(customer=None): """Returns formatted address of Customer""" if not customer: return None address = frappe.get_value( 'Address', get_default_address('Customer', customer), ['address_line1', 'city'], as_dict=True ) if not address: return None return join(', ')([address.get('address_line1'), address.get('city')])
def get_company_address(args): from frappe.contacts.doctype.address.address import get_default_address address_name = None if args.get('company_address'): address_name = args.get('company_address') else: company = args.get('company') or get_default_company() if company: address_name = get_default_address('Company', company) return frappe.get_cached_doc('Address', address_name) if address_name else None
def get_vat_code(customer): address = get_default_address('Customer', customer.name) if address: country = frappe.get_value('Address', address, 'country') if country not in {'United Kingdom', 'United States' } and country in countries_in_europe: customer.default_currency = 'EUR' if not customer.default_currency else customer.default_currency return 'T4', customer.default_currency elif country == 'United Kingdom': return 'T1', 'GBP' elif country == 'United States': return 'T0', 'USD' if not customer.territory and not customer.vat_code_customer and not customer.default_currency: print('more information is required about ' + cust.name) return '', 'GBP' if customer.default_currency == 'USD': return 'T0', 'USD' elif customer.default_currency == 'EUR': return 'T4', 'EUR' elif customer.default_currency == 'GBP': return 'T1', 'GBP'
def _create_invoice(customers, typ): customer_name = "" customer_address = "" item = "" rate = "" invoice_txt = "" invoices = [] total_records = len(customers) created_records = 0 if len(customers) > 0: for customer in customers: sales_invoice = frappe.new_doc("Sales Invoice") if typ == "Mitglied": customer_name = customer['name'] customer_address = get_default_address(doctype="Customer", name=customer_name) if customer['status_mitgliedschaft'] == "Einzel": item = "Einzel-Mitglied Beitrag" if customer['status_mitgliedschaft'] == "Familie": item = "Familien-Mitglied Beitrag" if customer['status_mitgliedschaft'] == "Kollektiv": item = "Kollektiv-Mitglied Beitrag" sales_invoice.update({ "customer": customer_name, "customer_address": customer_address, "shipping_address_name": customer_address, "delivery_date": utils.today(), "due_date": utils.add_days(utils.today(), 60), "items": [{ "item_code": item, "qty": "1" }] }) else: customer_name = customer['customer'] customer_address = get_default_address(doctype="Customer", name=customer_name) item = "Soli-Beitrag" rate = customer['betrag'] sales_invoice.update({ "customer": customer_name, "customer_address": customer_address, "shipping_address_name": customer_address, "delivery_date": utils.today(), "due_date": utils.add_days(utils.today(), 60), "items": [{ "item_code": item, "qty": "1", "rate": rate }] }) sales_invoice.flags.ignore_mandatory = True sales_invoice.save(ignore_permissions=True) referencenumber = '2020' + sales_invoice.name.split("-")[2] sales_invoice.update({ "esr_reference": esr.get_reference_number(referencenumber), "esr_code": esr.generateCodeline(sales_invoice.grand_total, referencenumber, "010154388") }) sales_invoice.save(ignore_permissions=True) # only save as draft! #sales_invoice.submit() frappe.db.commit() invoices.append([sales_invoice.name, item, sales_invoice.grand_total]) created_records += 1 frappe.publish_realtime("invoice_progress", {"progress": str(int(created_records * 100/total_records))}, user=frappe.session.user) frappe.publish_realtime("invoices", {"invoices": invoices}, user=frappe.session.user) else: frappe.publish_realtime("invoices", {}, user=frappe.session.user)
def get_sales_data(self): filters = {} filters['company'] = self.company filters['to_date'] = self.end_date filters['from_date'] = self.start_date filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) amount_data = {} vat_states = [ 'Abu Dhabi', 'Dubai', 'Sharjah', 'Ajman', 'Umm Al Quwain', 'Ras Al Khaimah', 'Fujairah' ] vat_types = [ 'reverse_charge_data', 'zero_rated_data', 'other_gcc_data', 'exempt_data', 'import_customs_data', 'amendments_data' ] totals_data = {'amount': 0, 'vat_amount': 0, 'adjustment': 0} for type in vat_types: amount_data[type] = {'amount': 0, 'vat_amount': 0, 'adjustment': 0} for state in vat_states: amount_data[state] = { 'amount': 0, 'vat_amount': 0, 'adjustment': 0 } for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: billing_address_name = get_default_address( 'Customer', details[0].customer) if billing_address_name: billing_address = frappe.get_doc( 'Address', billing_address_name) if billing_address: for state in vat_states: if state == billing_address.state: amount_data[state][ 'amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[state][ 'vat_amount'] = amount_data[state][ 'vat_amount'] + entry.credit data = [] letter = 97 for state in vat_states: data.append( ("1" + chr(letter), "Standard rated supplies in " + str(state), amount_data[state]['amount'], amount_data[state]['vat_amount'], amount_data[state]['adjustment'])) letter = letter + 1 section = 2 for type in vat_types: totals_data["vat_amount"] = amount_data[type][ "vat_amount"] + totals_data["vat_amount"] totals_data[ "amount"] = amount_data[type]["amount"] + totals_data["amount"] totals_data["adjustment"] = amount_data[type][ "adjustment"] + totals_data["adjustment"] section_txt = '' if type == "reverse_charge_data": section_txt = "Supplies subject to the reverse charge provisions" filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: amount_data[type]['amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[type]['vat_amount'] = amount_data[ state]['vat_amount'] + entry.credit elif type == "zero_rated_data": section_txt = "Zero rated supplies" filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: amount_data[type]['amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[type]['vat_amount'] = amount_data[ state]['vat_amount'] + entry.credit elif type == "other_gcc_data": section_txt = "Supplies of goods and services to registered customers in other GCC implementing states" filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: amount_data[type]['amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[type]['vat_amount'] = amount_data[ state]['vat_amount'] + entry.credit elif type == "exempt_data": section_txt = "Exempt supplies" filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: amount_data[type]['amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[type]['vat_amount'] = amount_data[ state]['vat_amount'] + entry.credit elif type == "import_customs_data": section_txt = "Import VAT accounted through UAE customs" filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: amount_data[type]['amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[type]['vat_amount'] = amount_data[ state]['vat_amount'] + entry.credit elif type == "amendments_data": section_txt = "Amendments or corrections to Output figures" filters['account'] = 'UAE VAT 5% - SLI' gl_entries = get_gl_entries(filters) for entry in gl_entries: if entry.voucher_type == "Sales Invoice": details = frappe.db.sql( """select name,posting_date,currency,customer,grand_total, base_total_taxes_and_charges,customer_address from `tabSales Invoice` where name = %s and company = %s""", (entry.voucher_no, self.company), as_dict=1) if len(details) > 0: amount_data[type]['amount'] = amount_data[state][ 'amount'] + details[0].grand_total amount_data[type]['vat_amount'] = amount_data[ state]['vat_amount'] + entry.credit data.append( (str(section), str(section_txt), amount_data[type]["amount"], amount_data[type]["vat_amount"], amount_data[type]["adjustment"])) section = section + 1 data.append((str(section), "Totals", totals_data["amount"], totals_data["vat_amount"], totals_data["adjustment"])) return data, totals_data
def send_eirsaliye(delivery_note_name): import urllib3 strResult = "" urllib3.disable_warnings() #Remove TLS warning doc = frappe.get_doc("Delivery Note", delivery_note_name) if not doc.eirsaliye_uuid: doc.eirsaliye_uuid = str(uuid.uuid1()) doc.db_update() frappe.db.commit() doc.reload() if doc.yerelbelgeoid: data = validate_eirsaliye(delivery_note_name) if data.get("belgeNo"): return data #Validate the DN fields. validate_delivery_note(doc) if doc.belgeno: #If belgeno field is not empty dctResponse = validate_eirsaliye(doc.name) if dctResponse.get( 'durum' ) != 2: #If durum is not xml error return it back so we should send the DN only if we hasn't sent it or if we had an XML error before. return eirsaliye_settings = frappe.get_all("E Irsaliye Ayarlar", filters={"company": doc.company})[0] settings_doc = frappe.get_doc("E Irsaliye Ayarlar", eirsaliye_settings) validate_settings_doc(settings_doc) set_warehouse_address_doc = frappe.get_doc( "Address", get_default_address("Warehouse", doc.set_warehouse)) set_warehouse_address_doc = set_missing_address_values( set_warehouse_address_doc) validate_address(set_warehouse_address_doc) customer_doc = frappe.get_doc("Customer", doc.customer) validate_customer(customer_doc) customer_address_doc = frappe.get_doc("Address", doc.shipping_address_name) customer_address_doc = set_missing_address_values(customer_address_doc) validate_address(customer_address_doc) doc = set_driver_name(doc) doc.posting_time = format_datetime(str(doc.posting_time), "HH:mm:ss") user = {} user["full_name"] = frappe.get_value("User", frappe.session.user, "full_name") for item in doc.items: eirsaliye_birimi_list = frappe.get_list( "TD EIrsaliye Birim Eslestirme", filters={ "parent": settings_doc.name, "td_birim": item.uom, }, fields=["td_eirsaliye_birimi"]) if len(eirsaliye_birimi_list) == 0: frappe.throw( _("Please set {0} uom in e-Receipt settings for company {1}."). format(item.uom, eirsaliye_settings)) td_eirsaliye_birimi = eirsaliye_birimi_list[0]["td_eirsaliye_birimi"] item.td_eirsaliye_birimi = td_eirsaliye_birimi data_context = { "delivery_note_doc": doc, "settings_doc": settings_doc, "set_warehouse_address_doc": set_warehouse_address_doc, "customer_doc": customer_doc, "customer_address_doc": customer_address_doc, "user": user, } outputText = render_template( data_context, file=settings_doc.xml_data ) # this is where to put args to the template renderer settings_doc.veri = to_base64(outputText) settings_doc.belgeHash = get_hash_md5(outputText) endpoint = settings_doc.test_eirsaliye_url if settings_doc.test_modu else settings_doc.eirsaliye_url settings_doc.password_uncoded = settings_doc.get_password('password') body_context = { "delivery_note_doc": doc, "settings_doc": settings_doc, } body = render_template(body_context, file=settings_doc.xml_body) body = body.encode('utf-8') session = requests.session() session.headers = {"Content-Type": "text/xml; charset=utf-8"} session.headers.update({"Content-Length": str(len(body))}) response = session.post(url=endpoint, data=body, verify=False) xml = response.content #frappe.msgprint(xml) #print("XML CONTENT IS") #print(xml) add_comment(doc.doctype, doc.name, str(xml), doc.modified_by) soup = BeautifulSoup(xml, 'xml') error = soup.find_all('Fault') belgeOid = soup.find_all('belgeOid') if error: faultcode = soup.find('faultcode').getText() faultstring = soup.find('faultstring').getText() #frappe.msgprint(str(faultcode) + " " + str(faultstring)) #strResult = str(faultcode) + " " + str(faultstring) dctResult = { 'result': False, 'description': _("Error Code:{0}. Error Description:{1}").format( faultcode, faultstring) } if belgeOid: msg = soup.find('belgeOid').getText() doc.yerelbelgeoid = msg doc.db_update() frappe.db.commit() doc.reload() #frappe.msgprint(str(msg)) #strResult = str(msg) dctResult = {'result': True, 'description': msg} return dctResult #strResult
def get_primary_billing_address(party, party_type): from frappe.contacts.doctype.address.address import get_default_address return get_default_address(party_type.lower(), party)