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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)