예제 #1
0
    def setConferenciaProtocolo(codigo_acesso, conferencias):

       # print(conferencias);
       
        dados = json.loads(conferencias)
        if len(dados) == 0:
            return None

        comandos = []
        for protocolo in dados:
            
            observacao = protocolo.get("observacao")

            if observacao is None:
                #print("Obversavao vazia")
                observacao = "NULL"
            else:
                observacao = "'" + observacao + "'"
                #print("Observacao ",observacao)

            sql_protocolo = """UPDATE scr_nf_protocolo SET 
                                data_conferencia = '%s',
                                usuario_conferencia = %i,
                                status = 1,
                                observacao = %s
                         WHERE 
                                id_nf_protocolo = %i
                        """ % (protocolo['data_conferencia'],
                               protocolo['id_usuario_conferencia'],                               
                               observacao,
                               protocolo['id_protocolo_nf']
                               )


            comandos.append(sql_protocolo)
            for setor in protocolo['setores']:
                sql_setores = """UPDATE scr_nf_protocolo_setor SET
                                    data_conferencia = '%s',
                                    id_usuario_conferencia = %i,
                                    qtd_conferencia = %i
                                WHERE id_nf_protocolo = %i AND
                                    id_setor = %i
                        """ % (protocolo['data_conferencia'],
                               protocolo['id_usuario_conferencia'],
                               setor['qtd_conferencia'],
                               protocolo['id_protocolo_nf'],
                               setor['id_regiao'])
                comandos.append(sql_setores)

        sql = ';'.join(comandos)
        print(sql)
        try:
            execute_db(codigo_acesso,'begin')
            execute_db(codigo_acesso,sql)
            execute_db(codigo_acesso,'commit;')
        except:
            return None
        
        return comandos
예제 #2
0
    def set_vuupt_ocorrencias(self, id_acesso, data):

        sql_ins = """INSERT INTO vuupt_tmp (dados) VALUES ('%s')""" % data.replace(
            "'", "'")

        if isOpen('187.72.51.13', '5432'):
            execute_db(id_acesso, "begin")
            execute_db(id_acesso, sql_ins)
            execute_db(id_acesso, "commit")
예제 #3
0
    def insere_clientes(id_db,dados):
        import json 

        clientes = json.loads(dados)
        resultado = []        
        for cliente in clientes:
            #print('###############################',str(cliente))
            cmd = """
                    BEGIN;
                    SELECT f_insere_cliente('%s'::json) as cliente;
                    COMMIT;
                """ % (json.dumps(cliente[0]))

            try:
                r = execute_db(id_db,cmd)
            except Exception as e:
                r = None
                            
            resultado.append(r)

        return resultado
예제 #4
0
    def insere_nf(id_db,dados,id_usuario,empresa,filial, id_db_origem,tp_romaneio):
        import json 
        nfes = json.loads(dados)
        resultado = []                
        for nfe in nfes:
            #print(str(nfe[0]))
            try:
                r = execute_db(id_db,'BEGIN')            
                cmd = """                    
                        SELECT f_insere_nf_parceiros('%s'::json,%s,'%s','%s') as nf;                    
                    """ % (json.dumps(nfe[0]),id_usuario,empresa,filial)

                r = query_db(id_db,cmd)
                
                nova_nf = r[0]['nf']
                nf_origem = nfe[0]['id_nota_fiscal_imp']
                if nf_origem != '0':
                    if tp_romaneio == 1:
                        cmd_conf = """
                                        BEGIN;
                                        UPDATE scr_notas_fiscais_imp 
                                                SET id_nota_fiscal_redespachador = %s
                                        WHERE id_nota_fiscal_imp = %s;
                                    """ % (str(nova_nf), str(nf_origem))
                    else:
                        cmd_conf = """
                                        BEGIN;
                                        UPDATE scr_conhecimento_notas_fiscais 
                                                SET id_nota_fiscal_redespachador = %s
                                        WHERE id_conhecimento_notas_fiscais = %s;
                                    """ % (str(nova_nf), str(nf_origem))

                #print('COMANDO EMITIDO',cmd_conf)
                r = execute_db(id_db_origem,cmd_conf)
                r = execute_db(id_db_origem,'COMMIT')
                r = execute_db(id_db,'COMMIT')                

            except Exception as e:
                r = execute_db(id_db,'ROLLBACK')
                r = execute_db(id_db_origem,'ROLLBACK')            
            
            resultado.append(r)

        return resultado
예제 #5
0
    def setTracking(codigo_acesso, trackings):
        # print(conferencias);       
        #print(imagens);
        dados = json.loads(trackings)
        if len(dados) == 0:
            return None

        comandos = []          

        for i in dados:
            try:
                sql_insert = """INSERT INTO tracking_gps (
                       motorista_cpf,
                       data_localizacao,
                       latitude,
                       longitude
                ) VALUES (
                    '%(motorista_cpf)s',
                    '%(data_localizacao)s',
                    %(latitude)f,
                    %(longitude)f
                )
                """ % i

                comandos.append(sql_insert)
            except:
                print(traceback.format_exc())  
                return None

        sql = ';'.join(comandos) 
        
        try:
            execute_db(codigo_acesso,'begin')
            execute_db(codigo_acesso,sql)
            execute_db(codigo_acesso,'commit;')
        except:    
            
            print(traceback.format_exc())        
            return None
        
        return 0
