sexta-feira, 29 de novembro de 2013

Programa para Exportação de Fornecedor ( Datasul )


def var i-cont as integer no-undo.
def var c-cnpj as char format "x(20)".
def var c-insc as char format "x(20)".
def var dt-ult-cotacao as date.
DEF VAR c-cgc AS CHAR.

def var i-grup-forn   as inte.

def var i-novo-codigo      as inte init 2750.
DEF VAR i-cod-existe       AS INTEGER NO-UNDO.
def buffer b-emitente for mgadm.emitente.
def stream de-para.

output stream de-para to value("c:\temp\de-para-forn.txt").

output to value("c:\datasul\work\fornec.txt").

for each mgadm.emitente no-lock where
    (mgadm.emitente.identific = "F" or mgadm.emitente.identific = "A") and
    not mgadm.emitente.nome-emit matches("*previs*") and
    not mgadm.emitente.nome-emit matches("*desativ*") and
    not mgadm.emitente.nome-abrev matches("*desativ*") :
    ASSIGN c-cgc = REPLACE(REPLACE(REPLACE(mgadm.emitente.cgc,".",""),"-",""),"/","").
    ASSIGN i-cod-existe = i-novo-codigo.   
    
    FIND FIRST emsuni.cliente NO-LOCK WHERE
        emsuni.cliente.cod_id_feder = c-cgc NO-ERROR.
    IF AVAIL emsuni.cliente THEN
        ASSIGN i-cod-existe = emsuni.cliente.cdn_cliente.
    
    /*
    if mgadm.emitente.cod-gr-forn <> 4 or 
       mgadm.emitente.cod-gr-forn < 7 then next.
    */

    if mgadm.emitente.endereco = mgadm.emitente.cidade then next.
    
    if mgadm.emitente.ins-estadual <> "" THEN
       assign c-insc = mgadm.emitente.ins-estadual.
    ELSE
        assign c-insc = "ISENTO".
        
    find first tit-ap no-lock where
        tit-ap.cod-fornec  = mgadm.emitente.cod-emitente and
        tit-ap.valor-saldo > 0 no-error.
    if not avail tit-ap THEN DO:
        next.
    END.
    
    assign i-grup-forn = if mgadm.emitente.cod-gr-forn =  1 then 10 else
                         if mgadm.emitente.cod-gr-forn =  2 then 20 else
                         if mgadm.emitente.cod-gr-forn =  3 then 50 else
                         if mgadm.emitente.cod-gr-forn =  5 then 60 else
                         if mgadm.emitente.cod-gr-forn =  6 then 40 else
                         if mgadm.emitente.cod-gr-forn =  7 then 30 else ?.
                         
      
    put stream de-para unformatted mgadm.emitente.cod-emitente at 1
                                   "," 
                                   i-cod-existe skip.
    
            
    put "100"                                    at 001
        i-cod-existe                format "999999999" at 004
        mgadm.emitente.nome-abrev   format "x(15)"     at 013.
        
    if mgadm.emitente.natureza = "F" then
        put "Fisica"   format "x(08)" at 028.
    else
        put "Juridica" format "x(08)" at 028.
        
   assign c-cnpj = replace(replace(replace(mgadm.emitente.cgc,".",""),"-",""),"/","")
          c-insc = replace(replace(replace(c-insc,".",""),"-",""),"/","").
        
    put mgadm.emitente.nome-emit     format "x(40)"    at 036
        c-cnpj                 format "x(20)"    at 076
        c-insc                 format "x(20)"    at 096
        mgadm.emitente.ins-municipal format "x(20)"    at 116
        yes                                      at 136
        mgadm.emitente.endereco      format "x(40)"    at 139
        mgadm.emitente.bairro        format "x(20)"    at 179
        mgadm.emitente.cidade        format "x(32)"    at 199
        mgadm.emitente.pais          format "x(20)"    at 263
        mgadm.emitente.estado        format "x(03)"    at 283
        string(mgadm.emitente.cep,"99999999")          at 286
        mgadm.emitente.caixa-postal  format "x(20)"    at 306
        mgadm.emitente.telefone[1]   format "x(20)"    at 326
        mgadm.emitente.ramal[1]      format "x(07)"    at 346
        mgadm.emitente.telefax       format "x(20)"    at 353
        mgadm.emitente.ramal-fax     format "x(07)"    at 373
        "Privada"              format "x(07)"    at 828.
        
    if mgadm.emitente.pais = "Brasil" then
        put "Nacional"      format "x(13)" at 835.
    else
        put "Multinacional" format "x(13)" at 835.
        
    put "99999"             format "x(08)"    at 848
        string(mgadm.emitente.modalidade) format "x(08)"    at 856.
        
    if mgadm.emitente.cod-banco <> 0 then 
        put string(mgadm.emitente.cod-banco)  format "x(08)"    at 864
            mgadm.emitente.agencia            format "x(10)"    at 872
            mgadm.emitente.conta-corren       format "x(10)"    at 882.
        
    put i-grup-forn format "99" at 892.
                
    put "Prorroga" format "x(08)"  at 896
        "Prorroga" format "x(08)"  at 904
        "Prorroga" format "x(08)"  at 912
        "Nao Paga" format "x(08)"  at 920
        no                         at 928
        "Produtos" format "x(08)"  at 934
        no                         at 942
        no                         at 957.
        
    if mgadm.emitente.natureza = "F" and 
       substring(mgadm.emitente.u-char-1,01,9) <> "" and
       substring(mgadm.emitente.u-char-1,01,9) <> "000000000" and
       substring(mgadm.emitente.u-char-1,13,2) <> "" then 
        put substring(mgadm.emitente.u-char-1,01,9)  at 1015   /* RG */
            "SSP"                              at 1035   /* Orgao emissor */
            substring(mgadm.emitente.u-char-1,13,2)  at 1045   /* Estado */.
            
    put string(mgadm.emitente.data-implant,"99999999") at 1112
        "310"                                    at 1120. /* Tipo de Fluxo */
        
    if mgadm.emitente.nome-matriz <> "" and
       mgadm.emitente.nome-matriz <> mgadm.emitente.nome-abrev then do:
       
       find b-emitente no-lock where 
            b-emitente.nome-abrev = mgadm.emitente.nome-matriz no-error.
            
       assign c-cnpj = replace(replace(replace(if avail b-emitente then b-emitente.cgc else "",".",""),"-",""),"/","").
       
       put c-cnpj at 1132.
       
    end.
    
    if mgadm.emitente.natureza = "F" then
       put substring(mgadm.emitente.u-char-1,15,20) at 1313. /* Profissao */
       
    put skip.
    
    for each mgadm.cont-emit no-lock where 
        mgadm.cont-emit.cod-emitente = mgadm.emitente.cod-emitente:
        put "200"                                 at 1
            cont-emit.nome     format "x(15)"        at 4
            cont-emit.nome     format "x(40)"        at 19
            cont-emit.telefone                       at 59
            cont-emit.ramal                          at 79
            cont-emit.telefax                        at 86
            cont-emit.ramal-fax                      at 106
            cont-emit.e-mail                         at 140 skip.
    end.
    IF i-cod-existe = i-novo-codigo THEN
        assign i-novo-codigo = i-novo-codigo + 1.
end.
        
output close.

Nenhum comentário:

Postar um comentário