Пример #1
0
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
Пример #2
0
 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)
Пример #3
0
 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
Пример #4
0
 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
Пример #5
0
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])