예제 #6
0
    def setImagens(codigo_acesso, imagens):
        # print(conferencias);       
        #print(imagens);
        dados = json.loads(imagens)
        if len(dados) == 0:
            return None

        comandos = []
        
        for i in dados:
            try:
                sql_img = """INSERT INTO scr_imagens_base64 (
                       nome_imagem,
                       id_documento_app,
                       arquivo 
                ) VALUES (
                    '%(nome_arquivo)s',
                    %(ocorrencia_documento_id)i,
                    '%(arquivo)s'
                )
                """ % i
                comandos.append(sql_img)
            except:
                return None

            

        sql = ';'.join(comandos)        
        try:
            execute_db(codigo_acesso,'begin')
            execute_db(codigo_acesso,sql)
            execute_db(codigo_acesso,'commit;')
        except:    
            
            print(traceback.format_exc())        
            return None
        
        return 0
예제 #7
0
    def get_romaneios2(cpf_motorista, data, id_acesso):

        
        if id_acesso in (53,73):
            left_join = """LEFT JOIN scr_notas_fiscais_imp nf
				                ON nf.id_romaneio = r.id_romaneio
                        """
        else:
            left_join = """LEFT JOIN scr_romaneio_nf rnf
				                ON r.id_romaneio = rnf.id_romaneio
			                LEFT JOIN scr_notas_fiscais_imp nf
				                ON nf.id_nota_fiscal_imp = rnf.id_nota_fiscal_imp
                        """
            



        str_sql = """WITH rom AS (
		                SELECT 
			                r.id_romaneio,
			                r.numero_romaneio,
			                to_char(r.data_romaneio,'YYYY-MM-DD HH24:MI:SS') as data_romaneio,
                            data_saida::date as data_expedicao,
			                to_char(r.data_saida,'YYYY-MM-DD HH24:MI:SS') as data_saida,
			                to_char(r.data_chegada, 'YYYY-MM-DD HH24:MI:SS') as data_chegada,
			                r.placa_veiculo,
			                r.id_motorista,
			                mot.cnpj_cpf as motorista_cpf,
			                mot.id_cidade as motorista_id_cidade,
			                r.id_transportador_redespacho,
			                red.cnpj_cpf as redespachador_cpf,
			                red.id_cidade as redespacho_id_cidade,
			                r.id_origem
                            
		                FROM 
			                scr_romaneios r
			                LEFT JOIN fornecedores mot
				                ON mot.id_fornecedor = r.id_motorista
			                LEFT JOIN fornecedores red
				                ON red.id_fornecedor = r.id_transportador_redespacho
		                WHERE
                            r.data_saida >= '%s 00:00:00'
                            AND r.data_saida::date <= '%s 23:59:59'
			                AND mot.cnpj_cpf = '%s'
                            AND emitido = 1
	                )
	                , documentos AS (
		                SELECT 
			                nf.id_nota_fiscal_imp::integer as numero_parada,
			                nf.id_nota_fiscal_imp,
			                r.id_romaneio,	
			                trim(to_char(nf.data_emissao,'YYYY-MM-DD')) as data_emissao,
			                trim(to_char(nf.data_expedicao,'YYYY-MM-DD')) as data_expedicao,
			                trim(nf.serie_nota_fiscal) as serie,
			                trim(nf.numero_nota_fiscal) as numero_nota_fiscal,
			                nf.chave_nfe,
			                nf.valor,					
			                nf.peso_presumido as peso,
			                nf.peso_liquido,
                            nf.id_ocorrencia,
                            to_char(nf.data_ocorrencia,'YYYY-MM-DD HH24:MI:SS') as data_ocorrencia,
			                nf.volume_presumido as volume,
			                rem.codigo_cliente as remetente_id,
			                rem.cnpj_cpf::bigint as remetente_cnpj,
			                rem.id_cidade as remetente_id_cidade,
			                dest.codigo_cliente as destinatario_id,
			                dest.cnpj_cpf::bigint as destinatario_cnpj,
			                dest.id_cidade as destinatario_id_cidade,
                            null::integer as id_conhecimento_notas_fiscais,
                            nf.id_conhecimento
		                FROM
			                rom r
			                %s
			                LEFT JOIN cliente rem
				                ON rem.codigo_cliente = nf.remetente_id
			                LEFT JOIN cliente dest 
				                ON dest.codigo_cliente = nf.destinatario_id
			                LEFT JOIN cidades cd
				                ON cd.id_cidade = dest.id_cidade
                      	WHERE 
                    		nf.id_nota_fiscal_imp IS NOT NULL
                       UNION 				
				SELECT 
					        ce.id_conhecimento_entrega as numero_parada,
			                nf.id_nota_fiscal_imp,			                
			                r.id_romaneio,
			                trim(to_char(nf.data_nota_fiscal,'YYYY-MM-DD')) as data_emissao,
			                trim(to_char(nf.data_nota_fiscal,'YYYY-MM-DD')) as data_expedicao,
			                trim(nf.serie_nota_fiscal) as serie,
			                trim(nf.numero_nota_fiscal) as numero_nota_fiscal,
			                nf.chave_nfe,
			                nf.valor,					
			                nf.peso as peso,
			                nf.peso_liquido,
					nf.id_ocorrencia,
					to_char(f_data_entrega(nf.data_ocorrencia, nf.hora_ocorrencia),'YYYY-MM-DD HH24:MI:SS') as data_ocorrencia,
			                nf.qtd_volumes as volume,
			                rem.codigo_cliente as remetente_id,
			                rem.cnpj_cpf::bigint as remetente_cnpj,
			                rem.id_cidade as remetente_id_cidade,
			                dest.codigo_cliente as destinatario_id,
			                dest.cnpj_cpf::bigint as destinatario_cnpj,
			                dest.id_cidade as destinatario_id_cidade,
			                nf.id_conhecimento_notas_fiscais,
                            nf.id_conhecimento
		                FROM
			                rom r			                
			                LEFT JOIN scr_conhecimento_entrega ce
						ON ce.id_romaneios = r.id_romaneio
			                LEFT JOIN scr_conhecimento c
						ON c.id_conhecimento = ce.id_conhecimento
					LEFT JOIN scr_conhecimento_notas_fiscais nf
						ON c.id_conhecimento = nf.id_conhecimento					
			                LEFT JOIN cliente rem
				                ON rem.codigo_cliente = c.remetente_id
			                LEFT JOIN cliente dest 
				                ON dest.codigo_cliente = c.destinatario_id
			                LEFT JOIN cidades cd
				                ON cd.id_cidade = dest.id_cidade			                
				WHERE 
					nf.id_conhecimento_notas_fiscais IS NOT NULL)                   
	                 
                    , qt_docs as (SELECT count(*) as qt FROM documentos)
                    , cidades2 AS (
		                SELECT 
			                id_cidade,
			                nome_cidade,
			                uf,
                            cod_ibge
		                FROM
			                documentos
			                LEFT JOIN cidades
				                ON cidades.id_cidade = remetente_id_cidade
		                UNION 
		                SELECT 
			                id_cidade,
			                nome_cidade,
			                uf,
                            cod_ibge
		                FROM
			                documentos
			                LEFT JOIN cidades
				                ON cidades.id_cidade = destinatario_id_cidade
		                UNION 
		                SELECT 
			                id_cidade,
			                nome_cidade,
			                uf,
                            cod_ibge
		                FROM 
			                rom
			                LEFT JOIN cidades
				                ON cidades.id_cidade = rom.motorista_id_cidade
		                UNION 
		                SELECT
			                id_cidade,
			                nome_cidade,
			                uf,
                            cod_ibge
		                FROM 
			                rom 
			                LEFT JOIN cidades
				                ON cidades.id_cidade = rom.redespacho_id_cidade
		                WHERE
			                cidades.id_cidade IS NOT NULL 
	                )
	                , pessoas_1 AS (
		                WITH t AS (
			                SELECT 
				                trim(nome_cliente) as nome,
				                trim(cnpj_cpf) as cnpj_cpf,
                                CASE WHEN end_complemento IS NOT NULL THEN 
				                        trim(endereco) || ', ' || trim(end_complemento) 
                                    ELSE 
                                        trim(endereco)
                                END as endereco,
				                trim(numero) as numero,
				                trim(cliente.bairro) as bairro,
				                id_cidade, 
				                cliente.cep,
				                (cliente.ddd || ' ' || telefone) as telefone,
                                latitude,
                                longitude
			                FROM
				                documentos
				                LEFT JOIN cliente 
					                ON cliente.codigo_cliente = documentos.remetente_id
				
			                UNION
			                SELECT 
				                trim(nome_cliente) as nome,
				                trim(cnpj_cpf) as cnpj_cpf,
				                CASE WHEN end_complemento IS NOT NULL THEN 
				                        trim(endereco) || ', ' || trim(end_complemento) 
                                    ELSE 
                                        trim(endereco)
                                END as endereco,
				                trim(numero) as numero,
				                trim(cliente.bairro) as bairro,
				                id_cidade,
				                cliente.cep,
				                (cliente.ddd || ' ' || telefone) as telefone,
                                latitude,
                                longitude

			                FROM
				                documentos
				                LEFT JOIN cliente 
					                ON cliente.codigo_cliente = documentos.destinatario_id
			                UNION 
			                SELECT 
				                trim(nome_razao) as nome,
				                trim(cnpj_cpf) as cnpj_cpf,
				                trim(endereco) as endereco,
				                trim(numero) as numero,
				                trim(fornecedores.bairro) as bairro,
				                id_cidade,
				                fornecedores.cep,
				                (fornecedores.ddd || ' ' || telefone1) as telefone,
                                null::double precision as latitude,
                                null::double precision as longitude
			                FROM
				                rom
				                LEFT JOIN fornecedores
					                ON fornecedores.id_fornecedor = rom.id_motorista
			                UNION 
			                SELECT 
				                trim(nome_razao) as nome,
				                trim(cnpj_cpf) as cnpj_cpf,
				                trim(endereco) as endereco,
				                trim(numero) as numero,
				                trim(fornecedores.bairro) as bairro,
				                id_cidade,
				                fornecedores.cep,
				                (fornecedores.ddd || ' ' || telefone1) as telefone,
                                null::double precision as latitude,
                                null::double precision as longitude
			                FROM
				                rom
				                LEFT JOIN fornecedores
					                ON fornecedores.id_fornecedor = rom.id_transportador_redespacho
			                WHERE
				                fornecedores.id_fornecedor IS NOT NULL
		                )
		                SELECT 
			                trim(t.nome) as nome,
			                t.cnpj_cpf,
			                t.endereco,
			                t.numero,
			                t.bairro,
			                t.id_cidade,
			                t.cep,
			                t.telefone,
                            t.latitude,
                            t.longitude
		                FROM 
			                t					
	                )
	                , cep1 as (
		                SELECT 
			                pessoas_1.cep,
			                cep.latitude,
			                cep.longitude
		                FROM 
			                pessoas_1
			                LEFT JOIN cep
				                ON cep.cep = pessoas_1.cep
		                GROUP BY
			                1,2,3
	                )
	                , pessoas_2 as (
		                SELECT 
			                p.nome,
			                p.cnpj_cpf,
			                p.endereco,
			                p.numero,
			                p.bairro,
			                p.id_cidade,
			                p.cep,
			                p.telefone,
			                COALESCE(p.longitude::text, cep1.longitude::text) as longitude,
			                COALESCE(p.latitude::text, cep1.latitude::text) as latitude,
                            CASE WHEN p.latitude IS NULL THEN 1 ELSE 0 END::integer as verificar
		                FROM 
			                pessoas_1 p
			                LEFT JOIN cep1 
				                ON cep1.cep = p.cep	
	                )
	                , veiculos_1 AS (
		                SELECT 
			                placa_veiculo as placa_veiculo,
			                placa_veiculo as descricao
		                FROM 
			                rom
		                GROUP BY 
			                rom.placa_veiculo
	                )
	                , pessoas AS (
		                WITH temp AS (
			                SELECT (row_to_json(row,true))::json as json FROM (
				                SELECT 
					                *
				                FROM
					                pessoas_2				
			                ) row
		                )
		                SELECT array_agg(json) as pessoas FROM temp 
	                )
	                , veiculos AS (
		                WITH temp AS (
			                SELECT (row_to_json(row,true))::json as json FROM (
				                SELECT 
					                *
				                FROM
					                veiculos_1		
			                ) row
		                )
		                SELECT array_agg(json) as veiculo FROM temp 
	                )
	                , cidades AS (
		                WITH temp AS (
			                SELECT (row_to_json(row,true))::json as json FROM (
				                SELECT 
					                id_cidade, 
                                    trim(nome_cidade) as nome_cidade,
                                    uf,
                                    cod_ibge
				                FROM
					                cidades2
			                ) row
		                )
		                SELECT array_agg(json) as cidades FROM temp 
	                )		
	                , docs AS (		
		                WITH temp AS (
			                SELECT (row_to_json(row,true))::json as json, id_romaneio FROM (
				                SELECT 
					                *
				                FROM
					                documentos
				                ORDER BY
					                id_romaneio, numero_nota_fiscal
			                ) row
		                )
		                SELECT id_romaneio, array_agg(json) as lista_docs FROM temp GROUP BY id_romaneio
	                )	
	                , romaneios AS (
		                WITH temp AS (
				                SELECT (row_to_json(row,true))::json as json FROM (
					                SELECT 
						                rom.*,
						                docs.lista_docs as documentos
					                FROM 
						                rom
						                LEFT JOIN docs
							                ON docs.id_romaneio = rom.id_romaneio
                                    ORDER BY rom.id_romaneio
				                ) row
			                )
			                SELECT array_agg(json) as romaneio FROM temp 
	                )
	                SELECT row_to_json(row, true) as json 
	                FROM 
	                (
		                SELECT 
			                romaneios.romaneio as romaneios,
			                pessoas.pessoas,
			                cidades.cidades,
			                veiculos.veiculo
		                FROM 
			                romaneios,
			                pessoas,
			                cidades,
			                veiculos,
                            qt_docs
                        WHERE 
                            qt_docs.qt > 0
	                ) row;""" % (data, data, cpf_motorista, left_join)


        r = query_db(id_acesso,str_sql,None,True)

        #print(str_sql)

        if r is None:
            return None        
        try:
            if r[0]['romaneios'] is None:
                return None
        except:
            return None

        cidades = {}
        for c in r[0]['cidades']:
            cidades[str(c['id_cidade'])] = c['nome_cidade'] + ', ' + c['uf']

        for p in r[0]['pessoas']:
            if p['verificar'] == 1:
                #Chama rotina que tenta encontrar coordenadas
                location = util.get_location(p['endereco'], p['bairro'],cidades[str(p['id_cidade'])],p['cep'],p['nome'])
                #print(location)
                if location is not None:
                    p['longitude'] = location[0]
                    p['latitude'] = location[1]
                    p['geolocation'] = True

                    str_update = """UPDATE cliente 
                        SET longitude = '%s', latitude = '%s' 
                        WHERE cnpj_cpf = '%s'""" % (location[0],location[1],p['cnpj_cpf'])
                    
                    ##print(str_update)
                    execute_db(id_acesso,'begin')
                    execute_db(id_acesso,str_update)
                    execute_db(id_acesso,'commit')
                    



        return r[0]
