def crear(request): data = {} if request.method == 'POST': datos = json.loads(request.POST['compras']) if datos: with transaction.atomic(): c = Compra() c.fecha_compra = datos['fecha_compra'] c.proveedor_id = datos['proveedor'] c.empleado_id = request.user.id c.subtotal = float(datos['subtotal']) c.iva = float(datos['iva']) c.total = float(datos['total']) c.save() for i in datos['productos']: dv = Detalle_compra() dv.compra_id = c.id dv.producto_id = i['id'] dv.cantidad = int(i['cantidad']) dv.subtotal = int(i['subtotal']) dv.save() x = Producto.objects.get(pk=i['id']) x.stock = x.stock + int(i['cantidad']) x.save() data['id'] = c.id data['resp'] = True else: data['resp'] = False data['error'] = "Datos Incompletos" return HttpResponse(json.dumps(data), content_type="application/json")
def post(self, request, *args, **kwargs): cuenta = str(request.POST['numero_de_cuenta']) ping = str(request.POST['ping']) context = self.get_context_data(**kwargs) if len(cuenta) == 16 and len(ping) == 4: time = datetime.datetime.now() comprador = self.request.user tienda = context['tienda'] stock = context['stock'] cantidad = context['cantidad'] if stock.cantidad - int(cantidad) < 0: context['error_message'] = f'Solo quedan {stock.cantidad} de unidades de este producto en la tienda' return self.render_to_response(context) Compra(fecha_hora=time, tienda=tienda, comprador=comprador, producto=stock.producto, cantidad=cantidad).save() form = StockForm({'cantidad': stock.cantidad - int(cantidad)}, instance=stock) if form.is_valid(): form.save() return redirect(self.get_success_url()) context['error_message'] = 'Clave o numero de cuenta incorrecto' return self.render_to_response(context)
def __pay(self, pedido, **kwargs): fecha = datetime.datetime.now() comprador = pedido.usuario tienda = pedido.tienda stock = pedido.stock cantidad = pedido.cantidad if stock.cantidad - int(cantidad) < 0: context = self.get_context_data(**kwargs) context['error_message'] = f'Esta pidiendo mas unidades de {stock.producto.nombre} que las que hay ' \ f'en la tienda {tienda.nombre}' return self.render_to_response(context) Compra(fecha_hora=fecha, tienda=tienda, comprador=comprador, producto=stock.producto, cantidad=cantidad).save() form = StockForm({'cantidad': stock.cantidad - cantidad}, instance=stock) if form.is_valid(): form.save()
def post(self, request, *args, **kwargs): data = {} action = request.POST['action'] try: if action == 'add': datos = json.loads(request.POST['compras']) if datos: with transaction.atomic(): c = Compra() c.fecha_compra = datos['fecha'] c.comprobante = int(datos['comprobante']) c.proveedor_id = int(datos['proveedor']) c.subtotal = float(datos['subtotal']) c.tasa_iva = float(datos['tasa_iva']) c.iva_generado = c.subtotal-c.total c.total = float(datos['total']) c.save() for i in datos['productos']: dv = Detalle_compra() dv.compra_id = c.id dv.producto_id = int(i['id']) dv.precio_compra = float(i['precio']) dv.precio_venta = float(i['pvp']) dv.cantidad = int(i['cantidad']) dv.stock_compra = int(i['cantidad']) dv.stock_actual = int(i['cantidad']) dv.subtotal = float(i['subtotal']) dv.save() data['id'] = c.id data['resp'] = True else: data['resp'] = False data['error'] = "Datos Incompletos" elif action == 'get_prov': data = [] id = request.POST['id'] query = Proveedor.objects.get(id=id) data.append(query.toJSON()) else: data['error'] = 'No ha seleccionado ninguna opción' except Exception as e: data['error'] = str(e) return HttpResponse(json.dumps(data), content_type='application/json')
def post(self, request, *args, **kwargs): data = {} action = request.POST['action'] try: if action == 'add': datos = json.loads(request.POST['compras']) if datos: with transaction.atomic(): c = Compra() c.fecha_compra = datos['fecha_compra'] c.proveedor_id = datos['proveedor'] c.user_id = request.user.id c.subtotal = float(datos['subtotal']) c.iva = float(datos['iva']) c.total = float(datos['total']) c.save() for i in datos['productos']: dv = Detalle_compra() dv.compra_id = c.id dv.producto_id = i['id'] dv.cantidad = int(i['cantidad']) dv.subtotal = float(i['subtotal']) x = Producto.objects.get(pk=i['id']) dv.p_compra_actual = float(x.pcp) x.stock += int(i['cantidad']) x.save() dv.save() data['id'] = c.id data['resp'] = True else: data['resp'] = False data['error'] = "Datos Incompletos" elif action == 'list_list': data = [] ids = json.loads(request.POST['ids']) for c in Producto.objects.all().exclude(id__in=ids): data.append(c.toJSON()) elif action == 'search_no_stock': ids = json.loads(request.POST['ids']) data = [] term = request.POST['term'] query = Producto.objects.filter( producto_base__nombre__icontains=term) for a in query.exclude(id__in=ids)[0:10]: result = { 'id': a.id, 'text': str(a.producto_base.nombre) + ' / ' + str(a.presentacion.nombre) } data.append(result) elif action == 'get': data = [] id = request.POST['id'] producto = Producto.objects.filter(pk=id) empresa = Empresa.objects.first() for i in producto: item = i.toJSON() item['cantidad'] = 1 item['subtotal'] = 0.00 item['iva_emp'] = empresa.iva data.append(item) else: data['error'] = 'No ha seleccionado ninguna opción' except Exception as e: data['error'] = str(e) return HttpResponse(json.dumps(data), content_type='application/json')
def post(self, request, *args, **kwargs): data = {} action = request.POST['action'] try: if action == 'add': datos = json.loads(request.POST['compras']) if datos: with transaction.atomic(): c = Compra() c.comprobante = datos['comprobante'] c.fecha_compra = datos['fecha_compra'] c.proveedor_id = datos['proveedor'] c.user_id = request.user.id c.subtotal = float(datos['subtotal']) c.tasa_iva = float(datos['tasa_iva']) / float(100) c.iva = float(datos['iva']) c.total = float(datos['total']) c.jpg = self.base64_file(str(datos['jpg'])) c.save() if datos['medicinas']: for m in datos['medicinas']: dv = Detalle_compra() dv.compra_id = c.id dv.insumo_id = int(m['insumo']['id']) dv.cantidad = int(m['cantidad']) dv.stock_inicial = int(m['cantidad']) dv.stock_actual = int(m['cantidad']) dv.subtotal = float(m['subtotal']) dv.p_compra = float(m['precio']) dv.save() if datos['alimentos']: for a in datos['alimentos']: dv = Detalle_compra() dv.compra_id = c.id dv.insumo_id = int(a['insumo']['id']) dv.cantidad = int(a['cantidad']) dv.stock_inicial = int(a['cantidad']) dv.stock_actual = int(a['cantidad']) dv.subtotal = float(a['subtotal']) dv.p_compra = float(a['precio']) dv.save() data['resp'] = True else: data['resp'] = False data['error'] = "Datos Incompletos" else: data['error'] = 'No ha seleccionado ninguna opción' except Exception as e: data['error'] = str(e) return HttpResponse(json.dumps(data), content_type='application/json')
def post(self, request, *args, **kwargs): data = {} action = request.POST['action'] pk = request.POST['id'] try: if action == 'add': datos = json.loads(request.POST['compras']) if datos: with transaction.atomic(): c = Compra() c.fecha_compra = datos['fecha_compra'] c.comprobante = int(datos['comprobante']) c.proveedor_id = datos['proveedor'] c.user_id = request.user.id c.subtotal = float(datos['subtotal']) c.iva = float(datos['iva']) c.total = float(datos['total']) c.save() for i in datos['productos']: dv = Detalle_compra() dv.compra_id = c.id dv.material_id = i['id'] dv.cantidad = int(i['cantidad']) dv.subtotal = float(i['subtotal']) x = Material.objects.get(pk=i['id']) dv.p_compra_actual = float(x.p_compra) dv.save() mat = Material.objects.get(id=i['id']) mat.stock_actual += int(i['cantidad']) mat.save() data['id'] = c.id data['resp'] = True else: data['resp'] = False data['error'] = "Datos Incompletos" else: data['error'] = 'No ha seleccionado ninguna opción' except Exception as e: data['error'] = str(e) return HttpResponse(json.dumps(data), content_type='application/json')