コード例 #1
0
    def get_payment_entries(self):
        order_doctype = "Sales Order" if self.party_type == "Customer" else "Purchase Order"
        payment_entries = get_advance_payment_entries(
            self.party_type,
            self.party,
            self.receivable_payable_account,
            order_doctype,
            against_all_orders=True)

        return payment_entries
コード例 #2
0
	def get_nonreconciled_payment_entries(self):
		self.check_mandatory_to_fetch()

		order_doctype = "Sales Order" if self.party_type == "Customer" else "Purchase Order"

		payment_entries = get_advance_payment_entries(self.party_type, self.party, self.receivable_payable_account,
			order_doctype, against_all_orders=True, against_account=self.bank_cash_account, limit=self.limit)
		journal_entries = get_advance_journal_entries(self.party_type, self.party, self.receivable_payable_account,
			order_doctype, against_all_orders=True, against_account=self.bank_cash_account, limit=self.limit)
				
		self.add_payment_entries(payment_entries + journal_entries)
コード例 #3
0
    def match_invoice_to_payment(self):
        added_payments = []
        for entry in self.new_transaction_items:
            if (not entry.party or entry.party_type == "Account"): continue
            entry.account = self.receivable_account if entry.party_type == "Customer" else self.payable_account
            amount = abs(entry.amount)
            payment, matching_invoices = None, []
            for inv_entry in self.payment_invoice_items:
                if (inv_entry.payment_description != frappe.safe_decode(
                        entry.description) or
                        inv_entry.transaction_date != entry.transaction_date):
                    continue
                if (inv_entry.party != entry.party): continue
                matching_invoices += [
                    inv_entry.invoice_type + "|" + inv_entry.invoice
                ]
                payment = get_payments_matching_invoice(
                    inv_entry.invoice, entry.amount, entry.transaction_date)
                doc = frappe.get_doc(inv_entry.invoice_type, inv_entry.invoice)
                inv_entry.invoice_date = doc.posting_date
                inv_entry.outstanding_amount = doc.outstanding_amount
                inv_entry.allocated_amount = min(float(doc.outstanding_amount),
                                                 amount)
                amount -= inv_entry.allocated_amount
                if (amount < 0): break

            amount = abs(entry.amount)
            if (payment is None):
                order_doctype = "Sales Order" if entry.party_type == "Customer" else "Purchase Order"
                from erpnext.controllers.accounts_controller import get_advance_payment_entries
                payment_entries = get_advance_payment_entries(
                    entry.party_type,
                    entry.party,
                    entry.account,
                    order_doctype,
                    against_all_orders=True)
                payment_entries += self.get_matching_payments(
                    entry.party, amount, entry.transaction_date)
                payment = next(
                    (payment
                     for payment in payment_entries if payment.amount == amount
                     and payment not in added_payments), None)
                if (payment is None):
                    print("Failed to find payments for {0}:{1}".format(
                        entry.party, amount))
                    continue
            added_payments += [payment]
            entry.reference_type = payment.reference_type
            entry.reference_name = payment.reference_name
            entry.mode_of_payment = "Wire Transfer"
            entry.outstanding_amount = min(amount, 0)
            if (entry.payment_reference is None):
                entry.payment_reference = frappe.safe_decode(entry.description)
            entry.invoices = ",".join(matching_invoices)
コード例 #4
0
    def get_payment_entries(self):
        order_doctype = "Sales Order" if self.party_type == "Customer" else "Purchase Order"
        condition = self.get_conditions(get_payments=True)
        payment_entries = get_advance_payment_entries(
            self.party_type,
            self.party,
            self.receivable_payable_account,
            order_doctype,
            against_all_orders=True,
            limit=self.payment_limit,
            condition=condition)

        return payment_entries
コード例 #5
0
	def match_invoice_to_payment(self):
		added_payments = []
		for entry in self.new_transaction_items:
			if (not entry.party or entry.party_type == "Account"): continue
			entry.account = self.receivable_account if entry.party_type == "Customer" else self.payable_account
			amount = abs(entry.amount)
			payment, matching_invoices = None, []
			for inv_entry in self.payment_invoice_items:
				if (inv_entry.payment_description != frappe.safe_decode(entry.description) or inv_entry.transaction_date != entry.transaction_date): continue
				if (inv_entry.party != entry.party): continue
				matching_invoices += [inv_entry.invoice_type + "|" + inv_entry.invoice]
				payment = get_payments_matching_invoice(inv_entry.invoice, entry.amount, entry.transaction_date)
				doc = frappe.get_doc(inv_entry.invoice_type, inv_entry.invoice)
				inv_entry.invoice_date = doc.posting_date
				inv_entry.outstanding_amount = doc.outstanding_amount
				inv_entry.allocated_amount = min(float(doc.outstanding_amount), amount)
				amount -= inv_entry.allocated_amount
				if (amount < 0): break

			amount = abs(entry.amount)
			if (payment is None):
				order_doctype = "Sales Order" if entry.party_type=="Customer" else "Purchase Order"
				from erpnext.controllers.accounts_controller import get_advance_payment_entries
				payment_entries = get_advance_payment_entries(entry.party_type, entry.party, entry.account, order_doctype, against_all_orders=True)
				payment_entries += self.get_matching_payments(entry.party, amount, entry.transaction_date)
				payment = next((payment for payment in payment_entries if payment.amount == amount and payment not in added_payments), None)
				if (payment is None):
					print("Failed to find payments for {0}:{1}".format(entry.party, amount))
					continue
			added_payments += [payment]
			entry.reference_type = payment.reference_type
			entry.reference_name = payment.reference_name
			entry.mode_of_payment = "Wire Transfer"
			entry.outstanding_amount = min(amount, 0)
			if (entry.payment_reference is None):
				entry.payment_reference = frappe.safe_decode(entry.description)
			entry.invoices = ",".join(matching_invoices)
コード例 #6
0
	def get_payment_entries(self):
		order_doctype = "Sales Order" if self.party_type=="Customer" else "Purchase Order"
		payment_entries = get_advance_payment_entries(self.party_type, self.party, 
			self.receivable_payable_account, order_doctype, against_all_orders=True)
			
		return payment_entries