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)
Exemple #2
0
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)
Exemple #4
0
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
Exemple #5
0
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)
Exemple #7
0
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)
Exemple #8
0
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)