예제 #8
0
    def setOcorrencias(codigo_acesso, ocorrencias):
       # print(conferencias);
       
        dados = json.loads(ocorrencias)
        if len(dados) == 0:
            return None

        comandos = []
        
        for o in dados:
            d = {
                    'id': o['id'],                    
                    'id_ocorrencia': o['id_ocorrencia'],
                    'data_registro': o['data_registro'],
                    'data_ocorrencia': o['data_ocorrencia'] + " " + o['hora_ocorrencia'] + ':00',
                    'nome_recebedor': 'NAO INFORMADO' if o.get('nome_recebedor') == '' else o.get('nome_recebedor'),
                    'documento_recebedor': 'NAO INFORMADO' if o.get('documento_recebedor') == '' else o.get('documento_recebedor'),
                    'observacao': "NULL" if o.get('observacao') is None else "'" + o.get('observacao') + "'",
                    'latitude': "NULL" if o.get('latitude') is None else "'"  + o.get('latitude') + "'",
                    'longitude': "NULL" if o.get('longitude') is None else "'" + o.get('longitude') + "'",
                    'chave_nfe': o['chave_nfe'],
                    'numero_nota_fiscal': o['numero_nota_fiscal'],
                    'serie_nota_fiscal': o['serie_nota_fiscal'],
                    'remetente_cnpj': o['remetente_cnpj'],
                    'id_nota_fiscal_imp': "NULL" if o.get('id_nota_fiscal_imp') is None else str(o.get('id_nota_fiscal_imp')),
                    'id_romaneio': "NULL" if o.get('id_romaneio') is None else o.get('id_romaneio'),
                    'url_imagem': "NULL" if o.get('url_imagem') is None else "'" + o.get('url_imagem') + "'",
                    'id_conhecimento_notas_fiscais': "NULL" if o.get('id_conhecimento_notas_fiscais') is None else str(o.get('id_conhecimento_notas_fiscais')),
                    'id_conhecimento': "NULL" if o.get('id_conhecimento') is None else str(o.get('id_conhecimento'))
               }
        
            print(d)    
            sql_ocorrencia = """INSERT INTO edi_ocorrencias_entrega (
                    servico_integracao,
                    numero_nfe,
                    serie_nfe,
                    cnpj_emitente,                    
                    chave_nfe,
                    numero_ocorrencia,
                    data_ocorrencia,
                    recebedor,
                    doc_recebedor,
                    id_nota_fiscal_imp,
                    id_romaneio,
                    id_ocorrencia_app,
                    latitude,
                    longitude,
                    observacao,
                    url_imagem,
                    id_conhecimento,
                    id_conhecimento_notas_fiscais
                ) VALUES (         
                    2,
                    '%(numero_nota_fiscal)s',
                    '%(serie_nota_fiscal)s',
                    '%(remetente_cnpj)s',
                    '%(chave_nfe)s',
                    %(id_ocorrencia)i,
                    '%(data_ocorrencia)s',
                    '%(nome_recebedor)s',
                    '%(documento_recebedor)s',
                    %(id_nota_fiscal_imp)s,
                    %(id_romaneio)i,
                    %(id)i,
                    %(latitude)s,
                    %(longitude)s,
                    %(observacao)s,
                    %(url_imagem)s,
                    %(id_conhecimento)s,
                    %(id_conhecimento_notas_fiscais)s
                )""" % (d)

            comandos.append(sql_ocorrencia)

        sql = ';'.join(comandos)        
        try:
            execute_db(codigo_acesso,'begin')
            execute_db(codigo_acesso,sql)
            execute_db(codigo_acesso,'commit;')
        except:    
            
            print(traceback.format_exc())        
            return None
        
        return comandos
