Beispiel #1
0
def cheque_deposit_save(request):
    if request.is_ajax():
        params = json.loads(request.POST.get("cheque_deposit"))
    dct = {"rows": {}}
    company = request.company
    if params.get("voucher_no") == "":
        params["voucher_no"] = None
    object_values = {
        "voucher_no": int(params.get("voucher_no")),
        "date": params.get("date"),
        "bank_account_id": params.get("bank_account"),
        "clearing_date": params.get("clearing_date"),
        "benefactor_id": params.get("benefactor"),
        "deposited_by": params.get("deposited_by"),
        "narration": params.get("narration"),
        "status": params.get("status"),
        "company": company,
    }
    if params.get("id"):
        obj = ChequeDeposit.objects.get(id=params.get("id"), company__in=request.company.get_all())
    else:
        obj = ChequeDeposit(company=request.company)
    model = ChequeDepositRow
    try:
        obj = save_model(obj, object_values)
        if request.FILES:
            dct["attachment"] = []
            for _file, description in zip(request.FILES.getlist("file"), request.POST.getlist("file_description")):
                attach_file = AttachFile.objects.create(attachment=_file, description=description)
                obj.files.add(attach_file)
                dct["attachment"].append(FileSerializer(attach_file).data)
        if params.get("file"):
            for i, o in enumerate(params.get("file")):
                attach_file_update = get_object_or_404(AttachFile, id=o.get("id"))
                attach_file_update.description = o.get("description")
                attach_file_update.save()
        dct["id"] = obj.id
        for ind, row in enumerate(params.get("table_view").get("rows")):
            if invalid(row, ["cheque_number", "amount"]):
                continue
            else:
                values = {
                    "sn": ind + 1,
                    "cheque_number": row.get("cheque_number"),
                    "cheque_date": row.get("cheque_date"),
                    "drawee_bank": row.get("drawee_bank"),
                    "drawee_bank_address": row.get("drawee_bank_address"),
                    "amount": row.get("amount"),
                    "cheque_deposit": obj,
                }
                submodel, created = model.objects.get_or_create(id=row.get("id"), defaults=values)
                if not created:
                    submodel = save_model(submodel, values)
                dct["rows"][ind] = submodel.id
    except Exception as e:
        dct = write_error(dct, e)
        mail_exception(request)
    delete_rows(params.get("table_view").get("deleted_rows"), model)
    delete_rows(params.get("deleted_files"), AttachFile)
    return JsonResponse(dct)
Beispiel #2
0
def save_entry(request):
    if request.is_ajax():
        params = json.loads(request.POST.get('entry'))
    dct = {'rows': {}}
    company = request.company
    if params.get('entry_no') == '':
        params['entry_no'] = None
    object_values = {
        'entry_no': int(params.get('entry_no')),
        'company': company
    }
    if params.get('id'):
        obj = Entry.objects.get(id=params.get('id'),
                                company__in=request.company.get_all())
    else:
        obj = Entry(company=request.company)
    model = EntryRow
    try:
        obj = save_model(obj, object_values)
        dct['id'] = obj.id
        for ind, row in enumerate(params.get('table_view').get('rows')):
            if invalid(row, ['employee_id', 'pay_heading_id']):
                continue
            else:
                values = {
                    'sn': ind + 1,
                    'employee_id': row.get('employee_id'),
                    'pay_heading_id': row.get('pay_heading_id'),
                    'amount': row.get('amount'),
                    'hours': row.get('hours'),
                    'tax': row.get('tax'),
                    'remarks': row.get('remarks'),
                    'entry': obj
                }
                submodel, created = model.objects.get_or_create(
                    id=row.get('id'), defaults=values)
                if not created:
                    submodel = save_model(submodel, values)
                dct['rows'][ind] = submodel.id
                set_transactions(
                    submodel, obj.created,
                    ['dr', submodel.pay_heading, submodel.amount], [
                        'cr',
                        Account.objects.get(name='Payroll Tax',
                                            company=obj.company), submodel.tax
                    ], [
                        'cr', submodel.employee,
                        float(submodel.amount) - float(submodel.tax)
                    ])
        delete_rows(params.get('table_view').get('deleted_rows'), model)
    except Exception as e:
        dct = write_error(dct, e)
        mail_exception(request)
    return JsonResponse(dct)
