def check_payoff_accounting(): for entry in EntryAccount.objects.filter(close=False, journal_id=4): _no_change, debit_rest, credit_rest = entry.serial_control(entry.get_serial()) payoff_list = entry.payoff_set.all() if abs(debit_rest - credit_rest) > 0.0001: if len(payoff_list) > 0: third_amounts = [] designation_items = [] for paypoff_item in payoff_list: third_amounts.append((paypoff_item.supporting.third, float(paypoff_item.amount))) designation_items.append(six.text_type(paypoff_item.supporting.get_final_child())) designation = _("payoff for %s") % ",".join(designation_items) if len(designation) > 190: designation = _("payoff for %d multi-pay") % len(designation_items) entry.unlink() new_entry = payoff_list[0].generate_accounting(third_amounts, designation) for paypoff_item in payoff_list: paypoff_item.entry = new_entry paypoff_item.save(do_generate=False) new_entry.unlink() entry.delete() try: entrylines = [] for paypoff_item in payoff_list: supporting = paypoff_item.supporting.get_final_child() if (abs(supporting.get_total_rest_topay()) < 0.0001) and (supporting.entry_links() is not None) and (len(supporting.payoff_set.filter(supporting.payoff_query)) == 1): entrylines.extend(supporting.entry_links()) if len(entrylines) == len(payoff_list): entrylines.append(new_entry) AccountLink.create_link(entrylines) except LucteriosException: pass
def fillresponse(self): if self.items is None: raise Exception('no link') if len(self.items) == 1: if self.confirme(_('Do you want unlink this entry?')): self.items[0].unlink() else: AccountLink.create_link(self.items)
def generate_accountlink(self): supporting = self.supporting.get_final_child() if (self.entry is not None) and (abs(supporting.get_total_rest_topay()) < 0.0001) and (supporting.entry_links() is not None) and (len(supporting.entry_links()) > 0): try: entryline = [] for all_payoff in supporting.payoff_set.filter(supporting.payoff_query): entryline.extend(all_payoff.supporting.entry_links()) entryline.append(all_payoff.entry) entryline = list(set(entryline)) AccountLink.create_link(entryline) except LucteriosException: pass
def multi_save(cls, supportings, amount, mode, payer, reference, bank_account, date): supporting_list = Supporting.objects.filter(id__in=supportings, is_revenu=True) amount_sum = 0 for supporting in supporting_list: amount_sum += supporting.get_final_child().get_total_rest_topay() if abs(amount_sum) < 0.0001: raise LucteriosException(IMPORTANT, _('No-valid selection!')) amount_rest = amount paypoff_list = [] for supporting in supporting_list: new_paypoff = Payoff( supporting=supporting, date=date, payer=payer, mode=mode, reference=reference) if bank_account != 0: new_paypoff.bank_account = BankAccount.objects.get( id=bank_account) new_paypoff.amount = currency_round( supporting.get_final_child().get_total_rest_topay() * amount / amount_sum) if new_paypoff.amount > 0.0001: amount_rest -= new_paypoff.amount new_paypoff.save(do_generate=False) paypoff_list.append(new_paypoff) if abs(amount_rest) > 0.001: new_paypoff.amount += amount_rest new_paypoff.save(do_generate=False) third_amounts = {} designation_items = [] for paypoff_item in paypoff_list: if paypoff_item.supporting.third not in third_amounts.keys(): third_amounts[paypoff_item.supporting.third] = 0 third_amounts[paypoff_item.supporting.third] += paypoff_item.amount designation_items.append(six.text_type(paypoff_item.supporting.get_final_child())) designation = _("payoff for %s") % ",".join(designation_items) if len(designation) > 190: designation = _("payoff for %d multi-pay") % len(designation_items) new_entry = paypoff_list[0].generate_accounting(third_amounts.items(), designation) for paypoff_item in paypoff_list: paypoff_item.entry = new_entry paypoff_item.save(do_generate=False) new_entry.unlink() try: entrylines = [] for supporting in supporting_list: supporting = supporting.get_final_child() if (abs(supporting.get_total_rest_topay()) < 0.0001) and (supporting.entry_links() is not None) and (len(supporting.payoff_set.filter(supporting.payoff_query)) == 1): entrylines.extend(supporting.entry_links()) if len(entrylines) == len(supporting_list): entrylines.append(new_entry) AccountLink.create_link(entrylines) except LucteriosException: pass
def fill_entries(yearid): cost1 = CostAccounting.objects.create( name='close', description='Close cost', status=1, is_default=False) # cost1: dep=12.34 / rec=0.00 => res=-12.34 cost2 = CostAccounting.objects.create( name='open', description='Open cost', status=0, is_default=True) # cost2: dep=258.02 / rec=70.64 => res=-187.38 _ = add_entry(yearid, 1, '2015-02-01', 'Report à nouveau', '-1|5|0|1250.380000|None|\n-2|2|0|1135.930000|None|\n-3|3|0|114.450000|None|', True) # 1 2 3 entry2 = add_entry(yearid, 2, '2015-02-14', 'depense 1', '-1|12|0|63.940000|None|\n-2|4|4|63.940000|None|', True, costaccounting=cost2) # 4 5 entry3 = add_entry(yearid, 4, '2015-02-15', 'regement depense 1', '-1|2|0|-63.940000|ch N°34543|\n-2|4|4|-63.940000|None|', True) # 6 7 entry4 = add_entry(yearid, 2, '2015-02-13', 'depense 2', '-1|14|0|194.080000|None|\n-2|4|1|194.080000|None|', costaccounting=cost2) # 8 9 entry5 = add_entry(yearid, 4, '2015-02-17', 'regement depense 2', '-1|3|0|-194.080000|ch N°34545|\n-2|4|1|-194.080000|None|') # 10 11 _ = add_entry(yearid, 2, '2015-02-20', 'depense 3', '-1|11|0|78.240000|None|\n-2|4|2|78.240000|None|') # 12 13 entry7 = add_entry(yearid, 3, '2015-02-21', 'vente 1', '-1|10|0|70.640000|None|\n-2|1|7|70.640000|None|', True, costaccounting=cost2) # 14 15 entry8 = add_entry(yearid, 4, '2015-02-22', 'regement vente 1', '-1|2|0|70.640000|BP N°654321|\n-2|1|7|-70.640000|None|', True) # 16 17 _ = add_entry(yearid, 3, '2015-02-21', 'vente 2', '-1|10|0|125.970000|None|\n-2|1|5|125.970000|None|', True) # 18 19 _ = add_entry(yearid, 3, '2015-02-24', 'vente 3', '-1|10|0|34.010000|None|\n-2|1|4|34.010000|None|') # 20 21 _ = add_entry(yearid, 5, '2015-02-20', 'Frais bancaire', '-1|2|0|-12.340000|None|\n-2|15|0|12.340000|None|', True, costaccounting=cost1) # 22 23 AccountLink.create_link([entry2, entry3]) AccountLink.create_link([entry4, entry5]) AccountLink.create_link([entry7, entry8])