예제 #9
0
    def set(self, codigo_acesso, romaneios):

        dados = json.loads(romaneios)
        if len(dados) == 0:
            return None

        comandos = []
        for romaneio in dados:

            romaneio['lst_notas'] = ','.join(
                [str(x) for x in romaneio["notas_fiscais"]])

            sql_romaneio = """
            INSERT INTO edi_romaneios (
                codigo_empresa,
                codigo_filial,
                placa_veiculo,
                id_motorista,
                data_romaneio,
                tipo_destino,
                id_origem,
                id_destino,
                id_setor,
                data_registro,
                id_usuario,                
                lst_notas
            ) VALUES (
                '001',
                '001',
                '%(placa_veiculo)s',
                %(id_motorista)i,
                '%(data_romaneio)s',
                'D',
                %(id_origem)i,
                %(id_destino)i,
                %(id_setor)i,
                now(),
                %(id_usuario)i,                
                '{%(lst_notas)s}'
            )""" % romaneio

            comandos.append(sql_romaneio)

        sql = ";".join(comandos)
        try:
            execute_db(codigo_acesso, 'begin')
            execute_db(codigo_acesso, sql)
            execute_db(codigo_acesso, 'commit;')
        except:
            execute_db(codigo_acesso, 'begin')
            execute_db(codigo_acesso, sql)
            execute_db(codigo_acesso, 'commit;')
            return None

        return comandos
