Esempio n. 1
0
def database(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        data['items'] = Database.objects.all().order_by('id')
        data['title'] = 'Listado de Respaldos BD'
        data['button'] = 'Nuevo Respaldo'
        template = 'database/database_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new':
                file = open('database.txt', 'rb')
                output = open('database.txt', 'w')
                call_command('dumpdata', format='json', indent=3, stdout=output)
                output.close()
                Database(user_id=request.user.id,localhost=request.META['SERVER_PORT'],archive=File(file)).save()
                data['resp'] = True
            elif action == 'delete':
                Database.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'load':
                data = [[i.id,i.user.get_full_name(),i.localhost,i.hostname,i.date_joined_format(),i.hour_format(),i.get_archive(),True] for i in Database.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 2
0
def devolution(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Listado de Devoluciones de Productos'
        return render(request, 'devolution/devolution_dt.html', data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'delete':
                dev = DevolutionSales.objects.get(pk=request.POST['id'])
                det = SalesProducts.objects.get(pk=dev.det_id)
                det.cant += dev.cant
                det.save()
                prod = Product.objects.get(pk=det.prod_id)
                prod.stock -= det.cant
                prod.save()
                det.sales.get_totals()
                dev.delete()
                data['resp'] = True
            elif action == 'load':
                data = [[d.id, d.det.sales.get_nro(), d.det.id, d.det.prod.name, d.date_joined_format(), d.cant, True]
                        for d in DevolutionSales.objects.filter(det_id__sales_id__usuario_id__bodega_id=request.user.bodega_id)]
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 3
0
def access_users(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        data['items'] = AccessUsers.objects.all().order_by('id')
        data['title'] = 'Listado de Accesos al sistema'
        template = 'access_users/access_users_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'delete':
                AccessUsers.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'load':
                data = [[
                    i.id,
                    i.user.get_full_name(),
                    i.date_joined_format(),
                    i.hour_format(), i.localhost, i.hostname, True
                ] for i in AccessUsers.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 4
0
def results_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Ganancias y Perdidas'
        data['form'] = ReportForm()
        return render(request, 'results_report/result_report_rp.html', data)
    elif request.method == 'POST':
        filter = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        if month == "" and filter == '3':
            filter = '2'
        try:
            data = []
            purchase = Ingress.objects.filter()
            sales = Sales.objects.filter(type=1)
            pedids = Sales.objects.filter(type=2)
            expenses = Expenses.objects.filter()
            salary = Salary.objects.filter()
            if filter == '1':
                purchase = purchase.filter(date_joined__range=[start_date, end_date])
                sales = sales.filter(date_joined__range=[start_date, end_date])
                pedids = pedids.filter(date_joined__range=[start_date, end_date])
                expenses = expenses.filter(date_joined__range=[start_date, end_date])
                salary = salary.filter(date_joined__range=[start_date, end_date])
            elif filter == '2':
                purchase = purchase.filter(date_joined__year=year)
                sales = sales.filter(date_joined__year=year)
                pedids = pedids.filter(date_joined__year=year)
                expenses = expenses.filter(date_joined__year=year)
                salary = salary.filter(year=year)
            elif filter == '3':
                purchase = purchase.filter(date_joined__year=year, date_joined__month=month)
                sales = sales.filter(date_joined__year=year, date_joined__month=month)
                pedids = pedids.filter(date_joined__year=year, date_joined__month=month)
                expenses = expenses.filter(date_joined__year=year, date_joined__month=month)
                salary = salary.filter(year=year, month=month)
            purchase = purchase.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            sales = sales.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            pedids = pedids.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            expenses = expenses.aggregate(resp=Coalesce(Sum('cost'), 0.00))['resp']
            salary = salary.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            utility = sales - expenses - purchase - salary + pedids
            status = 2
            if utility > 0:
                status = 1
            elif utility < 0:
                status = 3
            data.append([format(purchase, '.2f'), format(expenses, '.2f'), format(salary, '.2f'), format(sales, '.2f'),
                         format(pedids, '.2f'), format(utility, '.2f'), status])
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 5
0
def cli_prod_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Materiales'
        data['form'] = ReportForm(request.user.bodega_id)
        return render(request, 'cli_prod_report/cli_prod_report_rp.html', data)
    elif request.method == 'POST':
        filter = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        cli = request.POST['cli']
        prod = request.POST['prod']
        data = []
        if month == "" and filter == '3':
            filter = '2'
        try:
            items = Sales.objects.filter(
                type=1, usuario_id__bodega_id=request.user.bodega_id)
            productos = SalesProducts.objects.all()
            if len(prod):
                productos = productos.filter(prod=prod)
            if len(cli):
                items = items.filter(cli_id=cli)
            if filter == '1':
                items = items.filter(date_joined__range=[start_date, end_date])
            elif filter == '2':
                items = items.filter(date_joined__year=year)
            elif filter == '3':
                items = items.filter(date_joined__year=year,
                                     date_joined__month=month)
            sum = 0
            cant = 0
            for i in items:
                for j in productos.filter(sales=i.id):
                    sum += float(j.subtotal_format()) * int(j.cant)
                    cant += j.cant
                    data.append([
                        i.id,
                        i.get_nro(),
                        i.date_joined_format(), i.cli.name, j.prod.name,
                        format(
                            float(j.subtotal_format()) * int(j.cant), '.2f'),
                        j.cant
                    ])
            data.append([
                '-------', '-------', '-------', '-------', '-------',
                format(sum, '.2f'), cant
            ])
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 6
0
def sales_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Egresos'
        data['form'] = ReportForm(request.user.bodega_id)
        return render(request, 'sales_report/sales_report_rp.html', data)
    elif request.method == 'POST':
        filter = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        cli = request.POST['cli']
        if month == "" and filter == '3':
            filter = '2'
        try:
            items = Sales.objects.filter(
                type=1, usuario_id__bodega_id=request.user.bodega_id)
            if len(cli):
                items = items.filter(cli_id=cli)
            if filter == '1':
                items = items.filter(date_joined__range=[start_date, end_date])
            elif filter == '2':
                items = items.filter(date_joined__year=year)
            elif filter == '3':
                items = items.filter(date_joined__year=year,
                                     date_joined__month=month)
            subtotal = items.aggregate(
                resp=Coalesce(Sum('subtotal'), 0.00))['resp']
            iva = items.aggregate(resp=Coalesce(Sum('iva'), 0.00))['resp']
            total = items.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            data = [[
                i.id,
                i.get_nro(), i.cli.name,
                i.date_joined_format(),
                i.subtotal_format(),
                i.iva_format(),
                i.total_format()
            ] for i in items]
            data.append([
                '-------', '-------', '-------', '-------',
                format(subtotal, '.2f'),
                format(iva, '.2f'),
                format(total, '.2f')
            ])
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 7
0
def salary_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Empleados y Salarios'
        data['form'] = ReportForm(request.user.bodega_id)
        return render(request, 'salary_report/salary_report_rp.html', data)
    elif request.method == 'POST':
        year = request.POST['year']
        month = request.POST['month']
        cont = request.POST['cont']
        data = []
        try:
            items = Salary.objects.filter()
            if month is None or month == "":
                month = "0"
            if len(cont):
                items = items.filter(cont_id=cont)
            if len(year):
                items = items.filter(year=year)
            if len(month) and month != "0":
                items = items.filter(month=month)
            total = items.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            for i in items:
                data.append([
                    i.cont_id, i.cont.pers.names, i.year,
                    i.get_month_display(),
                    i.cont.rmu_format(),
                    format(i.cont.get_day_salary(), '.2f'), i.falts,
                    i.dscto_format(),
                    i.total_format()
                ])
            data.append([
                '-------', '-------', '-------', '-------', '-------',
                '-------', '-------', '-------',
                format(total, '.2f')
            ])
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 8
0
def expenses_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Gastos'
        data['form'] = ReportForm()
        return render(request, 'expenses_report/expenses_report_rp.html', data)
    elif request.method == 'POST':
        filter = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        type_expenses = request.POST['type_expenses']
        if month == "" and filter == '3':
            filter = '2'
        try:
            items = Expenses.objects.filter()
            if len(type_expenses):
                items = items.filter(type_id=type_expenses)
            if filter == '1':
                items = items.filter(date_joined__range=[start_date, end_date])
            elif filter == '2':
                items = items.filter(date_joined__year=year)
            elif filter == '3':
                items = items.filter(date_joined__year=year,
                                     date_joined__month=month)
            total = items.aggregate(resp=Coalesce(Sum('cost'), 0.00))['resp']
            data = [[
                i.id, i.type.name, i.details,
                i.date_joined_format(),
                i.cost_format()
            ] for i in items]
            data.append([
                '-------', '-------', '-------', '-------',
                format(total, '.2f')
            ])
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 9
0
def orders_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Pedidos'
        data['form'] = ReportForm()
        return render(request, 'orders_report/orders_report_rp.html', data)
    elif request.method == 'POST':
        filter = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        cli = request.POST['cli']
        if month == "" and filter == '3':
            filter = '2'
        try:
            items = Sales.objects.filter(type=2)
            if len(cli):
                items = items.filter(cli_id=cli)
            if filter == '1':
                items = items.filter(date_joined__range=[start_date, end_date])
            elif filter == '2':
                items = items.filter(date_joined__year=year)
            elif filter == '3':
                items = items.filter(date_joined__year=year,
                                     date_joined__month=month)
            data = [[
                i.id,
                i.get_nro(), i.cli.name,
                i.date_joined_format(),
                i.count_products(),
                i.count_ent_products(),
                i.count_prods_rest()
            ] for i in items]
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 10
0
def client(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'client/client_frm.html'
            if action == 'new':
                data['form'] = ClientForm()
                data['title'] = 'Nuevo Registro de un Electricista'
                data['button'] = 'Guardar Electricista'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Client.objects.filter(pk=id).exists():
                    model = Client.objects.get(pk=id)
                    data['form'] = ClientForm(instance=model, initial={'id': model.id})
                    data['title'] = 'Edición de un Electricista'
                    data['button'] = 'Editar Electricista'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Client.objects.all().order_by('name')
            data['title'] = 'Listado de Electricistas'
            data['button'] = 'Nuevo Electricista'
            template = 'client/client_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = ClientForm(request.POST)
                elif action == 'edit':
                    f = ClientForm(request.POST, instance=Client.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    p = f.save(commit=False)
                    p.bodega_id = request.user.bodega_id
                    p.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Client.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj'].strip()
                if type == 'name':
                    if id == 0:
                        if Client.objects.filter(name__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Client.objects.filter(name__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'ruc':
                    if id == 0:
                        if Client.objects.filter(ruc__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Client.objects.filter(ruc__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'phone':
                    if id == 0:
                        if Client.objects.filter(mobile__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Client.objects.filter(mobile__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'email':
                    if id == 0:
                        if Client.objects.filter(email__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Client.objects.filter(email__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load':
                data = [[c.id, c.name, c.ruc, c.mobile, c.address, True] for c in Client.objects.filter(bodega_id=request.user.bodega_id)]
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 11
0
def type_expense(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'type_expense/type_expense_frm.html'
            if action == 'new':
                data['form'] = TypeExpenseForm()
                data['title'] = 'Nuevo Tipo de Gasto'
                data['button'] = 'Guardar Tipo de Gasto'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if TypeExpense.objects.filter(pk=id).exists():
                    model = TypeExpense.objects.get(pk=id)
                    data['form'] = TypeExpenseForm(instance=model, initial={'id': model.id})
                    data['title'] = 'Edición de un Tipo de Gasto'
                    data['button'] = 'Editar Tipo de Gasto'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = TypeExpense.objects.all().order_by('id')
            data['title'] = 'Listado de Tipos de Gastos'
            data['button'] = 'Nuevo Tipo de Gasto'
            template = 'type_expense/type_expense_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = TypeExpenseForm(request.POST)
                elif action == 'edit':
                    f = TypeExpenseForm(request.POST, instance=TypeExpense.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    f.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                TypeExpense.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj']
                if type == 'name':
                    if id == 0:
                        if TypeExpense.objects.filter(name__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if TypeExpense.objects.filter(name__iexact=obj).exclude(pk=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load':
                data = [[i.id, i.name, True] for i in TypeExpense.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 12
0
def salary(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        data['form'] = SalaryForm()
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'salary/salary_frm.html'
            if action == 'new':
                data['title'] = 'Registro de un Nuevo Rol de Salarios'
                data['button'] = 'Guardar Salario'
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = []
            data['title'] = 'Listado de Salarios'
            data['button'] = 'Generar Salarios'
            template = 'salary/salary_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                month = request.POST['month']
                year = request.POST['year']
                if exists_salary(year, month):
                    for c in Contracts.objects.filter(is_active=True):
                        dscto = c.get_dsctos(year=year, month=month)
                        salary_neto = float(c.rmu) - dscto
                        s = Salary()
                        s.cont = c
                        s.month = month
                        s.falts = c.get_falts_count(year=year, month=month)
                        s.year = year
                        s.dscto = dscto
                        s.total = salary_neto
                        s.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data[
                        'error'] = 'Ya se encuentra registrado este rol de sueldo con este año y mes'
            elif action == 'generate_salaries':
                data = []
                month = request.POST['month']
                year = request.POST['year']
                if exists_salary(year, month):
                    for c in Contracts.objects.filter(is_active=True):
                        falts = c.get_falts_count(year=year, month=month)
                        salary_day = c.get_day_salary()
                        dscto = c.get_dsctos(year=year, month=month)
                        salary_neto = float(c.rmu) - float(dscto)
                        m = months_choices[int(month)][1]
                        data.append([
                            c.id, c.pers.names, year, m,
                            c.rmu_format(),
                            format(salary_day, '.2f'), falts,
                            format(dscto, '.2f'), salary_neto
                        ])
            elif action == 'delete':
                Salary.objects.filter(year=request.POST['year'],
                                      month=request.POST['month']).delete()
                data['resp'] = True
            elif action == 'search_salaries':
                data = []
                month = request.POST['month']
                year = request.POST['year']
                if len(year) and len(month):
                    for s in Salary.objects.filter(year=year, month=month):
                        data.append([
                            s.id, s.cont.pers.names, year,
                            s.get_month_display(),
                            s.cont.rmu_format(),
                            format(s.cont.get_day_salary(), '.2f'), s.falts,
                            s.dscto_format(),
                            s.total_format()
                        ])
            elif action == 'repeated':
                id = request.POST['id']
                year = request.POST['year']
                month = request.POST['month']
                if len(year) and len(month):
                    if id == 0:
                        if Salary.objects.filter(month=month, year=year):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Salary.objects.filter(month=month,
                                                 year=year).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'get_dscto_salary':
                data = []
                for i in Faults.objects.filter(
                        cont_id=request.POST['id'],
                        date_joined__year=request.POST['year'],
                        date_joined__month=request.POST['month']):
                    data.append([i.id, i.date_joined_format(), i.details])
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 13
0
def contracts(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'contracts/contracts_frm.html'
            if action == 'new':
                data['form'] = ContractsForm()
                data['title'] = 'Nuevo Registro de un Empleado'
                data['button'] = 'Guardar Empleado'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Contracts.objects.filter(pk=id).exists():
                    model = Contracts.objects.get(pk=id)
                    data['form'] = ContractsForm(instance=model,
                                                 initial={'id': model.id},
                                                 action=True)
                    data['title'] = 'Edición de un Empleado'
                    data['button'] = 'Editar Empleado'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Contracts.objects.all().order_by('id')
            data['title'] = 'Listado de Empleados'
            data['button'] = 'Nuevo Empleado'
            template = 'contracts/contracts_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = ContractsForm(request.POST)
                    Contracts.objects.filter(
                        pers_id=request.POST['pers']).update(is_active=False)
                elif action == 'edit':
                    f = ContractsForm(
                        request.POST,
                        instance=Contracts.objects.get(pk=request.POST['id']),
                        action=True)
                if f.is_valid():
                    f.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Contracts.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'load':
                data = [[
                    i.id, i.pers.names, i.pers.dni,
                    i.start_date_format(),
                    i.end_date_format(),
                    i.rmu_format(), i.is_active, True
                ] for i in Contracts.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 14
0
def users(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'users/users_frm.html'
            if action == 'new':
                data['form'] = UserForm()
                data['title'] = 'Registro de Usuarios'
                data['button'] = 'Guardar Usuario'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if User.objects.filter(token=id).exists():
                    model = User.objects.get(token=id)
                    data['form'] = UserForm(instance=model,
                                            initial={
                                                'id': model.id,
                                                'token': model.token,
                                                'groups':
                                                model.groups.filter()
                                            })
                    data['title'] = 'Edición de Usuario'
                    data['button'] = 'Editar Usuario'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = User.objects.all()
            data['title'] = 'Listado de Usuarios'
            data['button'] = 'Nuevo Usuario'
            template = 'users/users_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = UserForm(request.POST, request.FILES)
                elif action == 'edit':
                    f = UserForm(request.POST,
                                 request.FILES,
                                 instance=User.objects.get(
                                     id=request.POST['id'],
                                     token=request.POST['token']))
                if f.is_valid():
                    form = f.save(commit=False)
                    if action == 'new':
                        form.set_password(request.POST['dni'])
                    form.save()
                    form.groups.clear()
                    for gr in request.POST.getlist('groups'):
                        form.groups.add(gr)
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                User.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = request.POST['id']
                obj = request.POST['obj'].strip()
                if type == 'dni':
                    if id == 0:
                        if User.objects.filter(dni__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if User.objects.filter(dni__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'email':
                    if id == 0:
                        if User.objects.filter(email__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if User.objects.filter(email__iexact=obj).exclude(
                                id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'username':
                    if id == 0:
                        if User.objects.filter(username__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if User.objects.filter(username__iexact=obj).exclude(
                                id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'phone':
                    if id == 0:
                        if User.objects.filter(mobile__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if User.objects.filter(mobile__iexact=obj).exclude(
                                id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'reset_password':
                user = User.objects.get(id=request.POST['id'])
                user.set_password(user.dni)
                user.save()
                data['resp'] = True
            elif action == 'login':
                from django.contrib.auth import login
                admin = User.objects.get(pk=request.POST['id'])
                login(request, admin)
                data['resp'] = True
            elif action == 'access_users':
                data = [[
                    a.id,
                    a.user.get_full_name(),
                    a.date_joined_format(),
                    a.hour_format(), a.localhost, a.hostname
                ] for a in AccessUsers.objects.filter(
                    user_id=request.POST['id'])]
            elif action == 'load':
                data = [[
                    i.id,
                    i.get_full_name(), i.username,
                    i.get_gender_display(), i.email, i.is_active,
                    i.get_image(),
                    str(i.token)
                ] for i in User.objects.filter()]
            elif action == 'get_profiles':
                data = [[i.id, i.name] for i in User.objects.get(
                    pk=request.POST['id']).groups.all()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 15
0
def med_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Medidores & Sellos'
        data['form'] = ReportForm(request.user.bodega_id)
        return render(request, 'med_report/med_report_rp.html', data)
    elif request.method == 'POST':
        filter = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        cli = request.POST['cli']
        type = request.POST['type']
        bod = request.POST['bod']
        data = []
        if month == "" and filter == '3':
            filter = '2'
        try:
            items = InventoryMedidor.objects.filter(
                usuario_id__bodega_id=request.user.bodega_id)
            items1 = InventorySello.objects.filter(
                usuario_id__bodega_id=request.user.bodega_id)
            if len(cli):
                print(cli)
                items = items.filter(cli_id=cli)
                items1 = items1.filter(cli_id=cli)
                print(items)
            if len(bod):
                if bod == '1':
                    items = items.filter(distribuido=True)
                    items1 = items1.filter(distribuido=True)
                elif bod == '2':
                    items = items.filter(distribuido=False)
                    items1 = items1.filter(distribuido=False)
            if filter == '1':
                items = items.filter(date_joined__range=[start_date, end_date])
                items1 = items1.filter(
                    date_joined__range=[start_date, end_date])
            elif filter == '2':
                items = items.filter(date_joined__year=year)
                items1 = items1.filter(date_joined__year=year)
            elif filter == '3':
                items = items.filter(date_joined__year=year,
                                     date_joined__month=month)
                items1 = items1.filter(date_joined__year=year,
                                       date_joined__month=month)
            if not len(type):
                for i in items:
                    data.append([
                        i.id,
                        i.date_joined_format(),
                        '---' if i.cli_id is None else i.cli.name,
                        i.numeracion, i.medtype.name,
                        'ProEnergy' if i.distribuido is True else 'Wagner'
                    ])
                for i in items1:
                    data.append([
                        i.id,
                        i.date_joined_format(),
                        '---' if i.cli_id is None else i.cli.name,
                        i.numeracion, '------',
                        'ProEnergy' if i.distribuido is True else 'Wagner'
                    ])
            elif type == '1':
                for i in items:
                    data.append([
                        i.id,
                        i.date_joined_format(),
                        '---' if i.cli_id is None else i.cli.name,
                        i.numeracion, i.medtype.name,
                        'ProEnergy' if i.distribuido is True else 'Wagner'
                    ])
            elif type == '2':
                for i in items1:
                    data.append([
                        i.id,
                        i.date_joined_format(),
                        '---' if i.cli_id is None else i.cli.name,
                        i.numeracion, '------',
                        'ProEnergy' if i.distribuido is True else 'Wagner'
                    ])
        except Exception as e:

            print('se sale')
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 16
0
def medidores(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'medidores/med_frm.html'
            if action == 'new':
                data['form'] = MedidorForm(request.user.bodega_id)
                data['title'] = 'Nuevo Registro de Medidores'
                data['button'] = 'Guardar Registro'
                data['fecha'] = datetime.now().strftime('%Y-%m-%d')
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                data['id'] = id
                if GestionMedidor.objects.filter(pk=id).exists():
                    model = GestionMedidor.objects.get(pk=id)
                    data['form'] = MedidorForm(request.user.bodega_id,
                                               instance=model,
                                               initial={'id': model.id})
                    data['title'] = 'Edicion Registro de Medidores'
                    data['button'] = 'Editar Registro'
            else:
                return HttpResponseRedirect(HOME)
        else:
            data['items'] = GestionMedidor.objects.all().order_by('id')
            data['title'] = 'Listado en Registro de Medidores'
            data['button'] = 'Nuevo Registro'
            template = 'medidores/med_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'delete':
                GestionMedidor.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'deletemed':
                InventoryMedidor.objects.filter(
                    gestion_id__exact=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'deletesell':
                InventorySello.objects.filter(
                    gestion_id__exact=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'details':
                data = []
                type = request.POST['type']
                if type == 'medidor':
                    for index, s in enumerate(
                            InventoryMedidor.objects.filter(
                                gestion_id=request.POST['id'])):
                        data.append([
                            index + 1, s.numeracion, s.medtype.name,
                            s.distribuido
                        ])
                if type == 'sello':
                    for index, s in enumerate(
                            InventorySello.objects.filter(
                                gestion_id=request.POST['id'])):
                        data.append([index + 1, s.numeracion, s.distribuido])
            elif action == 'edit':
                with transaction.atomic():
                    items = json.loads(request.POST['items'])
                    ges = GestionMedidor.objects.get(pk=request.POST['pk'])

                    for p in items['medidores']:
                        if int(p['ban']) == 1:
                            num1 = int(p['num1'])
                            num2 = (int(p['num2']) + 1)
                            for num in range(num1, num2):
                                if InventoryMedidor.objects.filter(
                                        numeracion__exact=num).exists():
                                    InventoryMedidor.objects.filter(
                                        numeracion__exact=num).update(
                                            cli_id=None,
                                            medtype_id=int(p['tipo']),
                                            sales_id=None,
                                            distribuido=bool(p['bod']),
                                            date_joined=ges.date_joined,
                                            estado=False)
                                else:
                                    det = InventoryMedidor()
                                    det.gestion = ges
                                    det.usuario_id = request.user.id
                                    det.medtype_id = int(p['tipo'])
                                    det.date_joined = ges.date_joined
                                    det.numeracion = num
                                    if bool(p['bod']):
                                        det.distribuido = bool(p['bod'])
                                    det.save()
                        else:
                            if InventoryMedidor.objects.filter(
                                    numeracion__exact=int(p['num1'])).exists():
                                InventoryMedidor.objects.filter(
                                    numeracion__exact=int(p['num1'])).update(
                                        cli_id=None,
                                        medtype_id=int(p['tipo']),
                                        date_joined=ges.date_joined,
                                        sales_id=None,
                                        distribuido=bool(p['bod']),
                                        estado=False)
                            else:
                                det = InventoryMedidor()
                                det.gestion = ges
                                det.usuario_id = request.user.id
                                det.medtype_id = int(p['tipo'])
                                det.date_joined = ges.date_joined
                                det.numeracion = int(p['num1'])
                                if bool(p['bod']):
                                    det.distribuido = bool(p['bod'])
                                det.save()

                    for p in items['sellos']:
                        if int(p['ban']) == 1:
                            num1 = int(p['num1'])
                            num2 = (int(p['num2']) + 1)
                            print(num1, num2)
                            for num in range(num1, num2):
                                if InventorySello.objects.filter(
                                        numeracion__exact=num).exists():
                                    InventorySello.objects.filter(
                                        numeracion__exact=num).update(
                                            cli_id=None,
                                            date_joined=ges.date_joined,
                                            sales_id=None,
                                            distribuido=bool(p['bod']),
                                            estado=False)
                                else:
                                    det = InventorySello()
                                    det.gestion = ges
                                    det.usuario_id = request.user.id
                                    det.date_joined = ges.date_joined
                                    det.numeracion = num
                                    if bool(p['bod']):
                                        det.distribuido = bool(p['bod'])
                                    det.save()
                        else:
                            if InventorySello.objects.filter(
                                    numeracion__exact=int(p['num1'])).exists():
                                InventorySello.objects.filter(
                                    numeracion__exact=int(p['num1'])).update(
                                        cli_id=None,
                                        date_joined=ges.date_joined,
                                        sales_id=None,
                                        distribuido=bool(p['bod']),
                                        estado=False)
                            else:
                                det = InventorySello()
                                det.gestion = ges
                                det.usuario_id = request.user.id
                                det.date_joined = ges.date_joined
                                det.numeracion = int(p['num1'])
                                if bool(p['bod']):
                                    det.distribuido = bool(p['bod'])
                                det.save()
                    data['resp'] = True

            elif action == 'new':
                with transaction.atomic():

                    cantmed = 0
                    cantsell = 0
                    items = json.loads(request.POST['items'])
                    ges = GestionMedidor()
                    ges.usuario_id = request.user.id
                    ges.date_joined = items['date_joined']
                    ges.save()

                    for p in items['medidores']:
                        if int(p['ban']) == 1:
                            num1 = int(p['num1'])
                            num2 = (int(p['num2']) + 1)
                            for num in range(num1, num2):
                                if InventoryMedidor.objects.filter(
                                        numeracion__exact=num).exists():
                                    InventoryMedidor.objects.filter(
                                        numeracion__exact=num).update(
                                            cli_id=None,
                                            medtype_id=int(p['tipo']),
                                            sales_id=None,
                                            distribuido=bool(p['bod']),
                                            date_joined=ges.date_joined,
                                            estado=False)
                                    cantmed += 1
                                else:
                                    det = InventoryMedidor()
                                    det.gestion = ges
                                    det.usuario_id = request.user.id
                                    det.medtype_id = int(p['tipo'])
                                    det.date_joined = ges.date_joined
                                    det.numeracion = num
                                    cantmed += 1
                                    if bool(p['bod']):
                                        det.distribuido = bool(p['bod'])
                                    det.save()
                        else:
                            if InventoryMedidor.objects.filter(
                                    numeracion__exact=int(p['num1'])).exists():
                                InventoryMedidor.objects.filter(
                                    numeracion__exact=int(p['num1'])).update(
                                        cli_id=None,
                                        medtype_id=int(p['tipo']),
                                        date_joined=ges.date_joined,
                                        sales_id=None,
                                        distribuido=bool(p['bod']),
                                        estado=False)
                                cantmed += 1
                            else:
                                det = InventoryMedidor()
                                det.gestion = ges
                                det.usuario_id = request.user.id
                                det.medtype_id = int(p['tipo'])
                                det.date_joined = ges.date_joined
                                det.numeracion = int(p['num1'])
                                cantmed += 1
                                if bool(p['bod']):
                                    det.distribuido = bool(p['bod'])
                                det.save()

                    for p in items['sellos']:
                        if int(p['ban']) == 1:
                            num1 = int(p['num1'])
                            num2 = (int(p['num2']) + 1)
                            print(num1, num2)
                            for num in range(num1, num2):
                                if InventorySello.objects.filter(
                                        numeracion__exact=num).exists():
                                    InventorySello.objects.filter(
                                        numeracion__exact=num).update(
                                            cli_id=None,
                                            date_joined=ges.date_joined,
                                            sales_id=None,
                                            distribuido=bool(p['bod']),
                                            estado=False)
                                    cantsell += 1
                                else:
                                    det = InventorySello()
                                    det.gestion = ges
                                    det.usuario_id = request.user.id
                                    det.date_joined = ges.date_joined
                                    det.numeracion = num
                                    cantsell += 1
                                    if bool(p['bod']):
                                        det.distribuido = bool(p['bod'])
                                    det.save()
                        else:
                            if InventorySello.objects.filter(
                                    numeracion__exact=int(p['num1'])).exists():
                                InventorySello.objects.filter(
                                    numeracion__exact=int(p['num1'])).update(
                                        cli_id=None,
                                        date_joined=ges.date_joined,
                                        sales_id=None,
                                        distribuido=bool(p['bod']),
                                        estado=False)
                                cantsell += 1
                            else:
                                det = InventorySello()
                                det.gestion = ges
                                det.usuario_id = request.user.id
                                det.date_joined = ges.date_joined
                                det.numeracion = int(p['num1'])
                                cantsell += 1
                                if bool(p['bod']):
                                    det.distribuido = bool(p['bod'])
                                det.save()
                    ges.cantsell = cantsell
                    ges.cantmed = cantmed
                    ges.save()
                    data['resp'] = True
            elif action == 'load':

                data = [[
                    i.id,
                    i.date_joined_format(),
                    i.cantmed,
                    i.cantsell,
                    [[e.username]
                     for e in User.objects.filter(pk=i.usuario_id)],
                ] for i in GestionMedidor.objects.filter(
                    usuario_id__bodega_id=request.user.bodega_id)]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            print(e)
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 17
0
def tools(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'tools/tools_frm.html'
            if action == 'new':
                data['form'] = ToolsForm()
                data['title'] = 'Nueva Herramienta'
                data['button'] = 'Guardar Herramienta'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Tools.objects.filter(pk=id).exists():
                    model = Tools.objects.get(pk=id)
                    data['form'] = ToolsForm(instance=model,
                                             initial={'id': model.id})
                    data['title'] = 'Edición de una Herramienta'
                    data['button'] = 'Editar Herramienta'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Tools.objects.all().order_by('id')
            data['title'] = 'Listado de Herramientas'
            data['button'] = 'Nueva Herramienta'
            template = 'tools/tools_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = ToolsForm(request.POST)
                elif action == 'edit':
                    f = ToolsForm(
                        request.POST,
                        instance=Tools.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    form = f.save(commit=False)
                    form.dep = (form.cost / form.guarantee) / 365
                    form.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Tools.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj']
                if type == 'code':
                    if id == 0:
                        if Tools.objects.filter(code__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Tools.objects.filter(code__iexact=obj).exclude(
                                pk=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load':
                data = [[
                    i.id, i.name, i.code,
                    i.cost_format(), i.guarantee,
                    i.dep_format(), True
                ] for i in Tools.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 18
0
def groups(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'groups/groups_frm.html'
            if action == 'new':
                data['form'] = GroupForm()
                data['title'] = 'Registro de un Perfil'
                data['button'] = 'Guardar Perfil'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Group.objects.filter(pk=id).exists():
                    model = Group.objects.get(pk=id)
                    modules = Module.objects.filter(groupmodule__groups__id=id)
                    data['form'] = GroupForm(instance=model,
                                             initial={
                                                 'id': model.id,
                                                 'modules': modules
                                             })
                    data['title'] = 'Edición de un Perfil'
                    data['button'] = 'Editar Perfil'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Group.objects.all().order_by('name')
            data['title'] = 'Listado de Perfiles'
            data['button'] = 'Nuevo Perfil'
            template = 'groups/groups_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = GroupForm(request.POST)
                elif action == 'edit':
                    model = Group.objects.get(pk=request.POST['id'])
                    f = GroupForm(request.POST, instance=model)
                    GroupModule.objects.filter(groups=model).delete()
                if f.is_valid():
                    form = f.save(commit=False)
                    form.save()
                    for m in request.POST.getlist('modules'):
                        GroupModule(groups=form, modules_id=m).save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Group.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj']
                if type == 'name':
                    if id == 0:
                        if Group.objects.filter(name__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Group.objects.filter(name__iexact=obj).exclude(
                                pk=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load_modules':
                data = [[
                    m.name,
                    m.get_icon(),
                    m.get_image(),
                    m.get_type(), m.is_vertical, m.is_visible, m.is_active
                ] for m in Module.objects.filter(
                    groupmodule__groups_id=request.POST['id'])]
            elif action == 'load':
                data = [[i.id, i.name,
                         i.groupmodule_set.count(), True]
                        for i in Group.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 19
0
def expenses(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'expenses/expenses_frm.html'
            if action == 'new':
                data['form'] = ExpensesForm()
                data['title'] = 'Nuevo Gasto'
                data['button'] = 'Guardar Gasto'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Expenses.objects.filter(pk=id).exists():
                    model = Expenses.objects.get(pk=id)
                    data['form'] = ExpensesForm(instance=model,
                                                initial={'id': model.id})
                    data['title'] = 'Edición de un Gasto'
                    data['button'] = 'Editar Gasto'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Expenses.objects.all().order_by('id')
            data['title'] = 'Listado de Gastos'
            data['button'] = 'Nuevo Gasto'
            template = 'expenses/expenses_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = ExpensesForm(request.POST)
                elif action == 'edit':
                    f = ExpensesForm(
                        request.POST,
                        instance=Expenses.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    f.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Expenses.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'load':
                data = [[
                    i.id, i.type.name, i.details,
                    i.date_joined_format(),
                    i.cost_format(), True
                ] for i in Expenses.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 20
0
def personal(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'personal/personal_frm.html'
            if action == 'new':
                data['form'] = PersonalForm()
                data['title'] = 'Nuevo Registro de un Empleado'
                data['button'] = 'Guardar Empleado'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Personal.objects.filter(pk=id).exists():
                    model = Personal.objects.get(pk=id)
                    data['form'] = PersonalForm(instance=model, initial={'id': model.id})
                    data['title'] = 'Edición de un Empleado'
                    data['button'] = 'Editar Empleado'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Personal.objects.all().order_by('name')
            data['title'] = 'Listado de Empleados'
            data['button'] = 'Nuevo Empleado'
            template = 'personal/personal_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = PersonalForm(request.POST, request.FILES)
                elif action == 'edit':
                    f = PersonalForm(request.POST, request.FILES, instance=Personal.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    f.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Personal.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj'].strip()
                if type == 'mobile':
                    if id == 0:
                        if Personal.objects.filter(mobile__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Personal.objects.filter(mobile__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'dni':
                    if id == 0:
                        if Personal.objects.filter(dni__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Personal.objects.filter(dni__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'email':
                    if id == 0:
                        if Personal.objects.filter(email__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Personal.objects.filter(email__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load':
                data = [[c.id, c.get_avatar(),c.names,c.dni,c.mobile,c.email,c.address,True] for c in Personal.objects.filter()]
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 21
0
def faults(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'faults/faults_frm.html'
            if action == 'new':
                data['form'] = FaultsForm()
                data['title'] = 'Nuevo Registro de una Falta'
                data['button'] = 'Guardar Falta'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Faults.objects.filter(pk=id).exists():
                    model = Faults.objects.get(pk=id)
                    data['form'] = FaultsForm(instance=model,
                                              initial={'id': model.id},
                                              action=True)
                    data['title'] = 'Edición de una Sanción'
                    data['button'] = 'Editar Sanción'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Faults.objects.all().order_by('id')
            data['title'] = 'Listado de Faltas'
            data['button'] = 'Nueva Falta'
            template = 'faults/faults_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = FaultsForm(request.POST, request.FILES)
                elif action == 'edit':
                    f = FaultsForm(
                        request.POST,
                        request.FILES,
                        instance=Faults.objects.get(pk=request.POST['id']),
                        action=True)
                if f.is_valid():
                    f.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Faults.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'load':
                data = [[
                    i.id,
                    i.date_joined_format(),
                    i.cont.get_nro(), i.cont.pers.names, i.cont.pers.dni,
                    i.details, True
                ] for i in Faults.objects.filter()]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 22
0
def sales(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'sales/sales_frm.html'
            if action == 'new':
                data['form'] = SalesForm(request.user.bodega_id, request.POST)
                data['title'] = 'Nuevo Registro de Despacho'
                data['button'] = 'Guardar Transacción'
            elif action == 'delete':
                if InventoryMedidor.objects.filter(
                        numeracion__exact=request.GET['num']).exists():
                    InventoryMedidor.objects.filter(
                        numeracion__exact=request.GET['num']).update(
                            cli_id=None, sales_id=None, estado=False)
                if InventorySello.objects.filter(
                        numeracion__exact=request.GET['num']).exists():
                    InventorySello.objects.filter(
                        numeracion__exact=request.GET['num']).update(
                            cli_id=None, sales_id=None, estado=False)
                return HttpResponseRedirect(src)
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                data['id'] = id
                if Sales.objects.filter(pk=id).exists():
                    model = Sales.objects.get(pk=id)
                    data['form'] = SalesForm(request.user.bodega_id,
                                             instance=model,
                                             initial={'id': model.id})
                    data['details'] = SalesProducts.objects.filter(sales=id)
                    data['servicios'] = SalesServices.objects.filter(sales=id)
                    data['title'] = 'Edición de Egreso'
                    data['button'] = 'Editar Orden'
                    # return render(request, 'ingress/editarIngreso.html', data)
                else:
                    return HttpResponseRedirect(src)
            elif action == 'reuse' and 'id' in request.GET:
                id = request.GET['id']
                data['id'] = id
                if Sales.objects.filter(pk=id).exists():
                    model = Sales.objects.get(pk=id)
                    data['form'] = SalesForm(request.user.bodega_id,
                                             instance=model,
                                             initial={'id': model.id})
                    data['details'] = SalesProducts.objects.filter(sales=id)
                    data['servicios'] = SalesServices.objects.filter(sales=id)
                    data['title'] = 'Reutilizar este Egreso'
                    data['button'] = 'Registrar Orden'
                    # return render(request, 'ingress/editarIngreso.html', data)
                else:
                    return HttpResponseRedirect(src)
            elif action == 'pdf' and 'id' in request.GET:
                id = request.GET['id']
                for e in Bodega.objects.filter(pk=request.user.bodega_id):
                    direccion = e.address
                if Sales.objects.filter(id=id):
                    template = get_template('sales/sales_bill.html')
                    cliente = 0
                    for e in Sales.objects.filter(id=id):
                        cliente = e.cli_id
                    context = {
                        'company':
                        Company.objects.first(),
                        'sales':
                        Sales.objects.get(id=id),
                        'details':
                        SalesProducts.objects.filter(
                            sales_id=id).order_by('id'),
                        'ubicacion':
                        direccion,
                        'medidorf': [
                            e.numeracion
                            for e in InventoryMedidor.objects.filter(
                                sales_id=id, cli_id=cliente).order_by('id')[:1]
                        ],
                        'medidorl': [
                            e.numeracion
                            for e in InventoryMedidor.objects.filter(
                                sales_id=id, cli_id=cliente).order_by('-id')
                            [:1]
                        ],
                        'sellof': [
                            e.numeracion
                            for e in InventorySello.objects.filter(
                                sales_id=id, cli_id=cliente).order_by('id')[:1]
                        ],
                        'sellol': [
                            e.numeracion
                            for e in InventorySello.objects.filter(
                                sales_id=id, cli_id=cliente).order_by('-id')
                            [:1]
                        ],
                        'vacio':
                        request.user.bodega_id,
                        'medidor':
                        InventoryMedidor.objects.filter(
                            sales_id=id,
                            cli_id=cliente).order_by('numeracion'),
                        'sello':
                        InventorySello.objects.filter(
                            sales_id=id,
                            cli_id=cliente).order_by('numeracion'),
                        'contador':
                        12
                    }
                    html = template.render(context)
                    result = BytesIO()
                    links = lambda uri, rel: os.path.join(
                        MEDIA_ROOT, uri.replace(MEDIA_URL, ''))
                    pdf = pisa.pisaDocument(BytesIO(html.encode('UTF-8')),
                                            result,
                                            encoding='UTF-8',
                                            link_callback=links)
                    return HttpResponse(result.getvalue(),
                                        content_type='application/pdf')
                return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(HOME)
        else:
            data['items'] = Sales.objects.all().order_by('id')
            data['title'] = 'Listado de Despachos de Materiales'
            data['button'] = 'Nueva Despacho'
            template = 'sales/sales_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'get_client':
                id = request.POST['id']
                data = {'dni': '', 'phone': '', 'email': ''}
                if not id == "" and not id is None:
                    items = Client.objects.filter(id=id)
                    if items.exists():
                        items = items[0]
                        data = {
                            'dni': items.ruc,
                            'phone': items.mobile,
                            'email': items.email,
                            'address': items.address
                        }
            elif action == 'delete':
                sales = Sales.objects.get(pk=request.POST['id'])
                if InventoryMedidor.objects.filter(
                        cli_id=sales.cli,
                        sales_id=request.POST['id']).exists():
                    InventoryMedidor.objects.filter(
                        cli_id=sales.cli.id,
                        sales_id=request.POST['id']).update(cli_id=None,
                                                            sales_id=None,
                                                            estado=False)
                if InventorySello.objects.filter(
                        cli_id=sales.cli,
                        sales_id=request.POST['id']).exists():
                    InventorySello.objects.filter(
                        cli_id=sales.cli.id,
                        sales_id=request.POST['id']).update(cli_id=None,
                                                            sales_id=None,
                                                            estado=False)
                for d in SalesProducts.objects.filter(sales=sales):
                    if d.sales.type == 2:
                        d.prod.stock += d.cant_ent
                    else:
                        d.prod.stock += d.cant
                    d.prod.save()
                    d.delete()
                sales.delete()
                data['resp'] = True
            elif action == 'details':
                data = []
                type = request.POST['type']
                if type == 'products':
                    for s in SalesProducts.objects.filter(
                            sales_id=request.POST['id']):
                        data.append([
                            s.id, s.prod.name,
                            s.price_format(), s.cant,
                            s.subtotal_format(), s.is_dispatched
                        ])
                elif type == 'services':
                    for s in SalesServices.objects.filter(
                            sales_id=request.POST['id']):
                        data.append([s.id, s.serv.name, s.total_format()])
                elif type == 'medidor':
                    cliente = 0
                    for e in Sales.objects.filter(id=request.POST['id']):
                        cliente = e.cli_id
                    for s in InventoryMedidor.objects.filter(
                            sales_id=request.POST['id'], cli_id=cliente):
                        data.append([s.id, s.numeracion, True])
                elif type == 'sello':
                    cliente = 0
                    for e in Sales.objects.filter(id=request.POST['id']):
                        cliente = e.cli_id
                    for s in InventorySello.objects.filter(
                            sales_id=request.POST['id'], cli_id=cliente):
                        data.append([s.id, s.numeracion, True])
                elif type == 'adicion':
                    for s in InventoryMedidor.objects.filter(
                            usuario_id__bodega_id=request.user.bodega_id):
                        if s.distribuido:
                            if not s.estado:
                                data.append({
                                    'pk': request.POST['id'],
                                    'id': s.id,
                                    'tipo': True,
                                    'num': s.numeracion,
                                    'state': s.estado
                                })
                    for s in InventorySello.objects.filter(
                            usuario_id__bodega_id=request.user.bodega_id):
                        if s.distribuido:
                            if not s.estado:
                                data.append({
                                    'pk': request.POST['id'],
                                    'id': s.id,
                                    'tipo': False,
                                    'num': s.numeracion,
                                    'state': s.estado
                                })
                elif type == 'dispatch':
                    for s in SalesProducts.objects.filter(
                            sales_id=request.POST['id']):
                        data.append({
                            'id': s.id,
                            'name': s.prod.name,
                            'cant': s.cant,
                            'cant_ent': s.cant_ent,
                            'stock': s.prod.stock,
                            'cant_dis': 1,
                            'state': s.is_dispatched
                        })
                elif type == 'devolution':
                    for s in SalesProducts.objects.filter(
                            sales_id=request.POST['id']):
                        data.append({
                            'id': s.id,
                            'name': s.prod.name,
                            'cant': s.cant,
                            'cant_dev': 1,
                            'state': s.cant == 0
                        })
            elif action == 'search_products':
                data = []
                for p in Product.objects.filter(
                        bodega_id=request.user.bodega_id).exclude(
                            id__in=json.loads(request.POST['items'])):
                    if p.stock > 0:
                        data.append(
                            [p.id, p.name, p.stock,
                             p.price_format(), 1])
            elif action == 'search_services':
                data = [[i.id, i.name, i.cost_format(), True]
                        for i in Services.objects.filter().exclude(
                            id__in=json.loads(request.POST['items']))]
            elif action == 'new' or action == 'edit' or action == 'reuse':
                with transaction.atomic():
                    if action == 'edit':
                        sal = Sales.objects.get(pk=request.POST['pk'])
                        for d in SalesProducts.objects.filter(sales=sal):
                            d.prod.stock += d.cant
                            d.prod.save()
                            d.delete()
                        vent = sal

                    items = json.loads(request.POST['items'])
                    if action != 'edit':
                        vent = Sales()
                        vent.cli_id = items['cli']
                    vent.usuario_id = request.user.id
                    vent.date_joined = items['date_joined']
                    vent.date_delivery = items['date_delivery']
                    vent.subtotal = items['subtotal']
                    vent.dscto = items['dscto']
                    vent.iva = items['iva']
                    vent.subtotal = float(items['total'])
                    vent.type = int(items['type'])
                    vent.save()
                    for p in items['products']:
                        det = SalesProducts()
                        det.sales = vent
                        det.prod_id = int(p['id'])
                        det.cant = int(p['cant'])
                        det.price = float(p['cost'])
                        det.subtotal = float(det.price) * int(det.cant)
                        det.is_dispatched = vent.type == 1
                        det.save()

                        if vent.type == 1:
                            prod = Product.objects.get(pk=int(p['id']))
                            prod.stock -= det.cant
                            prod.save()

                    for s in items['services']:
                        serv = SalesServices()
                        serv.sales = vent
                        serv.serv_id = s['id']
                        serv.total = float(s['cost'])
                        serv.save()

                    vent.get_totals()
                    data['resp'] = True

            elif action == 'dispatch_products':
                items = json.loads(request.POST['items'])
                for i in items:
                    if i['state']:
                        det = SalesProducts.objects.get(pk=i['id'])
                        det.cant_ent += int(i['cant_dis'])
                        det.is_dispatched = det.cant_ent == det.cant
                        det.subtotal = float(det.price) * int(det.cant_ent)
                        det.save()
                        sales = Sales.objects.get(pk=det.sales.pk)
                        sales.subtotal += Decimal(det.subtotal)
                        sales.save()
                        prod = Product.objects.get(pk=det.prod_id)
                        prod.stock -= int(i['cant_dis'])
                        prod.save()

                data['resp'] = True
            elif action == 'devolution_products':
                items = json.loads(request.POST['items'])
                for i in items:
                    cant_dev = int(i['cant'])
                    if i['state'] and cant_dev > 0:
                        cant = int(i['cant_dev'])
                        det = SalesProducts.objects.get(pk=i['id'])
                        det.cant -= cant
                        det.save()
                        det.sales.get_totals()
                        prod = Product.objects.get(pk=det.prod_id)
                        prod.stock += cant
                        prod.save()
                        dev = DevolutionSales()
                        dev.det = det
                        dev.cant = cant
                        dev.save()
                data['resp'] = True
            elif action == 'ingress_prod':
                items = json.loads(request.POST['items'])
                for i in items:
                    if i['state']:
                        cliente = 0
                        if i['tipo']:
                            det = InventoryMedidor.objects.get(pk=i['id'])
                            for e in Sales.objects.filter(id=i['pk']):
                                cliente = e.cli_id
                            det.cli_id = cliente
                            det.sales_id = i['pk']
                            det.estado = True
                            det.save()
                        else:
                            det = InventorySello.objects.get(pk=i['id'])
                            for e in Sales.objects.filter(id=i['pk']):
                                cliente = e.cli_id
                            det.cli_id = cliente
                            det.sales_id = i['pk']
                            det.estado = True
                            det.save()
                data['resp'] = True
            elif action == 'ingress_med':
                num1 = int(request.POST['num1'])
                num2 = int(request.POST['num2']) + 1
                items = json.loads(request.POST['items'])
                lista = []
                for i in items:
                    for clave, valor in i.items():
                        if clave == 'num':
                            lista.append(valor)
                for num in range(num1, num2):
                    if str(num) in lista:
                        for i in items:
                            cliente = 0
                            fecha = ""
                            if i['tipo']:
                                det = InventoryMedidor.objects.get(pk=i['id'])
                                if int(i['num']) == num:
                                    for e in Sales.objects.filter(id=i['pk']):
                                        cliente = e.cli_id
                                        fecha = e.date_joined
                                    det.cli_id = cliente
                                    det.date_joined = fecha
                                    det.sales_id = i['pk']
                                    det.estado = True
                                    det.save()
                                    break
                data['resp'] = True
            elif action == 'ingress_sell':
                num1 = int(request.POST['num1'])
                num2 = int(request.POST['num2']) + 1
                items = json.loads(request.POST['items'])
                lista = []
                for i in items:
                    for clave, valor in i.items():
                        if clave == 'num':
                            lista.append(valor)
                for num in range(num1, num2):
                    if str(num) in lista:
                        for i in items:
                            cliente = 0
                            fecha = ""
                            if not i['tipo']:
                                det = InventorySello.objects.get(pk=i['id'])
                                if int(i['num']) == num:
                                    for e in Sales.objects.filter(id=i['pk']):
                                        cliente = e.cli_id
                                        fecha = e.date_joined
                                    det.cli_id = cliente
                                    print(fecha)
                                    det.date_joined = fecha
                                    det.sales_id = i['pk']
                                    det.estado = True
                                    det.save()
                                    break
                data['resp'] = True
            elif action == 'load':

                data = [[
                    i.id,
                    i.get_nro(),
                    [[e.username]
                     for e in User.objects.filter(pk=i.usuario_id)],
                    i.cli.name,
                    i.date_joined_format(),
                    SalesProducts.objects.filter(sales=i).count(),
                    InventoryMedidor.objects.filter(sales=i).count(),
                    InventorySello.objects.filter(sales=i).count(),
                    i.subtotal_format(), i.type
                ] for i in Sales.objects.filter(
                    usuario_id__bodega_id=request.user.bodega_id)]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            print(e)
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 23
0
def category(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'category/category_frm.html'
            if action == 'new':
                data['form'] = CategoryForm()
                data['title'] = 'Nueva Categoria de Producto'
                data['button'] = 'Guardar Categoria'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Category.objects.filter(pk=id).exists():
                    model = Category.objects.get(pk=id)
                    data['form'] = CategoryForm(instance=model, initial={'id': model.id})
                    data['title'] = 'Edición de una Categoria de Producto'
                    data['button'] = 'Editar Categoria'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Category.objects.all().order_by('name')
            data['title'] = 'Listado de Categorias de Productos'
            data['button'] = 'Nueva Categoria'
            template = 'category/category_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = CategoryForm(request.POST)
                elif action == 'edit':
                    f = CategoryForm(request.POST, instance=Category.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    p = f.save()
                    p.bodega_id = request.user.bodega_id
                    p.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Category.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj'].strip()
                if type == 'name':
                    if id == 0:
                        if Category.objects.filter(name__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Category.objects.filter(name__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load':
                data = [[i.id, i.name, i.description, True] for i in Category.objects.filter(bodega_id=request.user.bodega_id)]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 24
0
def inventory_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Inventarios'
        data['form'] = ReportForm(request.user.bodega_id)
        return render(request, 'inventory_report/inventory_report_rp.html',
                      data)
    elif request.method == 'POST':
        filtro = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        prod = request.POST.getlist("prod[]")
        data = []
        if month == "" and filtro == '3':
            filtro = '2'
        try:
            print(filtro)
            items = Product.objects.filter(bodega=request.user.bodega_id)
            if len(prod):
                for x in prod:
                    items = Product.objects.filter(
                        bodega=request.user.bodega_id)
                    items = items.filter(id=x)
                    if filtro == '1':
                        for i in items:
                            data.append([
                                i.id, i.name,
                                i.cost_format(), i.stock,
                                i.get_ingress_range(start_date, end_date),
                                i.get_sales_range(start_date, end_date),
                                i.get_pedids_range(start_date, end_date)
                            ])

                    elif filtro == '2':
                        for i in items:
                            data.append([
                                i.id, i.name,
                                i.cost_format(), i.stock,
                                i.get_ingress_year(year),
                                i.get_sales_year(year),
                                i.get_pedids_year(year)
                            ])

                    elif filtro == '3':
                        print(year, month)
                        for i in items:
                            data.append([
                                i.id, i.name,
                                i.cost_format(), i.stock,
                                i.get_ingress_year_month(year, month),
                                i.get_sales_year_month(year, month),
                                i.get_pedids_year_month(year, month)
                            ])

                    else:
                        for i in items:
                            data.append([
                                i.id, i.name,
                                i.cost_format(), i.stock,
                                i.get_ingress(),
                                i.get_sales(),
                                i.get_pedids()
                            ])

            else:
                if filtro == '1':
                    for i in items:
                        data.append([
                            i.id, i.name,
                            i.cost_format(), i.stock,
                            i.get_ingress_range(start_date, end_date),
                            i.get_sales_range(start_date, end_date),
                            i.get_pedids_range(start_date, end_date)
                        ])

                elif filtro == '2':
                    for i in items:
                        data.append([
                            i.id, i.name,
                            i.cost_format(), i.stock,
                            i.get_ingress_year(year),
                            i.get_sales_year(year),
                            i.get_pedids_year(year)
                        ])

                elif filtro == '3':
                    print(year, month)
                    for i in items:
                        data.append([
                            i.id, i.name,
                            i.cost_format(), i.stock,
                            i.get_ingress_year_month(year, month),
                            i.get_sales_year_month(year, month),
                            i.get_pedids_year_month(year, month)
                        ])

                else:
                    for i in items:
                        data.append([
                            i.id, i.name,
                            i.cost_format(), i.stock,
                            i.get_ingress(),
                            i.get_sales(),
                            i.get_pedids()
                        ])

        except Exception as e:
            data = {'error': str(e), 'resp': False}
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 25
0
def product(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'product/product_frm.html'
            if action == 'new':
                data['form'] = ProductForm(request.user.bodega_id)
                data['title'] = 'Nuevo Registro de un Material'
                data['button'] = 'Guardar Material'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Product.objects.filter(pk=id).exists():
                    model = Product.objects.get(pk=id)
                    data['form'] = ProductForm(request.user.bodega_id,
                                               instance=model,
                                               initial={'id': model.id})
                    data['title'] = 'Edición de un Material'
                    data['button'] = 'Editar Material'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Product.objects.all().order_by('name')
            data['title'] = 'Listado de Materiales'
            data['button'] = 'Nuevo Material'
            template = 'product/product_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = ProductForm(request.user.bodega_id, request.POST,
                                    request.FILES)
                elif action == 'edit':
                    f = ProductForm(
                        request.user.bodega_id,
                        request.POST,
                        request.FILES,
                        instance=Product.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    p = f.save()
                    p.bodega_id = request.user.bodega_id
                    p.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Product.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'repeated':
                type = request.POST['type']
                id = int(request.POST['id'])
                obj = request.POST['obj'].strip()
                if type == 'name':
                    if id == 0:
                        if Product.objects.filter(name__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if Product.objects.filter(name__iexact=obj).exclude(
                                id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'load':
                data = [[
                    i.id, i.name,
                    i.get_image(), i.cat.name, i.brand.name, i.stock,
                    i.cost_format(),
                    i.price_format(), True
                ] for i in Product.objects.filter(
                    bodega_id=request.user.bodega_id)]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 26
0
def ingress(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'ingress/ingress_frm.html'
            if action == 'new':
                data['form'] = IngressForm(request.user.bodega_id)
                data['frmProv'] = ProviderForm()
                data['title'] = 'Nuevo Registro de una Orden de Ingresos'
                data['button'] = 'Guardar Orden'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                data['id'] = id
                if Ingress.objects.filter(pk=id).exists():
                    model = Ingress.objects.get(pk=id)
                    data['form'] = IngressForm(request.user.bodega_id,
                                               instance=model,
                                               initial={'id': model.id})
                    data['frmProv'] = ProviderForm(instance=model,
                                                   initial={'id': model.prov})
                    data['details'] = Inventory.objects.filter(ing=id)
                    data['title'] = 'Edición de Ingreso'
                    data['button'] = 'Editar Orden'
                    # return render(request, 'ingress/editarIngreso.html', data)
                else:
                    return HttpResponseRedirect(src)
            elif action == 'pdf' and 'id' in request.GET:
                id = request.GET['id']
                for e in Bodega.objects.filter(pk=request.user.bodega_id):
                    direccion = e.address
                if Ingress.objects.filter(id=id):
                    template = get_template('ingress/ingress_bill.html')
                    data['company'] = Company.objects.first()
                    data['Ingress'] = Ingress.objects.filter(id=id)
                    data['details'] = Inventory.objects.filter(
                        ing_id=id).order_by('id')
                    data['ubicacion'] = direccion
                    data['vacio'] = request.user.bodega_id
                    sub = 0
                    for e in Inventory.objects.filter(ing_id=id):
                        sub += e.get_sub()
                    data['subtotal'] = sub
                    html = template.render(data)
                    result = BytesIO()
                    links = lambda uri, rel: os.path.join(
                        settings.MEDIA_ROOT, uri.replace(
                            settings.MEDIA_URL, ''))
                    pdf = pisa.pisaDocument(BytesIO(html.encode('UTF-8')),
                                            result,
                                            encoding='UTF-8',
                                            link_callback=links)
                    return HttpResponse(result.getvalue(),
                                        content_type='application/pdf')
                return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(HOME)
        else:
            data['items'] = Ingress.objects.all().order_by('id')
            data['title'] = 'Listado de Ordenes de Ingreso'
            data['button'] = 'Nueva Orden'
            template = 'ingress/ingress_dt.html'
        return render(request, template, data)

    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'get_provider':
                id = request.POST['id']
                data = {
                    'ruc': '',
                    'phone': '',
                    'email': '',
                    'name': '',
                    'address': ''
                }
                if not id == "" or not id is None:
                    items = Provider.objects.filter(id=id)
                    if items.exists():
                        data = items[0].toJSON()
            elif action == 'delete':
                ing = Ingress.objects.get(pk=request.POST['id'])
                for i in Inventory.objects.filter(ing=ing):
                    cant = i.cant - i.diferencia
                    i.prod.stock -= cant
                    i.prod.save()
                    i.delete()
                ing.delete()
                data['resp'] = True
            elif action == 'search_products':
                prods = json.loads(request.POST['prods'])
                data = [[
                    p.id, p.name,
                    p.get_image(),
                    p.get_cat(),
                    p.cost_format(), p.stock, True
                ] for p in Product.objects.filter(
                    bodega_id=request.user.bodega_id).exclude(id__in=prods)]
            elif action == 'new' or action == 'edit':
                with transaction.atomic():
                    if action == 'edit':
                        inge = Ingress.objects.get(pk=request.POST['pk'])
                        for i in Inventory.objects.filter(ing=inge):
                            cant = i.cant - i.diferencia
                            i.prod.stock -= cant
                            i.prod.save()
                            i.delete()
                        ing = inge
                    items = json.loads(request.POST['items'])
                    if action == 'new':
                        ing = Ingress()
                    ing.usuario_id = request.user.id
                    ing.prov_id = items['prov']
                    ing.date_joined = items['date_joined']
                    ing.iva = 0
                    ing.save()
                    for p in items['products']:
                        det = Inventory()
                        det.ing = ing
                        det.prod_id = p['id']
                        det.cant = int(p['cant'])
                        det.diferencia = det.cant
                        det.price = float(p['cost'])
                        det.subtotal = float(det.price) * int(det.cant)
                        det.save()
                        det.prod.cost = det.price
                        det.prod.price = det.price
                        det.prod.save()
                    ing.get_totals()
                    data['resp'] = True
            elif action == 'details':
                data = []
                type = request.POST['type']
                if type == 'distribucion':
                    for i in Inventory.objects.filter(ing=request.POST['id']):
                        data.append({
                            'id': i.id,
                            'name': i.prod.name,
                            'cant': i.diferencia,
                            'c': i.cant,
                            'cant_dev': 0,
                            'state': i.estado
                        })
                elif type == 'products':
                    data = [[
                        a.id, a.prod.name,
                        a.price_format(), a.cant,
                        a.subtotal_format()
                    ] for a in Inventory.objects.filter(
                        ing_id=request.POST['id'])]
            elif action == 'load':
                data = [[
                    i.id,
                    [[e.first_name + ' ' + e.last_name]
                     for e in User.objects.filter(pk=i.usuario_id)],
                    i.prov.name,
                    Inventory.objects.filter(ing=i).count(),
                    i.date_joined_format(),
                    i.subtotal_format(),
                    i.iva_format(),
                    i.total_format(), i.estado
                ] for i in Ingress.objects.filter(
                    usuario_id__bodega_id=request.user.bodega_id)]
            elif action == 'distr_products':
                items = json.loads(request.POST['items'])
                for i in items:
                    cant_dev = int(i['cant'])
                    if i['state'] and cant_dev > 0:
                        cant = int(i['cant_dev'])
                        det = Inventory.objects.get(pk=i['id'])
                        det.diferencia -= cant
                        det.estado = True
                        prod = Product.objects.get(pk=det.prod_id)
                        prod.stock += cant
                        prod.save()
                        det.save()
                        Ingress.objects.filter(pk=det.ing_id).update(
                            estado=True)
                data['resp'] = True
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 27
0
def change_profile(request):
    data = get_module_options(request)
    if request.method == 'GET':
        template = ""
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'users/users_change_password_frm.html'
            if action == 'change_password':
                data['form'] = UserForm()
                data['title'] = 'Cambio de contraseña'
                data['button'] = 'Cambiar Clave'
            elif action == 'personal_information':
                model = User.objects.get(pk=request.user.id)
                data['form'] = UserForm(instance=model,
                                        initial={
                                            'id': model.id,
                                            'groups': model.groups.filter()
                                        },
                                        type='profile')
                data['title'] = 'Edición de Usuario'
                data['button'] = 'Editar Usuario'
                template = 'users/users_change_profile_frm.html'
            else:
                return HttpResponseRedirect(HOME)
        return render(request, template, data)
    elif 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'repeated':
                type = request.POST['type']
                id = request.POST['id']
                obj = request.POST['obj']
                if type == 'dni':
                    if id == 0:
                        if User.objects.filter(dni__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if User.objects.filter(dni__iexact=obj).exclude(id=id):
                            return JsonResponse({'valid': 'false'})
                elif type == 'email':
                    if id == 0:
                        if User.objects.filter(email__iexact=obj):
                            return JsonResponse({'valid': 'false'})
                    else:
                        if User.objects.filter(email__iexact=obj).exclude(
                                id=id):
                            return JsonResponse({'valid': 'false'})
                return JsonResponse({'valid': 'true'})
            elif action == 'change_password':
                user = User.objects.get(id=request.user.id)
                user.set_password(request.POST['password'])
                user.save()
                data['resp'] = True
            elif action == 'personal_information':
                model = User.objects.get(pk=request.user.id)
                f = UserForm(request.POST,
                             request.FILES,
                             instance=model,
                             type="profile")
                if f.is_valid():
                    form = f.save(commit=True)
                    form.username = form.generate_username()
                    form.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 28
0
def ingress_report(request):
    data = get_module_options(request)
    if request.method == 'GET':
        data['title'] = 'Reporte de Ingresos'
        data['form'] = ReportForm(request.user.bodega_id)
        return render(request, 'ingress_report/ingress_report_rp.html', data)
    elif request.method == 'POST':
        filtro = request.POST['filter']
        month = request.POST['month']
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        year = request.POST['year']
        provs = request.POST['provs']
        prod = request.POST.getlist("prod[]")
        data = []
        if month == "" and filtro == '3':
            filtro = '2'
        try:
            items = Product.objects.filter(bodega=request.user.bodega_id)
            # items = Ingress.objects.filter(usuario_id__bodega_id=request.user.bodega_id)
            if len(prod):
                for y in prod:
                    items = Product.objects.filter(
                        bodega=request.user.bodega_id)
                    items = items.filter(id=y)
                    if filtro == '1':
                        for i in items:
                            inv = Inventory.objects.filter(
                                prod__id=i.id,
                                ing__date_joined__range=[start_date, end_date])
                            if len(provs):
                                inv = inv.filter(ing__prov_id=provs)
                            cantidad = 0
                            total = 0
                            material = ""
                            for x in inv:
                                cantidad += int(x.cant - x.diferencia)
                                total += float(x.subtotal_format())
                                material = x.prod.name
                                data.append([
                                    x.id, x.ing.prov.name, x.prod.name,
                                    x.ing.date_joined_format(),
                                    x.cant - x.diferencia,
                                    x.subtotal_format(),
                                    i.get_sales()
                                ])
                            if len(inv) > 1:
                                data.append([
                                    '-------', '-------', material, '-------',
                                    cantidad,
                                    format(total, '.2f')
                                ])

                    elif filtro == '2':
                        for i in items:
                            inv = Inventory.objects.filter(
                                prod__id=i.id, ing__date_joined__year=year)
                            if len(provs):
                                inv = inv.filter(ing__prov_id=provs)
                            cantidad = 0
                            total = 0
                            material = ""
                            for x in inv:
                                cantidad += int(x.cant - x.diferencia)
                                total += float(x.subtotal_format())
                                material = x.prod.name
                                data.append([
                                    x.id, x.ing.prov.name, x.prod.name,
                                    x.ing.date_joined_format(),
                                    x.cant - x.diferencia,
                                    x.subtotal_format(),
                                    i.get_sales()
                                ])
                            if len(inv) > 1:
                                data.append([
                                    '-------', '-------', material, '-------',
                                    cantidad,
                                    format(total, '.2f')
                                ])

                    elif filtro == '3':
                        for i in items:
                            inv = Inventory.objects.filter(
                                prod__id=i.id,
                                ing__date_joined__year=year,
                                ing__date_joined__month=month)
                            if len(provs):
                                inv = inv.filter(ing__prov_id=provs)
                            cantidad = 0
                            total = 0
                            material = ""
                            for x in inv:
                                cantidad += int(x.cant - x.diferencia)
                                total += float(x.subtotal_format())
                                material = x.prod.name
                                data.append([
                                    x.id, x.ing.prov.name, x.prod.name,
                                    x.ing.date_joined_format(),
                                    x.cant - x.diferencia,
                                    x.subtotal_format(),
                                    i.get_sales()
                                ])
                            if len(inv) > 1:
                                data.append([
                                    '-------', '-------', material, '-------',
                                    cantidad,
                                    format(total, '.2f')
                                ])

                    else:
                        for i in items:
                            inv = Inventory.objects.filter(prod__id=i.id)
                            if len(provs):
                                inv = inv.filter(ing__prov_id=provs)
                            cantidad = 0
                            total = 0
                            material = ""
                            for x in inv:
                                cantidad += int(x.cant - x.diferencia)
                                total += float(x.subtotal_format())
                                material = x.prod.name
                                data.append([
                                    x.id, x.ing.prov.name, x.prod.name,
                                    x.ing.date_joined_format(),
                                    x.cant - x.diferencia,
                                    x.subtotal_format(),
                                    i.get_sales()
                                ])
                            if len(inv) > 1:
                                data.append([
                                    '-------', '-------', material, '-------',
                                    cantidad,
                                    format(total, '.2f')
                                ])

            else:
                if filtro == '1':
                    for i in items:
                        inv = Inventory.objects.filter(
                            prod__id=i.id,
                            ing__date_joined__range=[start_date, end_date])
                        if len(provs):
                            inv = inv.filter(ing__prov_id=provs)
                        cantidad = 0
                        total = 0
                        material = ""
                        for x in inv:
                            cantidad += int(x.cant - x.diferencia)
                            total += float(x.subtotal_format())
                            material = x.prod.name
                            data.append([
                                x.id, x.ing.prov.name, x.prod.name,
                                x.ing.date_joined_format(),
                                x.cant - x.diferencia,
                                x.subtotal_format(),
                                i.get_sales()
                            ])
                        if len(inv) > 1:
                            data.append([
                                '-------', '-------', material, '-------',
                                cantidad,
                                format(total, '.2f')
                            ])

                elif filtro == '2':
                    for i in items:
                        inv = Inventory.objects.filter(
                            prod__id=i.id, ing__date_joined__year=year)
                        if len(provs):
                            inv = inv.filter(ing__prov_id=provs)
                        cantidad = 0
                        total = 0
                        material = ""
                        for x in inv:
                            cantidad += int(x.cant - x.diferencia)
                            total += float(x.subtotal_format())
                            material = x.prod.name
                            data.append([
                                x.id, x.ing.prov.name, x.prod.name,
                                x.ing.date_joined_format(),
                                x.cant - x.diferencia,
                                x.subtotal_format(),
                                i.get_sales()
                            ])
                        if len(inv) > 1:
                            data.append([
                                '-------', '-------', material, '-------',
                                cantidad,
                                format(total, '.2f')
                            ])

                elif filtro == '3':
                    for i in items:
                        inv = Inventory.objects.filter(
                            prod__id=i.id,
                            ing__date_joined__year=year,
                            ing__date_joined__month=month)
                        if len(provs):
                            inv = inv.filter(ing__prov_id=provs)
                        cantidad = 0
                        total = 0
                        material = ""
                        for x in inv:
                            cantidad += int(x.cant - x.diferencia)
                            total += float(x.subtotal_format())
                            material = x.prod.name
                            data.append([
                                x.id, x.ing.prov.name, x.prod.name,
                                x.ing.date_joined_format(),
                                x.cant - x.diferencia,
                                x.subtotal_format(),
                                i.get_sales()
                            ])
                        if len(inv) > 1:
                            data.append([
                                '-------', '-------', material, '-------',
                                cantidad,
                                format(total, '.2f')
                            ])

                else:
                    for i in items:
                        inv = Inventory.objects.filter(prod__id=i.id)
                        if len(provs):
                            inv = inv.filter(ing__prov_id=provs)
                        cantidad = 0
                        total = 0
                        material = ""
                        for x in inv:
                            cantidad += int(x.cant - x.diferencia)
                            total += float(x.subtotal_format())
                            material = x.prod.name
                            data.append([
                                x.id, x.ing.prov.name, x.prod.name,
                                x.ing.date_joined_format(),
                                x.cant - x.diferencia,
                                x.subtotal_format(),
                                i.get_sales()
                            ])
                        if len(inv) > 1:
                            data.append([
                                '-------', '-------', material, '-------',
                                cantidad,
                                format(total, '.2f')
                            ])
            '''
            if len(provs):
                items = items.filter(prov_id=provs)
            if filter == '1':
                items = items.filter(date_joined__range=[start_date, end_date])
            elif filter == '2':
                items = items.filter(date_joined__year=year)
            elif filter == '3':
                items = items.filter(date_joined__year=year, date_joined__month=month)



            subtotal = items.aggregate(resp=Coalesce(Sum('subtotal'), 0.00))['resp']
            dscto = items.aggregate(resp=Coalesce(Sum('dscto'), 0.00))['resp']
            iva = items.aggregate(resp=Coalesce(Sum('iva'), 0.00))['resp']
            total = items.aggregate(resp=Coalesce(Sum('total'), 0.00))['resp']
            data = [[i.id, i.prov.name, '-----------', i.date_joined_format(), i.subtotal_format(), i.total_format()]
                    for i in items]
            data.append(['-------', '-------', '-------', '-------', format(subtotal, '.2f'), format(total, '.2f')])
            '''
        except Exception as e:
            data = {}
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 29
0
def company(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            template = 'company/company_frm.html'
            objs = Company.objects.filter()
            data['action'] = action
            if action == 'new':
                if not objs.exists():
                    data['form'] = CompanyForm()
                    data['title'] = 'Registro de la Empresa'
                    data['button'] = 'Guardar Información'
                else:
                    data['action'] = 'edit'
                    model = Company.objects.first()
                    data['obj'] = model
                    data['form'] = CompanyForm(instance=model,
                                               initial={'id': model.id})
                    data['title'] = 'Edición de la Empresa'
                    data['button'] = 'Editar Información'
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Company.objects.all().order_by('name')
            data['title'] = 'Información de la Empresa'
            data['button'] = 'Adjuntar Información'
            template = 'company/company_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        action = request.POST['action']
        data = {}
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = CompanyForm(request.POST, request.FILES)
                elif action == 'edit':
                    f = CompanyForm(
                        request.POST,
                        request.FILES,
                        instance=Company.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    f.save()
                    #model = Company.objects.get(pk=1)
                    #model.generate_img_base64()
                    #model.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Company.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)
Esempio n. 30
0
def document(request):
    data = get_module_options(request)
    src = data['model'].url
    if request.method == 'GET':
        if 'action' in request.GET:
            action = request.GET['action']
            data['action'] = action
            template = 'document/document_fr.html'
            if action == 'new':
                data['form'] = DocumentForm()
                data['title'] = 'Nuevo Documento'
                data['button'] = 'Guardar Documento'
            elif action == 'edit' and 'id' in request.GET:
                id = request.GET['id']
                if Document.objects.filter(pk=id).exists():
                    model = Document.objects.get(pk=id)
                    data['form'] = DocumentForm(instance=model,
                                                initial={'id': model.id})
                    data['title'] = 'Edición de un Documento'
                    data['button'] = 'Editar Documento'
                else:
                    return HttpResponseRedirect(src)
            else:
                return HttpResponseRedirect(src)
        else:
            data['items'] = Document.objects.all().order_by('description')
            data['title'] = 'Listado de Documentos'
            data['button'] = 'Nuevo Documento'
            template = 'document/document_dt.html'
        return render(request, template, data)
    elif request.method == 'POST' and 'action' in request.POST:
        data = {}
        action = request.POST['action']
        try:
            if action == 'new' or action == 'edit':
                if action == 'new':
                    f = DocumentForm(request.POST, request.FILES)
                elif action == 'edit':
                    f = DocumentForm(
                        request.POST,
                        request.FILES,
                        instance=Document.objects.get(pk=request.POST['id']))
                if f.is_valid():
                    p = f.save()
                    p.bodega_id = request.user.bodega_id
                    p.save()
                    data['resp'] = True
                else:
                    data['resp'] = False
                    data['error'] = f.errors
            elif action == 'delete':
                Document.objects.get(pk=request.POST['id']).delete()
                data['resp'] = True
            elif action == 'load':
                data = [[
                    i.id,
                    i.date_joined_format(),
                    i.get_image(), i.description, True
                ] for i in Document.objects.filter(
                    bodega_id=request.user.bodega_id)]
            else:
                data['error'] = 'Ha ocurrido un error'
                data['resp'] = False
        except Exception as e:
            data['error'] = str(e)
            data['resp'] = False
        return HttpResponse(json.dumps(data), content_type='application/json')
    else:
        return HttpResponseRedirect(HOME)