Beispiel #3
0
def cheque_deposit_save(request):
    if request.is_ajax():
        params = json.loads(request.POST.get('cheque_deposit'))
    dct = {'rows': {}}
    company = request.company
    if params.get('voucher_no') == '':
        params['voucher_no'] = None
    object_values = {'voucher_no': int(params.get('voucher_no')), 'date': params.get('date'),
                     'bank_account_id': params.get('bank_account'),
                     'clearing_date': params.get('clearing_date'), 'benefactor_id': params.get('benefactor'),
                     'deposited_by': params.get('deposited_by'),
                     'narration': params.get('narration'), 'status': params.get('status'), 'company': company}
    if params.get('id'):
        obj = ChequeDeposit.objects.get(id=params.get('id'), company__in=request.company.get_all())
    else:
        obj = ChequeDeposit(company=request.company)
    model = ChequeDepositRow
    try:
        obj = save_model(obj, object_values)
        if request.FILES:
            dct['attachment'] = []
            for _file, description in zip(request.FILES.getlist('file'), request.POST.getlist('file_description')):
                attach_file = AttachFile.objects.create(attachment=_file, description=description)
                obj.files.add(attach_file)
                dct['attachment'].append(FileSerializer(attach_file).data)
        if params.get('file'):
            for i, o in enumerate(params.get('file')):
                attach_file_update = get_object_or_404(AttachFile, id=o.get('id'))
                attach_file_update.description = o.get('description')
                attach_file_update.save()
        dct['id'] = obj.id
        for ind, row in enumerate(params.get('table_view').get('rows')):
            if invalid(row, ['cheque_number', 'amount']):
                continue
            else:
                values = {'sn': ind + 1, 'cheque_number': row.get('cheque_number'),
                          'cheque_date': row.get('cheque_date'), 'drawee_bank': row.get('drawee_bank'),
                          'drawee_bank_address': row.get('drawee_bank_address'),
                          'amount': row.get('amount'), 'cheque_deposit': obj}
                submodel, created = model.objects.get_or_create(id=row.get('id'), defaults=values)
                if not created:
                    submodel = save_model(submodel, values)
                dct['rows'][ind] = submodel.id
    except Exception as e:
        dct = write_error(dct, e)
        mail_exception(request)
    delete_rows(params.get('table_view').get('deleted_rows'), model)
    delete_rows(params.get('deleted_files'), AttachFile)
    return JsonResponse(dct)
Beispiel #4
0
def save_entry(request):
    if request.is_ajax():
        params = json.loads(request.POST.get('entry'))
    dct = {'rows': {}}
    company = request.company
    if params.get('entry_no') == '':
        params['entry_no'] = None
    object_values = {'entry_no': int(params.get('entry_no')), 'company': company}
    if params.get('id'):
        obj = Entry.objects.get(id=params.get('id'), company__in=request.company.get_all())
    else:
        obj = Entry(company=request.company)
    model = EntryRow
    try:
        obj = save_model(obj, object_values)
        dct['id'] = obj.id
        for ind, row in enumerate(params.get('table_view').get('rows')):
            if invalid(row, ['employee_id', 'pay_heading_id']):
                continue
            else:
                values = {'sn': ind + 1, 'employee_id': row.get('employee_id'),
                          'pay_heading_id': row.get('pay_heading_id'), 'amount': row.get('amount'),
                          'hours': row.get('hours'), 'tax': row.get('tax'), 'remarks': row.get('remarks'),
                          'entry': obj}
                submodel, created = model.objects.get_or_create(id=row.get('id'), defaults=values)
                if not created:
                    submodel = save_model(submodel, values)
                dct['rows'][ind] = submodel.id
                set_transactions(submodel, obj.created,
                                 ['dr', submodel.pay_heading, submodel.amount],
                                 ['cr', Account.objects.get(name='Payroll Tax', company=obj.company), submodel.tax],
                                 ['cr', submodel.employee, float(submodel.amount) - float(submodel.tax)]
                                 )
        delete_rows(params.get('table_view').get('deleted_rows'), model)
    except Exception as e:
        dct = write_error(dct, e)
        mail_exception(request)
    return JsonResponse(dct)