예제 #10
0
파일: views.py 프로젝트: softlog/web
def boleto_v1():    
    parser = reqparse.RequestParser()
    parser.add_argument('id_db',type=int,help='Par�metro Id_db inv�lido.')
    parser.add_argument('id_remessa',type=int,help='Par�metro id_remessa inv�lido.')
    parser.add_argument('id_fatura',type=int,help='Par�metro id_boleto inv�lido.')
    parser.add_argument('e',type=str,help='Par�metro e inv�lido.')
    parser.add_argument('data_boleto',type=str,help='Par�metro e inv�lido.')

    args = parser.parse_args()
        
    id_db = args['id_db']
    id_remessa = args['id_remessa']
    id_boleto = args['id_fatura']
    e = args['e']
    data_boleto = args['data_boleto']


    if id_boleto == 0:
        campo_ref = 'id_remessa'
        id_ref = id_remessa
    else:
        campo_ref = 'id_faturamento'
        id_ref = id_boleto

    boleto_atualizado = 0
    if request.path == '/cobranca/boleto_atualizado_v1':
        boleto_atualizado = 1

    if data_boleto != 'NULL':
        data_boleto = "'" + data_boleto + "'"

    dados = {    
        'data_boleto':data_boleto, 
        'boleto_atualizado':boleto_atualizado, 
        'campo_ref':campo_ref,
        'id_ref':id_ref, 
        'id_remessa':id_remessa
    }

    qry_rem = """
            SELECT 
			        id_remessa, 
			        numero_remessa, 
			        numero_convenio, 
			        cod_empresa, 
			        cod_filial, 
			        id_carteira, 
			        id_carteira_agregada, 
			        proximo_nosso_numero_agregado, 
			        numero_remessa_agregado, 
			        trim(codigo_carteira) as codigo_carteira, 
			        trim(numero_conta) as numero_conta, 
			        trim(numero_agencia) as numero_agencia, 
			        trim(numero_banco) as numero_banco, 
			        data_hora_geracao, 
			        valor_remessa, 
			        banco_emite_boleto, 
			        nosso_numero_inicial, 
			        gerar_novo_numero, 
			        protestar, 
			        protestar_apos_dias, 
			        juros_perc, 
			        multa_perc, 
			        observacao, 
			        arquivo, 
			        acrescimo, 
			        tipo_duplicata, 
			        layout_remessa, 
			        layout_retorno, 
			        local_pagamento, 
			        left(trim(instrucoes),90) as instrucoes, 
			        cnpj_sacador, 
			        sacador,
			        trim(initcap(filial.razao_social)) as razao_social,
                    cnpj_cpf(filial.cnpj) as cnpj,
                    trim(initcap(filial.endereco)) as endereco, 
                    trim(filial.numero) as numero, 
                    trim(initcap(filial.bairro)) as bairro,                    
                    filial.id_cidade, 
                    trim(initcap(cidades.nome_cidade)) as nome_cidade,
                    trim(cidades.uf) as uf,
                    trim(filial.cep) as cep,
                    trim(v_remessa.codigo_cedente) as codigo_cedente
		        FROM 
			        v_remessa 
			        LEFT JOIN filial
				        ON v_remessa.cod_filial = filial.codigo_filial
				        AND v_remessa.cod_empresa = filial.codigo_empresa
                    LEFT JOIN cidades
                        ON cidades.id_cidade = filial.id_cidade
		        WHERE
			        id_remessa = %i""" % (id_remessa)
    
                        
    qry_fatura = """
        WITH t AS (
          SELECT 
            %(boleto_atualizado)i::integer as ba,
            %(data_boleto)s::date as data_atualizada
        ),
        t1 AS (
            SELECT 			
	            f.id_faturamento, 
	            scr_faturamento_remessas.id_remessa, 
	            f.numero_fatura, 
	            trim(f.numero_boleto) as numero_boleto, 
	            trim(initcap(f.fatura_nome)) as fatura_nome, 
	            cnpj_cpf(f.fatura_cnpj) as fatura_cnpj, 
	            CASE WHEN char_length(trim(f.fatura_cnpj)) = 14 THEN 
		            '02'
	            ELSE
		            '01'
	            END::text as tipo_cliente,
	            trim(initcap(f.fatura_endereco)) as fatura_endereco, 
	            trim(f.fatura_numero) as fatura_numero, 
	            trim(initcap(f.fatura_bairro)) as fatura_bairro, 
	            trim(initcap(f.fatura_cidade)) as fatura_cidade, 
	            trim(f.fatura_uf) as fatura_uf, 
	            trim(f.fatura_cep) as fatura_cep, 
	            f.fatura_ie, 
	            f.valor_total_ctrc, 
	            f.valor_total_servicos, 
	            CASE 	WHEN f.valor_adicional IS NOT NULL 
		            THEN (f.valor_fatura + f.valor_adicional) 
		            ELSE f.valor_fatura 
	            END as valor_fatura, 
	            (f.valor_total) as valor_total, 
	            (f.perc_desconto) as perc_desconto, 
	            (f.desconto) as desconto, 
	            f.prazo_desconto, 
	            (f.perc_juros) as perc_juros,
	            CASE 	WHEN f.perc_juros > 0 THEN 
			            ' E JUROS DE R$' ||
			            replace(
				            (
				            (
				              ((f.valor_fatura + COALESCE(f.valor_adicional,0,00)) 
					         * f.perc_juros
				               )/100
				            )/30)::numeric(12,2)::text,
				            '.',',')
			            || ' AO DIA' 
		            ELSE 
			            ''
	            END::text as msg_juros,
	            (
	               (
		            (
		              ((f.valor_fatura + COALESCE(f.valor_adicional,0,00)) 
			         * f.perc_juros
		               )/100
		            )/30
		        )
	            )::numeric(12,2) as valor_juros,
	            CASE 	WHEN f.perc_multa > 0 THEN 
			            'APOS O VENCIMENTO COBRAR MULTA DE R$' ||
			            replace(
				            (						
				              ((f.valor_fatura + COALESCE(f.valor_adicional,0,00)) 
					         * f.perc_multa
				               )/100
				            )::numeric(12,2)::text,
				            '.',',')					
		            ELSE 
			            ''
	            END::text as msg_multa,			  
	            CASE 	WHEN f.perc_multa > 0 THEN 
				            (						
				              ((f.valor_fatura + COALESCE(f.valor_adicional,0,00)) 
					         * f.perc_multa
				               )/100
				            )::numeric(12,2)				            			
		            ELSE 
			            0.00
	            END as valor_multa,			  
	            f.juros, 
	            f.perc_multa, 		
	            f.multa, 
	            COALESCE(f.abatimento,0.00) as abatimento, 
	            f.valor_inss, 
	            f.tarifa, 
	            COALESCE(t.data_atualizada,f.data_vencimento) as data_vencimento,
	            f.data_processamento,			
	            to_char(f.data_lim_desconto,'DD/MM/YYYY') as data_lim_desconto, 
	            f.protesto, 
	            scr_faturamento_remessas.tipo_acao_cobranca, 
	            scr_faturamento_remessas.gerar_nosso_numero, 
	            scr_faturamento_remessas.status_geracao, 
	            scr_faturamento_remessas.id_remessa_fatura, 
	            f.prazo_protesto, 
	            fp.valor_fatura as valor_fatura_principal, 
	            CASE 	WHEN f.num_parcela IS NULL 
			            OR f.tipo_fatura <> 3 THEN '�nica' 
		            WHEN f.num_parcela = 0 THEN 'Entrada' 
		            WHEN f.num_parcela > 0 THEN lpad(f.num_parcela::text,2,'0') || '-' || lpad(f.qtd_parcelas::text,2,'0') 
	            END::text as parcelas,			 
	            to_char(dia_util(t.data_atualizada, 
		            COALESCE(cart.id_cidade::integer,fil.id_cidade::integer)),'DD/MM/YYYY'
	            ) as dt_vencto_atu,			
	            dias_atraso(
		            COALESCE(acordo.previsao_pagto,f.data_vencimento),
		            t.data_atualizada,
		            COALESCE(cart.id_cidade::integer,fil.id_cidade::integer)
	            ) as dias_atraso,
	            t.ba
            FROM	
	            t,		
	            scr_faturamento_remessas 				
	            LEFT JOIN scr_faturamento f
		            ON scr_faturamento_remessas.id_faturamento = f.id_faturamento 
	            LEFT JOIN scr_faturamento fp 
		            ON fp.id_faturamento = f.id_faturamento_principal
	            LEFT JOIN v_carteira cart 
		            ON cart.id_carteira = f.id_cobrador
	            LEFT JOIN filial fil 
		            ON fil.codigo_empresa = f.codigo_empresa 
			            AND f.codigo_filial = fil.codigo_filial
	            LEFT JOIN v_scr_faturamento_dt_acordo acordo 
		            ON acordo.id_faturamento = f.id_faturamento
            WHERE        
	        scr_faturamento_remessas.%(campo_ref)s = %(id_ref)i            
        )
        SELECT  *, 
	        CASE WHEN ba = 1 THEN 
	            valor_fatura +
	            (valor_juros * dias_atraso) + 
	            valor_multa
	        ELSE
	            valor_fatura
	        END::numeric(12,2) as valor_boleto,
	        data_vencimento as vencimento_boleto
        FROM t1 
        WHERE id_remessa = %(id_remessa)i
        ORDER BY numero_fatura 
        """ % dados
        ##(boleto_atualizado, campo_ref,id_ref, id_remessa)
    
    #print(qry_fatura)
    
    remessa = query_db(id_db,qry_rem,{},True)
    
    faturas = query_db(id_db,qry_fatura)
   
    #print("DIAS ATRASO",faturas[0]['dias_atraso'])
    #print("Valor Multa",faturas[0]['valor_multa'])
    #print("VALOR JUROS",faturas[0]['valor_juros'])
    #print("VALOR BOLETO",faturas[0]['valor_boleto'])
    #if faturas[0]['dias_atraso'] > 0:        
    #    return render_template("api_cobranca/baixa_boleto.html")
    
    response = get_boleto(faturas,remessa)
    
    
    if response is not None and e != 'None':        
        cmd_log = """INSERT INTO scr_faturamento_log_atividades(
					id_faturamento,					
					atividade_executada,					 
					usuario 
					)
				VALUES (%i,
					LEFT('ACESSO BOLETO (%s)',100),'sistema')
              """  % (id_boleto,e)
        rl = execute_db(id_db,'begin')        
        rl = execute_db(id_db,cmd_log)        
        rl = execute_db(id_db,'commit')        

    response.headers['Content-Disposition'] = "attachment; filename=boleto.pdf"
    response.mimetype = 'application/pdf'
    
    return response            
