def listar_transacciones(request, id): listTransaccion = list() # creamos la lista que enviaremos al contexto list_interna = list( ) # me permitira guardar en la primera posicion la transaccion, y en la segunda posicion una lista de transaccion_cuenta cv = 0 periodo_existe = Periodo.objects.filter(id=id).exists() if periodo_existe: periodo = Periodo.objects.get(id=id) transaccion_existe = Transaccion.objects.filter( periodo_transaccion=periodo).exists() if transaccion_existe: transacciones = Transaccion.objects.filter( periodo_transaccion=periodo ) #traemos las transacciones del periodo en cuestion for transaccion in transacciones: list_interna.append(transaccion) detalle_existe = Transaccion_Cuenta.objects.filter( transaccion_tc=transaccion).exists() if detalle_existe: detalle_transacciones = Transaccion_Cuenta.objects.filter( transaccion_tc=transaccion) list_interna.append(detalle_transacciones) listTransaccion.append(list_interna) list_interna = [] if request.method == 'POST': #Prueba para el metodo pesp if 'btnPeps' in request.POST: idPeriodo = 1 fecha = time.strftime("%Y-%m-%d") id_cuenta = 19 cant = 50 precio_u = 1.10 tipo = False cv = list() cv = peps(idPeriodo, fecha, id_cuenta, cant, precio_u, tipo, cv) for x in cv: print(x[0]) print(x[1]) print(x[2]) return redirect('listar_transacciones', id=id) contexto = {'listTransaccion': listTransaccion} return render(request, 'transaccion/listar_transacciones.html', contexto)
def compra_inventario(request): cuentas = CuentaHija.objects.select_related().all() periodo = Periodo.objects.latest('id') form1 = TransaccionForm() if request.is_ajax(): iniciar_transaccion(request, form1) if 'guardar' in request.POST: t = Transaccion.objects.latest('id') # Cargado c = CuentaHija.objects.get(nombre_cuenta=request.POST['cuenta']) totalCompra = request.POST['total'] iva = request.POST['iva'] precio_uni = request.POST['precio_unit'] cant = request.POST['cantidad'] cv = list() cv = peps(periodo.id, t.fecha_transaccion, c.id, int(cant), float(precio_uni), False, cv) tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=c, debe_tc=Decimal(totalCompra), haber_tc=Decimal("0.0"), ) tran.save() aumentar_saldo(c.id, totalCompra, True) tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=24), debe_tc=Decimal(iva), haber_tc=Decimal("0.0"), ) tran1.save() aumentar_saldo(24, iva, True) if 'efectivo0' in request.POST and 'cxp0' in request.POST: if request.POST['efectivo0'] == 'on' and request.POST[ 'cxp0'] == 'on': efectivo = request.POST['efectivo'] cxp = request.POST['cxp'] tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=1), debe_tc=Decimal("0.0"), haber_tc=Decimal(efectivo), ) tran.save() aumentar_saldo(1, efectivo, False) tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=137), debe_tc=Decimal("0.0"), haber_tc=Decimal(cxp), ) tran1.save() aumentar_saldo(137, cxp, False) else: if 'efectivo0' in request.POST: if request.POST['efectivo0'] == 'on': efectivo = request.POST['efectivo'] tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=1), debe_tc=Decimal("0.0"), haber_tc=Decimal(efectivo), ) tran.save() aumentar_saldo(1, efectivo, False) else: cxp = request.POST['cxp'] tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=137), debe_tc=Decimal("0.0"), haber_tc=Decimal(cxp), ) tran1.save() aumentar_saldo(137, cxp, False) return redirect('transaccion:transacciones') contexto = {'form': form1, 'periodo': periodo, 'cuentas': cuentas} return render(request, 'transaccion/transaccion_compra.html', contexto)
def venta(request): cuentas = CuentaHija.objects.select_related().all() periodo = Periodo.objects.latest('id') error = False form1 = TransaccionForm() if request.is_ajax(): iniciar_transaccion(request, form1) if 'guardar' in request.POST: t = Transaccion.objects.latest('id') # Cargado c = CuentaHija.objects.get(nombre_cuenta=request.POST['cuenta']) cant = request.POST['cantidad'] porcentaje = request.POST['porcentaje'] cv = list() cv = peps(periodo.id, t.fecha_transaccion, c.id, int(cant), 0, True, cv) costo = 0 if cv: for v in cv: costo = costo + v[2] tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=c, haber_tc=Decimal(costo), debe_tc=Decimal("0.0"), ) tran.save() aumentar_saldo(c.id, costo, False) tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=133), haber_tc=Decimal("0.0"), debe_tc=Decimal(costo), ) tran1.save() aumentar_saldo(133, costo, True) total = (costo * float(porcentaje)) + costo iva = total * 0.13 tran2 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=134), haber_tc=Decimal(total), debe_tc=Decimal("0.0"), ) tran2.save() aumentar_saldo(134, total, False) tran3 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=97), haber_tc=Decimal(iva), debe_tc=Decimal("0.0"), ) tran3.save() aumentar_saldo(97, iva, False) cuenta = request.POST['cargo'] c = CuentaHija.objects.get(id=int(cuenta)) if c.id == 1: tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=1), haber_tc=Decimal("0.0"), debe_tc=total + iva, ) tran.save() aumentar_saldo(1, total + iva, True) if c.id == 138: tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=138), haber_tc=Decimal("0.0"), debe_tc=total + iva, ) tran.save() aumentar_saldo(138, total + iva, True) return redirect('transaccion:transacciones') else: error = True contexto = { 'form': form1, 'periodo': periodo, 'cuentas': cuentas, 'error': error } contexto = { 'form': form1, 'periodo': periodo, 'cuentas': cuentas, 'error': error } return render(request, 'transaccion/transaccion_venta.html', contexto)
def seguimiento(request, id_programacion): procesos_pendientes = Programacion_Proceso.objects.filter(programacion__id = id_programacion, terminado = False).order_by('id')[:1] materialesLista = CuentaHija.objects.filter(codigo_padre='1105') | CuentaHija.objects.filter(codigo_padre='1104') materiales = [] for x in materialesLista: if x.debe > 0 and (x.debe - x.haber) > 0: materiales.append(x) pass pass cargos = Cargo.objects.all() if 'btnTerminarProceso' in request.POST: #Se procede a saldar cuenta de proceso finalizado programacion_proceso = request.POST['idProgramacionProcesofrm'] periodo = Programacion_Proceso.objects.get(id = programacion_proceso).programacion.periodo_programacion fecha = time.strftime("%Y-%m-%d") transaccion = Transaccion(fecha_transaccion = fecha, descripcion_transaccion = "Saldando cuenta de proceso finalizado", periodo_transaccion = periodo) transaccion.save() prog_proc = request.POST['idProgramacionProcesofrm'] cuenta_proceso = Programacion_Proceso.objects.get(id = prog_proc).proceso.cuenta_proceso total = cuenta_proceso.debe total = round(total,2) if Programacion_Proceso.objects.get(id = prog_proc).proceso.id < 7: siguiente_proc_name = Programacion_Proceso.objects.get(id = prog_proc).proceso.proceso_siguiente cuenta_proceso_siguiente = Proceso.objects.get(nombre_proceso = siguiente_proc_name).cuenta_proceso transaccion_saldar = Transaccion_Cuenta(debe_tc = 0.00, haber_tc = total, cuenta_tc = cuenta_proceso, transaccion_tc = transaccion) transaccion_cargar = Transaccion_Cuenta(debe_tc = total, haber_tc = 0.00, cuenta_tc = cuenta_proceso_siguiente, transaccion_tc = transaccion) if transaccion_saldar.haber_tc == transaccion_cargar.debe_tc: transaccion_saldar.save() transaccion_cargar.save() nuevo_haber = total nuevo_debe = total CuentaHija.objects.filter(id = cuenta_proceso.id).update(debe = 0.0, haber = 0.0) CuentaHija.objects.filter(id = cuenta_proceso_siguiente.id).update(debe = nuevo_debe) Programacion_Proceso.objects.filter(id = programacion_proceso).update(terminado = True) prog_proc_obj = Programacion_Proceso.objects.get(id = str(int(programacion_proceso) + 1)) asignacion_mp = Asignar_Materia_Prima(cantidad_mp = 0.00, monto = total, nombre_mp = None, proceso_prog_mp = prog_proc_obj) asignacion_mp.save() pass pass else: pt = Programacion_Proceso.objects.get(id = prog_proc).programacion.producto_programacion cuenta_inventario_pt = CuentaHija.objects.get(codigo_cuenta = pt) transaccion_saldar = Transaccion_Cuenta(debe_tc = 0.00, haber_tc = total, cuenta_tc = cuenta_proceso, transaccion_tc = transaccion) transaccion_cargar = Transaccion_Cuenta(debe_tc = total, haber_tc = 0.00, cuenta_tc = cuenta_inventario_pt, transaccion_tc = transaccion) if transaccion_saldar.haber_tc == transaccion_cargar.debe_tc: transaccion_saldar.save() transaccion_cargar.save() nuevo_haber = total nuevo_debe = cuenta_inventario_pt.debe + total CuentaHija.objects.filter(id = cuenta_proceso.id).update(debe = 0.00, haber = 0.00) CuentaHija.objects.filter(id = cuenta_inventario_pt.id).update(debe = nuevo_debe) Programacion_Proceso.objects.filter(id = programacion_proceso).update(terminado = True) progra = Programacion_Proceso.objects.get(id = programacion_proceso).programacion cantidad = float(Programacion_Proceso.objects.get(id = programacion_proceso).programacion.cantidad_programacion) costo_unitario = float(total)/cantidad costo_unitario = round(costo_unitario,2) Programacion.objects.filter(id = progra.id).update(estado_programacion = True, costo_unitario = costo_unitario) peps(progra.periodo_programacion.id, date.today(), cuenta_inventario_pt.id,cantidad,costo_unitario,False,[]) pass lista_programacion = Programacion.objects.all() return render(request,'contabilidad_costos/programacion_list.html', {'programaciones':lista_programacion}) pass return render(request,'contabilidad_costos/seguimiento.html', {'procesos_pendientes':procesos_pendientes, 'materiales':materiales, 'cargos':cargos} )
def get(self, request, *args, **kwargs): if request.GET['transaccion'] == 'CargarMP': #Se obtendra el monto, a traves de kardex programacion_proceso = request.GET['programacion_proceso'] periodo_obj = Programacion_Proceso.objects.get(id = programacion_proceso).programacion.periodo_programacion periodo= periodo_obj.id producto = request.GET['producto'] cantidad = request.GET['cantidad'] fecha = time.strftime("%Y-%m-%d") cv = list() costoMP = peps(periodo, fecha, producto,int(cantidad),0, True, cv) monto = 0.00 if costoMP == []: data = [] return HttpResponse(data) pass else: #Aqui iva ajuste_peps() #Se creara la transaccion para luego cargar y abonar las cuentas correspondientes for x in costoMP: monto = monto + x[2] pass monto = round(monto,2) fecha = time.strftime("%Y-%m-%d") transaccion = Transaccion(fecha_transaccion = fecha, descripcion_transaccion = "Cargando materia prima al proceso productivo", periodo_transaccion = periodo_obj) transaccion.save() cuenta_mp = CuentaHija.objects.get(id = producto) cuenta_proceso = Programacion_Proceso.objects.get(id = programacion_proceso).proceso.cuenta_proceso transaccion_mp = Transaccion_Cuenta(debe_tc = 0.00, haber_tc = monto, cuenta_tc = cuenta_mp, transaccion_tc = transaccion) transaccion_proceso = Transaccion_Cuenta(debe_tc = monto, haber_tc = 0.00, cuenta_tc = cuenta_proceso, transaccion_tc = transaccion) #Se comprobara partida doble y luego aplicar cambios en cuentas hijas if transaccion_mp.haber_tc == transaccion_proceso.debe_tc: transaccion_mp.save() transaccion_proceso.save() nuevo_haber = cuenta_mp.haber + monto nuevo_debe = cuenta_proceso.debe + monto CuentaHija.objects.filter(id = cuenta_mp.id).update(haber = nuevo_haber) CuentaHija.objects.filter(id = cuenta_proceso.id).update(debe = nuevo_debe) prog_proc_obj = Programacion_Proceso.objects.get(id = programacion_proceso) asignacion_mp = Asignar_Materia_Prima(cantidad_mp = float(cantidad), monto = monto, nombre_mp = cuenta_mp, proceso_prog_mp = prog_proc_obj) asignacion_mp.save() #Se alistara JSON para reflejar datos en la tabla de mp data = serializers.serialize('json',[asignacion_mp],fields = ('proceso_prog_mp','nombre_mp','cantidad_mp','monto')) return HttpResponse(data, content_type = 'application/json') pass pass elif request.GET['transaccion'] == 'CargarMOD': programacion_proceso = request.GET['programacion_proceso'] periodo = Programacion_Proceso.objects.get(id = programacion_proceso).programacion.periodo_programacion cargoSueldo = request.GET['cargo'] cargo = cargoSueldo.split("/")[0] sueldo = Decimal((cargoSueldo.split("/")[1]+"0").replace(",","."))/720 sueldo = round(sueldo,2) cantidadEmpleados = int(request.GET['cantidadEmpleados']) cantidadHRSempleado = int(request.GET['cantidadHRSempleado']) monto = float(sueldo*cantidadEmpleados*cantidadHRSempleado) monto = round(monto,2) fecha = time.strftime("%Y-%m-%d") transaccion = Transaccion(fecha_transaccion = fecha, descripcion_transaccion = "Cargando mano de obra a proceso", periodo_transaccion = periodo) transaccion.save() cuenta_sueldo = CuentaHija.objects.get(codigo_cuenta = 410101) codigo_cuenta = Programacion_Proceso.objects.get(id = programacion_proceso).proceso.cuenta_proceso.codigo_cuenta cuenta_proceso = CuentaHija.objects.get(codigo_cuenta = codigo_cuenta) transaccion_sueldo = Transaccion_Cuenta(debe_tc = 0.00, haber_tc = monto, cuenta_tc = cuenta_sueldo, transaccion_tc = transaccion) transaccion_proceso = Transaccion_Cuenta(debe_tc = monto, haber_tc = 0.00, cuenta_tc = cuenta_proceso, transaccion_tc = transaccion) if transaccion_proceso.debe_tc == transaccion_sueldo.haber_tc: transaccion_sueldo.save() transaccion_proceso.save() nuevo_haber = cuenta_sueldo.haber + monto nuevo_debe = cuenta_proceso.debe + monto CuentaHija.objects.filter(id = cuenta_sueldo.id).update(haber = nuevo_haber) CuentaHija.objects.filter(id = cuenta_proceso.id).update(debe = nuevo_debe) prog_proc = Programacion_Proceso.objects.get(id = programacion_proceso) cargo_obj = Cargo.objects.get(id = cargo) asignacion_mo = Asignar_Mano_Obra(cantidad_horas_empleado = float(cantidadHRSempleado), cantidad_empleados = cantidadEmpleados, cargo_mo = cargo_obj, proceso_prog_mo = prog_proc, monto = monto) asignacion_mo.save() data = serializers.serialize('json',[asignacion_mo],fields = ('cantidad_horas_empleado','cantidad_empleados','cargo_mo','proceso_prog_mo', 'monto')) return HttpResponse(data, content_type = 'application/json') pass elif request.GET['transaccion'] == 'CargarCIF': programacion_proceso = request.GET['programacion_proceso'] baseAsignacion = request.GET['baseAsignacion'] porcentajeAsignacion = request.GET['porcentajeAsignacion'] #Se procedera a calcular los montos de mod, mp y cp prog_proc_obj = Programacion_Proceso.objects.get(id = programacion_proceso) asignaciones_mp = Asignar_Materia_Prima.objects.filter(proceso_prog_mp = prog_proc_obj) asignaciones_mod = Asignar_Mano_Obra.objects.filter(proceso_prog_mo = prog_proc_obj) monto_mp = 0.00 monto_mod = 0.00 for x in asignaciones_mp: monto_mp = monto_mp + x.monto pass for x in asignaciones_mod: monto_mod = monto_mod + x.monto pass monto_cp = monto_mp + monto_mod total_cif = 0.00 #Se calculara los CIF if baseAsignacion == 'mod': total_cif = monto_mod*float(porcentajeAsignacion) pass elif baseAsignacion == 'mp': total_cif = monto_mp*float(porcentajeAsignacion) pass elif baseAsignacion == 'cp': total_cif = monto_cp*float(porcentajeAsignacion) pass #Se procedera a realizar las transacciones total_cif = round(total_cif,2) fecha = time.strftime("%Y-%m-%d") periodo = Programacion_Proceso.objects.get(id = programacion_proceso).programacion.periodo_programacion transaccion = Transaccion(fecha_transaccion = fecha, descripcion_transaccion = "Cargando CIF a proceso", periodo_transaccion = periodo) transaccion.save() cuenta_variacion = CuentaHija.objects.get(codigo_cuenta = 610101) cuenta_proceso = Programacion_Proceso.objects.get(id = programacion_proceso).proceso.cuenta_proceso transaccion_proceso = Transaccion_Cuenta(debe_tc = total_cif, haber_tc = 0.00, cuenta_tc = cuenta_proceso, transaccion_tc = transaccion) transaccion_variacion = Transaccion_Cuenta(debe_tc = 0.00, haber_tc = total_cif, cuenta_tc = cuenta_variacion, transaccion_tc = transaccion) #Se procede a comprobar partida doble y cerrar transacciones if transaccion_proceso.debe_tc == transaccion_variacion.haber_tc: transaccion_proceso.save() transaccion_variacion.save() nuevo_haber = cuenta_variacion.haber + total_cif nuevo_debe = cuenta_proceso.debe + total_cif CuentaHija.objects.filter(id = cuenta_variacion.id).update(haber = nuevo_haber) CuentaHija.objects.filter(id = cuenta_proceso.id).update(debe = nuevo_debe) prog_proc = Programacion_Proceso.objects.get(id = programacion_proceso) asignacion_cif = Asignar_Cif(base_cif = baseAsignacion, porcentaje_cif = float(porcentajeAsignacion), proceso_prog_cif = prog_proc, monto = total_cif) asignacion_cif.save() data = serializers.serialize('json',[asignacion_cif],fields = ('base_cif','porcentaje_cif','proceso_prog_cif','monto')) return HttpResponse(data, content_type = 'application/json') pass pass data = serializers.serialize('json',[]) return HttpResponse(data, content_type = 'application/json')
def devolucion_compra(request): cuentas = CuentaHija.objects.select_related().all() periodo = Periodo.objects.latest('id') error = False if 'guardar' in request.POST: t = Transaccion( periodo_transaccion=periodo, fecha_transaccion=request.POST["fecha_transaccion"], descripcion_transaccion=request.POST["descripcion_transaccion"], ) t.save() # Cargado c = CuentaHija.objects.get(nombre_cuenta=request.POST['cuenta']) totalCompra = request.POST['total'] iva = request.POST['iva'] precio_uni = request.POST['precio_unit'] cant = request.POST['cantidad'] cv = list() cv = peps(periodo.id, t.fecha_transaccion, c.id, int(cant), float(precio_uni), True, cv) if cv: tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=c, haber_tc=Decimal(totalCompra), debe_tc=Decimal("0.0"), ) tran.save() aumentar_saldo(c.id, totalCompra, False) tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=24), haber_tc=Decimal(iva), debe_tc=Decimal("0.0"), ) tran1.save() aumentar_saldo(24, iva, False) if 'efectivo0' in request.POST and 'cxp0' in request.POST: if request.POST['efectivo0'] == 'on' and request.POST[ 'cxp0'] == 'on': efectivo = request.POST['efectivo'] cxp = request.POST['cxp'] tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=1), haber_tc=Decimal("0.0"), debe_tc=Decimal(efectivo), ) tran.save() aumentar_saldo(1, efectivo, True) tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=137), haber_tc=Decimal("0.0"), debe_tc=Decimal(cxp), ) tran1.save() aumentar_saldo(137, cxp, True) else: if 'efectivo0' in request.POST: if request.POST['efectivo0'] == 'on': efectivo = request.POST['efectivo'] tran = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=1), haber_tc=Decimal("0.0"), debe_tc=Decimal(efectivo), ) tran.save() aumentar_saldo(1, efectivo, True) else: cxp = request.POST['cxp'] tran1 = Transaccion_Cuenta( transaccion_tc=t, cuenta_tc=CuentaHija.objects.get(id=137), haber_tc=Decimal("0.0"), debe_tc=Decimal(cxp), ) tran1.save() aumentar_saldo(137, cxp, True) return redirect('transaccion:transacciones') else: error = True contexto = {'periodo': periodo, 'cuentas': cuentas, 'error': error} contexto = {'periodo': periodo, 'cuentas': cuentas, 'error': error} return render(request, 'transaccion/transaccion_devo_compra.html', contexto)