def sync_erp_purchase_invoices_to_quickbooks(): """Sync ERPNext Purchase Invoice to QuickBooks""" Purchase_invoice_list = [] for erp_purchase_invoice in erp_purchase_invoice_data(): try: if erp_purchase_invoice: create_erp_purchase_invoice_to_quickbooks(erp_purchase_invoice, Purchase_invoice_list) else: raise _("Purchase invoice does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_purchase_invoices_to_quickbooks", message=frappe.get_traceback(), request_data=erp_purchase_invoice, exception=True) results = batch_create(Purchase_invoice_list) return results def erp_purchase_invoice_data(): """ERPNext Invoices Record""" erp_purchase_invoice = frappe.db.sql("""SELECT `name`,`supplier_name`, taxes_and_charges, DATE_FORMAT(due_date,'%d-%m-%Y') as due_date, DATE_FORMAT(posting_date,'%d-%m-%Y') as posting_date from `tabPurchase Invoice` where `quickbooks_purchase_invoice_id` is NULL and docstatus = 1""" ,as_dict=1) return erp_purchase_invoice def erp_purchase_invoice_item_data(purchase_invoice_name): """ERPNext Invoice Items Record of Particular Invoice""" erp_purchase_invoice_item = frappe.db.sql("""SELECT `idx`, `description`, `rate`, `item_code`, `qty` from `tabPurchase Invoice Item` where parent = '%s'""" %(purchase_invoice_name), as_dict=1) return erp_purchase_invoice_item def create_erp_purchase_invoice_to_quickbooks(erp_purchase_invoice, Purchase_invoice_list): purchase_invoice_obj = Bill() purchase_invoice_obj.DocNumber = erp_purchase_invoice.name
def sync_erp_employees_to_quickbooks(): Employee_list = [] for erp_employee in erp_employee_data(): try: if erp_employee: create_erp_employee_to_quickbooks(erp_employee, Employee_list) else: raise _("Employee does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_employees_to_quickbooks", message=frappe.get_traceback(), request_data=erp_employee, exception=True) results = batch_create(Employee_list) return results def erp_employee_data(): erp_employee = frappe.db.sql("""select employee_name, gender from `tabEmployee` where `quickbooks_emp_id` is NULL && employee_name is not null""" ,as_dict=1) return erp_employee def create_erp_employee_to_quickbooks(erp_employee, Employee_list): employee_obj = Employee() employee_obj.DisplayName = erp_employee.employee_name employee_obj.GivenName = erp_employee.employee_name employee_obj.FamilyName = erp_employee.employee_name employee_obj.Gender = erp_employee.gender employee_obj.save() Employee_list.append(employee_obj) return Employee_list
try: if erp_account: create_erp_account_to_quickbooks(erp_account, Account_list) else: raise _("Account does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_accounts_to_quickbooks", message=frappe.get_traceback(), request_data=erp_account, exception=True) results = batch_create(Account_list) return results def erp_account_data(): quickbooks_settings = frappe.get_doc("Quickbooks Settings", "Quickbooks Settings") erp_account = frappe.db.sql( """select name, root_type, account_type, quickbooks_account_id from `tabAccount` where is_group =0 and company='{0}' and quickbooks_account_id is NULL""" .format(quickbooks_settings.select_company), as_dict=1) return erp_account def create_erp_account_to_quickbooks(erp_account, Account_list): account_obj = Account()
def sync_erp_customers_to_quickbooks(): """Sync ERPNext Customer to QuickBooks""" Customer_list = [] for erp_cust in erp_customer_data(): try: if erp_cust: create_erp_customer_to_quickbooks(erp_cust, Customer_list) else: raise _("Customer does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_customers_to_quickbooks", message=frappe.get_traceback(), request_data=erp_cust, exception=True) results = batch_create(Customer_list) return results def erp_customer_data(): erp_customer = frappe.db.sql("""select `customer_name` from `tabCustomer` WHERE quickbooks_cust_id IS NULL""" ,as_dict=1) return erp_customer def create_erp_customer_to_quickbooks(erp_cust, Customer_list): customer_obj = Customer() customer_obj.FullyQualifiedName = erp_cust.customer_name customer_obj.DisplayName = erp_cust.customer_name customer_obj.save() Customer_list.append(customer_obj) return Customer_list
def sync_erp_sales_invoices_to_quickbooks(): """Sync ERPNext Invoice to QuickBooks""" Sales_invoice_list = [] for erp_sales_invoice in erp_sales_invoice_data(): try: if erp_sales_invoice: create_erp_sales_invoice_to_quickbooks(erp_sales_invoice, Sales_invoice_list) else: raise _("Sales invoice does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_sales_invoices_to_quickbooks", message=frappe.get_traceback(), request_data=erp_sales_invoice, exception=True) results = batch_create(Sales_invoice_list) return results def erp_sales_invoice_data(): """ERPNext Invoices Record""" erp_sales_invoice = frappe.db.sql("""select `name` ,`customer_name` from `tabSales Invoice` where `quickbooks_invoce_id` is NULL and is_pos is FALSE and docstatus = 1""" ,as_dict=1) return erp_sales_invoice def erp_sales_invoice_item_data(invoice_name): """ERPNext Invoice Items Record of Particular Invoice""" erp_sales_invoice_item = frappe.db.sql("""SELECT `idx`, `description`, `rate`, `item_code`, `qty` from `tabSales Invoice Item` where parent = '%s'""" %(invoice_name), as_dict=1) return erp_sales_invoice_item def create_erp_sales_invoice_to_quickbooks(erp_sales_invoice, Sales_invoice_list): sales_invoice_obj = Invoice() sales_invoice_obj.DocNumber = erp_sales_invoice.name
def sync_erp_items_to_quickbooks(): Item_list = [] for erp_item in erp_item_data(): try: if erp_item: create_erp_item_to_quickbooks(erp_item, Item_list) else: raise _("Item does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_items_to_quickbooks", message=frappe.get_traceback(), request_data=erp_item, exception=True) results = batch_create(Item_list) return results def erp_item_data(): erp_item = frappe.db.sql("""select item_code, item_name, is_stock_item, Description from `tabItem` where `quickbooks_item_id` is NULL""" ,as_dict=1) return erp_item def create_erp_item_to_quickbooks(erp_item, Item_list): item_obj = Item() item_obj.Name = erp_item.item_code item_obj.FullyQualifiedName = erp_item.item_code item_obj.Description = erp_item.Description if erp_item.Description else erp_item.item_name item_type_and_Inventory_start_date(item_obj, erp_item) item_obj.AssetAccountRef = asset_account_ref(erp_item) item_obj.ExpenseAccountRef = expense_account_ref(erp_item) item_obj.IncomeAccountRef = income_account_ref(erp_item)
try: if erp_cust: create_erp_customer_to_quickbooks(erp_cust, Customer_list) else: raise _("Customer does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_customers_to_quickbooks", message=frappe.get_traceback(), request_data=erp_cust, exception=True) results = batch_create(Customer_list) return results def erp_customer_data(): erp_customer = frappe.db.sql( """select `customer_name` from `tabCustomer` WHERE quickbooks_cust_id IS NULL""", as_dict=1) return erp_customer def create_erp_customer_to_quickbooks(erp_cust, Customer_list): customer_obj = Customer() customer_obj.FullyQualifiedName = erp_cust.customer_name customer_obj.DisplayName = erp_cust.customer_name customer_obj.save()
def sync_erp_suppliers_to_quickbooks(): Supplier_list = [] for erp_supplier in erp_supplier_data(): try: if erp_supplier: create_erp_suppliers_to_quickbooks(erp_supplier, Supplier_list) else: raise _("Supplier does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_suppliers", message=frappe.get_traceback(), request_data=erp_supplier, exception=True) results = batch_create(Supplier_list) return results def erp_supplier_data(): erp_supplier = frappe.db.sql("""select supplier_name from `tabSupplier` WHERE quickbooks_supp_id IS NULL""" ,as_dict=1) return erp_supplier def create_erp_suppliers_to_quickbooks(erp_supplier, Supplier_list): supplier_obj = Vendor() supplier_obj.CompanyName = erp_supplier.supplier_name supplier_obj.DisplayName = erp_supplier.supplier_name supplier_obj.save() Supplier_list.append(supplier_obj) return Supplier_list
def sync_erp_suppliers_to_quickbooks(quickbooks_obj): Supplier_list = [] for erp_supplier in erp_supplier_data(): try: if erp_supplier: create_erp_suppliers_to_quickbooks(erp_supplier, Supplier_list) else: raise _("Supplier does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_suppliers", message=frappe.get_traceback(), request_data=erp_supplier, exception=True) results = batch_create(Supplier_list) return results def erp_supplier_data(): erp_supplier = frappe.db.sql("""select supplier_name from `tabSupplier` WHERE quickbooks_supp_id IS NULL""" ,as_dict=1) return erp_supplier def create_erp_suppliers_to_quickbooks(erp_supplier, Supplier_list): supplier_obj = Vendor() supplier_obj.CompanyName = erp_supplier.supplier_name supplier_obj.DisplayName = erp_supplier.supplier_name supplier_obj.save() Supplier_list.append(supplier_obj) return Supplier_list
try: if erp_employee: create_erp_employee_to_quickbooks(erp_employee, Employee_list) else: raise _("Employee does not exist in ERPNext") except Exception, e: if e.args[0] and e.args[0].startswith("402"): raise e else: make_quickbooks_log(title=e.message, status="Error", method="sync_erp_employees_to_quickbooks", message=frappe.get_traceback(), request_data=erp_employee, exception=True) results = batch_create(Employee_list) return results def erp_employee_data(): erp_employee = frappe.db.sql( """select employee_name, gender from `tabEmployee` where `quickbooks_emp_id` is NULL && employee_name is not null""", as_dict=1) return erp_employee def create_erp_employee_to_quickbooks(erp_employee, Employee_list): employee_obj = Employee() employee_obj.DisplayName = erp_employee.employee_name employee_obj.GivenName = erp_employee.employee_name employee_obj.FamilyName = erp_employee.employee_name