예제 #11
0
파일: protocolos.py 프로젝트: softlog/web
    def setConferenciaProtocolo(self,codigo_acesso, conferencias):

        #print(conferencias);
        #return None
        dados = json.loads(conferencias)
        if len(dados) == 0:
            return None

        comandos = []
        for protocolo in dados:
            
            observacao = protocolo.get("observacao")

            if observacao is None:
                #print("Obversavao vazia")
                observacao = "NULL"
            else:
                observacao = "'" + observacao + "'"
                #print("Observacao ",observacao)

            sql_protocolo = """UPDATE scr_nf_protocolo SET 
                                data_conferencia = '%s',
                                usuario_conferencia = %i,
                                status = 1,
                                observacao = %s
                         WHERE 
                                id_nf_protocolo = %i
                        """ % (protocolo['data_conferencia'],
                               protocolo['id_usuario_conferencia'],                               
                               observacao,
                               protocolo['id_protocolo_nf']
                               )


            comandos.append(sql_protocolo)
            for setor in protocolo['setores']:
                sql_setores = """UPDATE scr_nf_protocolo_setor SET
                                    data_conferencia = '%s',
                                    id_usuario_conferencia = %i,
                                    qtd_conferencia = %i
                                WHERE id_nf_protocolo = %i AND
                                    id_setor = %i
                        """ % (protocolo['data_conferencia'],
                               protocolo['id_usuario_conferencia'],
                               setor['qtd_conferencia'],
                               protocolo['id_protocolo_nf'],
                               setor['id_regiao'])
                comandos.append(sql_setores)

            if protocolo.get('notas_fiscais') is not None:
                
                for nf in protocolo['notas_fiscais']:
                    obs_nf = nf.get('observacao')

                    if obs_nf is None:
                        continue

                    sql_nf = """UPDATE scr_notas_fiscais_imp SET 
                                    id_ocorrencia = %i,
                                    obs_ocorrencia = '%s',
                                    data_ocorrencia = '%s'
                                WHERE id_nota_fiscal_imp = %i
                             """ % (nf['id_ocorrencia'], obs_nf, protocolo['data_conferencia'], nf['id_nota_fiscal_imp'])
                    comandos.append(sql_nf)

                    anexos = nf.get('anexos')

                    if anexos is None:
                        continue

                    for anexo in anexos:
                        sql_anexo = """
                        INSERT INTO scr_notas_fiscais_imp_anexos (
                            id_nota_fiscal_imp,
                            tipo_anexo,
                            data_anexo,
                            usuario_anexo,
                            descricao_anexo,
                            conteudo_anexo,
                            nome_anexo
                        ) VALUES (
                            %i,
                            1,
                            '%s',
                            '%s',
                            'CONFERENCIA VOLUMES',
                            '%s',
                            '%s'
                        )""" % (
                            nf['id_nota_fiscal_imp'],
                            protocolo['data_conferencia'],
                            protocolo['usuario_conferencia'],
                            anexo['arquivo'],
                            anexo['nome_arquivo']
                        )
                        comandos.append(sql_anexo)

        sql = ';'.join(comandos)
        print(sql)
        try:
            execute_db(codigo_acesso,'begin')
            execute_db(codigo_acesso,sql)
            execute_db(codigo_acesso,'commit;')
        except:
            return None
        
        return comandos