def leer_db_banulados(): cnx = __conectarse() cursor = cnx.cursor() lista_ventas_anulados = [] sql_header = """ SELECT ventas.id_venta, ventas.fecha_hora, tipodocumento.codigo_sunat, ventas.observaciones_declaracion, ventas.motivo_anulacion, ventas.codigo_cliente FROM comercial.ventas, comercial. tipodocumento WHERE ventas.id_tipodocumento = tipodocumento.id_tipodocumento AND ventas.estado_declaracion_anulado = 'PENDIENTE' AND ventas.codigo_cliente = 'ANULADO' AND ventas.estado_declaracion = 'ANULADO' AND tipodocumento.codigo_sunat = '03' AND ventas.fecha_hora > '2020-01-01' AND ventas.observaciones_declaracion != '' ORDER BY ventas.fecha_hora """ cursor.execute(sql_header) for row in cursor.fetchall(): venta = Venta() venta.id_venta = row[0] venta.fecha_venta = row[1] venta.codigo_tipo_proceso = row[2] venta.external_id = row[3] venta.motivo_anulacion = row[4] lista_ventas_anulados.append(venta) cursor.close() cnx.close() return _generate_lista_anulados(lista_ventas_anulados)
def leer_db_consulta(): cnx = __conectarse() cursor = cnx.cursor() #antesdeayer = time.localtime(time.time()) #- 518400) #antesdeayer = time.strftime("%Y-%m-%d", antesdeayer) #sql_header = """ # SELECT R.id_resumen, R.ticket, R.ext_id_resumen # FROM comercial.resumen AS R # WHERE fecha_hora = '{}' # """ sql_header = """SELECT id_resumen, ticket, ext_id_resumen FROM comercial.resumen WHERE filename = '' AND ticket != '' ORDER BY fecha_hora DESC LIMIT 1""" cursor.execute(sql_header) estado = cursor.fetchone() cursor.close() cnx.close() return _generate_consulta(estado)
def leer_db_fanulados(): cnx = __conectarse() cursor = cnx.cursor() lista_ventas_anulados = [] sql_header = """ SELECT ventas.id_venta, ventas.fecha_hora, documento.codigo_sunat, ventas.observaciones_declaracion, 'Error en documento' as motivo_anulacion, ventas.codigo_cliente FROM gulash.ventas, gulash.documento WHERE documento.id_documento = ventas.id_documento AND ventas.estado = 'I' AND ventas.estado_declaracion_anulado = '' AND ventas.estado_declaracion = 'PENDIENTE' AND documento.codigo_sunat = '01' AND ventas.observaciones_declaracion != '' ORDER BY ventas.fecha_hora """ cursor.execute(sql_header) for row in cursor.fetchall(): venta = Venta() venta.id_venta = row[0] venta.fecha_venta = row[1] venta.codigo_tipo_proceso = row[2] venta.external_id = row[3] venta.motivo_anulacion = row[4] lista_ventas_anulados.append(venta) cursor.close() cnx.close() return _generate_lista_anulados(lista_ventas_anulados)
def _ver_documentos(dia): cnx = __conectarse() cursor = cnx.cursor() sql_header = """ SELECT V.id_venta, V.fecha_hora, V.num_serie, V.num_documento, T.id_tipodocumento FROM comercial.ventas AS V, comercial.tipodocumento AS T WHERE T.id_tipodocumento = V.id_tipodocumento AND V.estado_declaracion='PROCESADO' AND V.observaciones_declaracion != '' AND T.id_tipodocumento = 25 AND (V.fecha_hora >= '{} 00:00:00') AND (V.fecha_hora <= '{} 23:59:00') ORDER BY V.fecha_hora """ cursor.execute(sql_header.format(dia, dia)) estado = cursor.fetchone() cursor.close() cnx.close() return estado
def leer_db_notaCredito(): cnx = __conectarse() cursor = cnx.cursor() lista_ventas = [] sql_header = """ SELECT N.id_notas_credito_debito, N.serie, N.numero, N.fecha, N.codigo_motivo, N.motivo, V.observaciones_declaracion as observaciones_declaracion_venta, case when C.dni !='' then C.dni when C.ruc !='' then C.ruc else '00000000' end cliente_numero_de_documento, N.persona, N.direccion, N.id_puntodeventa, TD.codigo_sunat, case when C.ruc !='' then '6' when C.dni !='' then '1' else '0' end cliente_tipo_de_documento, V.num_serie, V.num_documento FROM comercial.notas_credito_debito N, comercial.ventas V, comercial.cliente C, comercial.tipodocumento TD WHERE N.id_referencia = V.id_venta AND N.estado_declaracion = 'PENDIENTE' AND N.observaciones_declaracion = '' AND C.codigo_cliente = V.codigo_cliente AND TD.id_tipodocumento = V.id_tipodocumento ORDER BY N.id_notas_credito_debito """ sql_detail = """ SELECT D.codigo_producto, D.descripcion, D.cantidad, D.precio_unitario FROM comercial.detalle_notas_credito_debito AS D WHERE id_notas_credito_debito = {} """ cursor.execute(sql_header) for row in cursor.fetchall(): venta = Venta() venta.id_venta = row[0] venta.serie_documento = row[1] venta.numero_documento = row[2] venta.fecha_venta = row[3] venta.codigo_tipo_nota = row[4] venta.motivo_o_sustento_de_nota = row[5] venta.external_id = row[6] venta.documento_cliente = row[7] venta.nombre_cliente = row[8] venta.direccion_cliente = row[9] if row[9] != None else '' venta.forma_pago = '' venta.punto_venta = row[10] venta.codigo_tipo_documento = row[11] venta.codigo_tipo_documento_identidad = row[12] venta.serie_venta = row[13] venta.numero_venta = row[14] detalle_ventas = [] total = 0.0 cursor.execute(sql_detail.format(venta.id_venta)) for deta in cursor.fetchall(): detalle_ventas.append(DetalleVenta(deta[0], deta[1], deta[2], deta[3], "UND")) total += float(deta[2] * deta[3]) venta.total_venta = total venta.detalle_ventas = detalle_ventas lista_ventas.append(venta) cursor.close() cnx.close() return _generate_lista(lista_ventas)
def leer_db_rechazados(): cnx = __conectarse() cursor = cnx.cursor() lista_ventas = [] sql_header = """ SELECT distinct V.id_venta,--0 V.num_serie,--1 V.num_documento,--2 V.fecha_hora,--3 TD.codigo_sunat,--4 case when C.ruc !='' then '6' when C.dni !='' then '1' else '0' end cliente_tipo_de_documento,--5 case when C.dni !='' then C.dni when C.ruc !='' then C.ruc else '00000000' end cliente_numero_de_documento,--6 C.nombres_cliente,--7 D.direccion,--8 (case when (select sum(dv.monto_impuesto_bolsas) from comercial.detalle_venta dv where dv.id_venta= V.id_venta and dv.monto_impuesto_bolsas != 0) is null then 0 else (select sum(dv.monto_impuesto_bolsas)from comercial.detalle_venta dv where dv.id_venta= V.id_venta and dv.monto_impuesto_bolsas != 0 ) end ) + V.monto_venta total, V.cod_empleado,--10 MP.descripcion as forma_pago,--11 V.id_puntodeventa,--12 V.descuento,--13 V.igv --14 FROM comercial.ventas V INNER JOIN comercial.tipodocumento TD ON TD.id_tipodocumento = V.id_tipodocumento INNER JOIN comercial.cliente C ON C.codigo_cliente = V.codigo_cliente_anulado INNER JOIN comercial.direcciones D ON D.id_direcciones = V.id_direcciones INNER JOIN comercial.moneda M ON M.id_moneda = V.id_moneda INNER JOIN comercial.detalle_venta DV ON V.id_venta = DV.id_venta INNER JOIN comercial.producto P ON P.codigo_producto = DV.codigo_producto INNER JOIN comercial.detalle_producto DP ON P.codigo_producto = DP.codigo_producto INNER JOIN comercial.unidadmedida U ON U.codigo_unidad_m = DV.cod_unidad_medida INNER JOIN comercial.metodo_pago MP ON MP.id_metodo_pago = V.id_metodo_pago WHERE V.estado_declaracion='ANULADO' AND V.estado_declaracion_anulado='PENDIENTE' AND observaciones_declaracion = '' AND V.num_serie not in ('PRE') AND TD.id_tipodocumento in (25,26) AND V.fecha_hora >= '{}' AND V.codigo_cliente = 'ANULADO' -- cambia con respecto al envio de documentos ORDER BY V.fecha_hora """ #(1,2) (25,26) sql_detail = """ SELECT distinct P.codigo_producto codigo,--0 DV.descripcion, --1 DV.cantidad, --2 DV.monto precio_unitario,--3 case when P.impuesto_bolsas = 'TRUE' then (select parametros.valor::DECIMAL from comercial.parametros where id_parametros = 72) * DV.cantidad else 0 end impuesto_bolsas,--4 DV. descuento_individual,--5 porcentaje_descuento,--6 (DV.cantidad * DV.monto) sub_total, --7 monto_total, --8 DV.igv, --9 DV.igv_descuento, --10 DV.descuento_total --11 FROM comercial.detalle_venta DV INNER JOIN comercial.producto P ON P.codigo_producto = DV.codigo_producto INNER JOIN comercial.detalle_producto DP ON P.codigo_producto = DP.codigo_producto INNER JOIN comercial.ventas V ON V.id_venta = DV.id_venta WHERE V.id_venta = {} """ cursor.execute(sql_header.format(date_header)) for row in cursor.fetchall(): venta = Venta() venta.id_venta = row[0] venta.serie_documento = row[1] venta.numero_documento = row[2] venta.fecha_venta = row[3] venta.codigo_tipo_documento = row[4] venta.codigo_tipo_documento_identidad = row[5] venta.documento_cliente = row[6] venta.nombre_cliente = row[7] venta.direccion_cliente = row[8] if row[8] != None else '' venta.total_venta = float(row[9]) venta.vendedor = row[10] venta.forma_pago = row[11] venta.punto_venta = row[12] venta.descuentos = float(row[13]) venta.igv = float(row[14]) venta.total_bolsa_plastica = 0 venta.total_descuentos = 0 venta.total_gratuito = 0 venta.sumSubtotales = 0 detalle_ventas = [] cursor.execute(sql_detail.format(venta.id_venta)) for deta in cursor.fetchall(): detalle_ventas.append(DetalleVenta(deta[0], deta[1], deta[2], deta[3], "UND", deta[4], deta[5], deta[6], deta[7], deta[8], deta[9], deta[10], deta[11])) venta.total_bolsa_plastica += float(deta[4]) venta.total_descuentos += float(deta[5]) venta.sumSubtotales += float(deta[2]) * float(deta[3]) #suma de precios*cantidades sin IGV if deta[8] == 0: venta.total_gratuito += float(deta[2]) * float(deta[3]) venta.detalle_ventas = detalle_ventas lista_ventas.append(venta) cursor.close() cnx.close() return _generate_lista(lista_ventas)
def leer_db_rechazados(): cnx = __conectarse() cursor = cnx.cursor() lista_ventas = [] sql_header = """ SELECT DISTINCT ventas.id_venta, ventas.num_serie, ventas.num_documento, ventas.fecha_hora, '0101' codigo_tipo_operacion, documento.codigo_sunat codigo_tipo_documento, 'PEN' codigo_tipo_moneda, ventas.fecha_hora, case when cliente.ruc !='' then '6' when cliente.dni !='' then '1' else '0' end codigo_tipo_documento_identidad, case when cliente.dni !='' then cliente.dni when cliente.ruc !='' then cliente.ruc else '00000000' end numero_de_documento, cliente.nombres, 'PE' codigo_pais, '' ubigeo, cliente.direccion, cliente.email, cliente.telefono, cliente.delivery_telefono, 0.00 total_exportacion, 0.00 total_operaciones_gravada, 0.00 total_operaciones_inafectas, ventas.monto_venta total_operaciones_exoneradas, ( case when( select sum(dv.impuesto_icbper) from gulash.detalle_venta dv where dv.id_venta= ventas.id_venta and dv.impuesto_icbper != 0) is null then 0 else (select sum(dv.impuesto_icbper) from gulash.detalle_venta dv where dv.id_venta= ventas.id_venta and dv.impuesto_icbper != 0) end ) total_impuestos_bolsas, 0.00 total_igv, 0.00 total_impuestos, ventas.monto_venta total_valor, ventas.monto_venta+ ( case when( select sum(dv.impuesto_icbper) from gulash.detalle_venta dv where dv.id_venta= ventas.id_venta and dv.impuesto_icbper != 0) is null then 0 else (select sum(dv.impuesto_icbper) from gulash.detalle_venta dv where dv.id_venta= ventas.id_venta and dv.impuesto_icbper != 0) end ) total_venta, medio_pago.descripcion informacion_adicional, ventas.monto_efectivo, ventas.descuento FROM gulash.ventas INNER JOIN gulash.detalle_venta ON ventas.id_venta = detalle_venta.id_venta INNER JOIN gulash.documento ON documento.id_documento = ventas.id_documento INNER JOIN gulash.cliente ON cliente.codigo_cliente = ventas.codigo_cliente INNER JOIN gulash.producto_venta ON producto_venta.cod_producto_venta = detalle_venta.cod_producto_venta INNER JOIN gulash.medio_pago ON medio_pago.id_medio_pago = ventas.id_medio_pago WHERE documento.estado='A' AND documento.electronico='S' AND ventas.estado = 'I' AND ventas.estado_declaracion = 'PENDIENTE' AND ventas.estado_declaracion_anulado = '' AND ventas.observaciones_declaracion = '' AND ventas.fecha_hora > '2020-08-01' ORDER BY id_venta """ sql_detail = """ Select distinct detalle_venta.cod_producto_venta codigo_interno, detalle_venta.descripcion descripcion, '' codigo_producto_sunat, 'NIU' unidad_de_medida, cantidad cantidad, precio valor_unitario, '01' codigo_tipo_precio, precio precio_unitario, 20 codigo_tipo_afectacion_igv, 0 total_base_igv, 18 porcentaje_igv, 0.00 total_igv, impuesto_icbper total_impuestos_bolsa_plastica, '18' total_impuestos, cantidad*precio total_valor_item, cantidad*precio total_item, detalle_venta.descuento FROM gulash.detalle_venta inner join gulash.ventas ON detalle_venta.id_venta=ventas.id_venta WHERE ventas.id_venta= {} """ cursor.execute(sql_header.format(date_header)) for row in cursor.fetchall(): venta = Venta() venta.id_venta = row[0] venta.serie_documento = row[1] venta.numero_documento = row[2] venta.fecha_venta = row[3] venta.codigo_tipo_documento = row[5] venta.codigo_tipo_documento_identidad = row[8] venta.documento_cliente = row[9] venta.nombre_cliente = row[10] venta.direccion_cliente = row[13] if row[13] != None else '' venta.email = row[14] venta.telefono = row[15] venta.delivery_telefono = row[16] venta.total_bolsa_plastica = row[21] venta.total_venta = row[25] venta.forma_pago = row[26] venta.total_descuentos = 0 venta.total_efectivo = row[27] venta.descuentos = row[28] '''venta.tipo_venta = row[3] venta.codigo_cliente = row[9] venta.vendedor = row[10] venta.punto_venta = row[14]''' detalle_ventas = [] cursor.execute(sql_detail.format(venta.id_venta)) for deta in cursor.fetchall( ): #codigo_producto, nombre_producto, cantidad, precio_producto, unidad_medida, total_impuestos_bolsa_plastica detalle_ventas.append( DetalleVenta(deta[0], deta[1], deta[4], deta[5], "UND", deta[12], deta[16])) venta.total_descuentos += deta[16] venta.detalle_ventas = detalle_ventas lista_ventas.append(venta) cursor.close() cnx.close() return _generate_lista(lista_ventas)
def leer_db_guia(): cnx = __conectarse() cursor = cnx.cursor() lista_guias = [] sql_header = """ SELECT G.id_guia, split_part(G.num_documento::TEXT,'-', 1) serie, split_part(G.num_documento::TEXT,'-', 2) num, G.fecha_hora, TD.codigo_sunat, 'UBIGEOEmisor' AS UBIGEO, E.direccion, E.telefono, case when G.ruccliente !='' then '6' when G.dni_cliente !='' then '1' else '0' end cliente_tipo_de_documento, case when G.dni_cliente !='' then G.dni_cliente when G.ruccliente !='' then G.ruccliente else '00000000' end cliente_numero_de_documento, G.nombre_representante, 'UbigeoCliente' AS ubigeoCliente, G.direccionllegada, C.email, case when C.telefono !='' and C.celular !='' then C.telefono || ' - ' || C.celular when C.telefono !='' then C.telefono when C.celular !='' then C.celular else '' end telefono_cliente, G.fecha_traslado, G.num_bultos, 'UbigeoPartida' as ubigeoPartida, G.direccionpartida, 'UbigeoLLegada' as ubigeoLLegada, G.ructrasnporte, G.transporte, G.licencia, G.placa, G.cod_empleado, G.id_puntodeventa FROM comercial.guia G INNER JOIN comercial.empresa E ON E.id_empresa = G.id_empresa INNER JOIN comercial.tipodocumento TD ON TD.id_tipodocumento = G.id_tipo_documento_guia INNER JOIN comercial.tipodocumento ON tipodocumento.id_tipodocumento = G.id_tipodocumento INNER JOIN comercial.cliente C ON C.nombres_cliente = G.nombre_representante WHERE G.estado = 'A' AND razonsocial = '' ORDER BY fecha_hora """ sql_detail = """ SELECT id_detalle_guia, id_guia, codigo_producto, descripcion, cantidad, unidad_medida, monto FROM comercial.detalle_guia WHERE id_guia = {} """ cursor.execute(sql_header) for row in cursor.fetchall(): guia = Guia() guia.id_guia = int(row[0]) guia.serie_documento = row[1] guia.numero_documento = row[2] guia.fecha_guia = row[3] guia.codigo_tipo_documento = row[4] guia.ubigeo_emisor = row[5] guia.direccion_emisor = row[6] guia.telefono_emisor = row[7] guia.codigo_tipo_documento_identidad = row[8] guia.documento_cliente = row[9] guia.nombre_cliente = row[10] guia.ubigeo_cliente = row[11] guia.direccion_cliente = row[12] guia.email_cliente = row[13] guia.telefono_cliente = row[14] guia.fecha_traslado = row[15] guia.num_bultos = row[16] guia.ubigeo_partida = row[17] guia.direccion_partida = row[18] guia.ubigeo_llegada = row[19] guia.direccion_llegada = row[12] guia.ruc_transportista = row[20] guia.transporte = row[21] guia.num_licencia = row[22] guia.placa_vehiculo = row[23] guia.cod_empleado = row[24] guia.punto_venta = row[25] detalle_guia = [] cursor.execute(sql_detail.format(guia.id_guia)) for deta in cursor.fetchall(): detalle_guia.append( DetalleGuia(deta[2], deta[3], deta[4], 'NIU', deta[6])) guia.detalle_guias = detalle_guia lista_guias.append(guia) cursor.close() cnx.close() return _generate_lista(lista_guias)