Código: Selecionar todos
STATIC FUNCTION CARREGA_CTRANSP(nModulo)
LOCAL q,v,i, vTela:=saveTela()
LOCAL xPasta
TV_MODULO("Carrega Conhecimentos de Transporte")
@ 03,03 say "Este rotina verifica a pasta aonde voce ja baixou os XLM dos conhecimentos"
@ 04,03 say "de transporte, le o seu conteudo e grava os registros no sistema."
do while .T.
xPasta:=space(60)
xPasta:="C:\XHB\VOLP\TBA\CT\"+space(41)
@ 06,03 say "Pasta:" get xPasta pict [@!] valid ! empty(xPasta)
l24("Digite a pasta desejada ou ESC para sair")
read
if at(":",xPasta)=0
alert("Inclua a letra do disco desejado (ex C:\ ou R:\")
loop
endif
if at("\",xPasta)=0
alert("Inclua o caminho completo, incluindo as subpastas")
loop
endif
cPasta:=alltrim(xPasta)
if subs(cPasta,len(cPasta),1)<>"\"
cPasta+="\"
endif
nLen:=ADIR(alltrim(xPasta))
if nLen==0
alert("Nenhum arquivo salvo nesta pasta")
loop
endif
@ 7,0 clear to 23,79
aName := Array( nLen )
aSize := Array( nLen )
aDate := Array( nLen )
aTime := Array( nLen )
aAttr := Array( nLen )
** Pega data e hora do executavel da unidade c
ADir(cPasta, aName, aSize, aDate, aTime, aAttr )
for i:=1 to nLen
xNomeArq:=aName[i]
if alltrim(xNomeArq)=="." .or. alltrim(xNomeArq)==".."
loop
endif
xDataXml:=aDate[i]
@ 8,3 say "Lendo arquivo "+xNomeArq
xConteudo:=MEMOREAD(cPasta+xNomeArq)
xEmit:=TAG_XML('emit',xConteudo)
xCnpj:=TAG_XML('CNPJ',xEmit)
xChaveNfe:=TAG_XML('chave',xConteudo)
xToma3:=TAG_XML('toma3',xConteudo)
xToma:=TAG_XML('toma',xToma3)
xNct:=TAG_XML('nCT',xConteudo)
xdhEmi:=TAG_XML('dhEmi',xConteudo)
xcMunEnv:=TAG_XML('cMunEnv',xConteudo)
xxMunEnv:=TAG_XML('xMunEnv',xConteudo)
xUFEnv:=TAG_XML('UFEnv',xConteudo)
xcMunIni:=TAG_XML('cMunIni',xConteudo)
xxMunIni:=TAG_XML('xMunIni',xConteudo)
xUFIni:=TAG_XML('UFIni',xConteudo)
xcMunFim:=TAG_XML('cMunFim',xConteudo)
xxMunFim:=TAG_XML('xMunFim',xConteudo)
xUFFim:=TAG_XML('UFFim',xConteudo)
xEmit:=TAG_XML('emit',xConteudo)
xIE:=TAG_XML('IE',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xxNome:=TAG_XML('xNome',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xLgr:=TAG_XML('xLgr',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xNro:=TAG_XML('nro',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xxBairro:=TAG_XML('xBairro',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xcMun:=TAG_XML('cMun',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xxMun:=TAG_XML('xMun',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xCEP:=TAG_XML('CEP',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xUF:=TAG_XML('UF',xEmit)
xEmit:=TAG_XML('emit',xConteudo)
xFone:=TAG_XML('fone',xEmit)
xRem:=TAG_XML('rem',xConteudo)
xrCnpj:=TAG_XML('CNPJ',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrIE:=TAG_XML('IE',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrNome:=TAG_XML('xNome',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrFone:=TAG_XML('fone',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrLgr:=TAG_XML('xLgr',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrNro:=TAG_XML('nro',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrcMun:=TAG_XML('cMun',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrxMun:=TAG_XML('xMun',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrCep:=TAG_XML('CEP',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrUF:=TAG_XML('UF',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrcPais:=TAG_XML('cPais',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrxPais:=TAG_XML('xPais',xRem)
xRem:=TAG_XML('rem',xConteudo)
xrBairro:=TAG_XML('xBairro',xRem)
xDest:=TAG_XML('dest',xConteudo)
xdCnpj:=TAG_XML('CNPJ',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdIE:=TAG_XML('IE',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdNome:=TAG_XML('xNome',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdFone:=TAG_XML('fone',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdxLgr:=TAG_XML('xLgr',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdNro:=TAG_XML('Nro',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdBairro:=TAG_XML('xBairro',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdcMun:=TAG_XML('cMun',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdxMun:=TAG_XML('xMun',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdCEP:=TAG_XML('CEP',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdUF:=TAG_XML('UF',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdcPais:=TAG_XML('cPais',xDest)
xDest:=TAG_XML('dest',xConteudo)
xdxPais:=TAG_XML('xPais',xDest)
xvPrest:=TAG_XML('vPrest',xConteudo)
xvTPrest:=TAG_XML('vTPreste',xvPrest)
xImp:=TAG_XML('imp',xConteudo)
xvTotTrib:=TAG_XML('vTotTrib',xImp)
xImp:=TAG_XML('imp',xConteudo)
xCST:=TAG_XML('CST',xImp)
xImp:=TAG_XML('imp',xConteudo)
xvBC:=TAG_XML('vBC',xImp)
xImp:=TAG_XML('imp',xConteudo)
xpICMS:=TAG_XML('pICMS',xImp)
xImp:=TAG_XML('imp',xConteudo)
xvICMS:=TAG_XML('vICMS',xImp)
** xToma: Indicador do "papel" do tomador do serviço no CT-e.
** 0-Remetente; 1-Expedidor; 2-Recebedor; 3-Destinatário.
** só quero os CT aonde o Remetente (VOLP) é o tomador, ou seja, quem paga
if xToma<>'0'
loop
endif
** checar se esse conhecimento já não está gravado
** usar o nct + cnpj da transportadora
q:="select nct, emit_cnpj from ctranspc where nct='"+xNct+"' and emit_cnpj='"+xCnpj+"'"
v:=F_GETCON(q)
if len(v)>0
alert("Existe registro com este NCT e CNPJ cadastrado; Registro nao pode ser duplicado")
RETURN NIL
endif
** hora da emissao
q:="select dhemi from ctranspc"
v:=F_GETCON(q)
if len(v)==0
loop
endif
xdhEmi:=v[1,1]
xDatXML :=subs(xdhEmi,1,10)
xHoraXML :=subs(xdhEmi,12,08)
@ 20,03 say "Data da Emissao: "+xDatXML
@ 21,03 say "Hora da Emissao: "+xHoraXML
** Dados da transportadora
cCnpj:=subs(xCnpj,1,2)+"."+subs(xCnpj,3,3)+"."+subs(xCnpj,6,3)+"/"+subs(xCnpj,9,4)+"-"+subs(xCnpj,13,2)
@ 09,03 say "Emitente:"
@ 10,03 say "Cnpj : "+cCnPj
q:="select razao,codfor from fornec where grufor='11' and fr_volp='S' and cgc='"+cCnpj+"'"
w:=F_GETCON(q)
if len(w)==0
loop
endif
xRazao :=w[1,1]
xCodFor:=w[1,2]
@ 11,03 say " Razao Social: "+xRazao
** Dados da NF
q:="select bnnf,pesob,valtot from notac where chavenfe='"+xChaveNfe+"'"
w:=F_GETCON(q)
if len(w)==0
loop
endif
xBnnf :=w[1,1]
xpesob :=w[1,2]
xvaltot :=w[1,3]
@ 12,03 say " Chave Nfe: "+xChaveNfe
@ 13,03 say " Nfe: "+xBnnf
vc:={}
aadd(vc,{"datcad","curDate()",.T.,xDatcad})
aadd(vc,{"horcad","curTime()",.T.,xHorcad})
aadd(vc,{"quemcad",pCodUsu})
aadd(vc,{"xml",xNomeArq})
aadd(vc,{"dataxml",xDatXML})
aadd(vc,{"horacad",xHoraXML})
aadd(vc,{"nct",xNct})
aadd(vc,{"dhemi",xDhemi})
aadd(vc,{"cmunenv",xcMunEnv})
aadd(vc,{"xmunenv",xxMunEnv})
aadd(vc,{"ufenv",xUFEnv})
aadd(vc,{"cmunini",xcMunIni})
aadd(vc,{"xmunini",xxMunIni})
aadd(vc,{"ufini",xUFIni})
aadd(vc,{"cmunfim",xcMunFim})
aadd(vc,{"xmunfim",xxMunFim})
aadd(vc,{"uffim",xUFFim})
aadd(vc,{"emit_cnpj",cCnpj})
aadd(vc,{"emit_ie",xIE})
aadd(vc,{"emit_xnome",xxNome})
aadd(vc,{"emit_xlgr",xLgr})
aadd(vc,{"emit_xnro",xNro})
aadd(vc,{"emit_xbairro",xxBairro})
aadd(vc,{"emit_cmun",xcMun})
aadd(vc,{"emit_xmun",xxMun})
aadd(vc,{"emit_cep",xCEP})
aadd(vc,{"emit_uf",xUF})
aadd(vc,{"emit_fone",xFone})
aadd(vc,{"rem_cnpj",xrCnpj})
aadd(vc,{"rem_ie",xrIE})
aadd(vc,{"rem_xnome",xrNome})
aadd(vc,{"rem_fone",xrFone})
aadd(vc,{"rem_xlgr",xrLgr})
aadd(vc,{"rem_nro",xrNro})
aadd(vc,{"rem_xbairro",xrBairro})
aadd(vc,{"rem_cmun",xrcMun})
aadd(vc,{"rem_xmun",xrxMun})
aadd(vc,{"rem_cep",xrCep})
aadd(vc,{"rem_uf",xrUF})
aadd(vc,{"rem_cpais",xrcPais})
aadd(vc,{"rem_xpais",xrxPais})
aadd(vc,{"exped_cnpj",cCnpj})
aadd(vc,{"exped_ie",xIE})
aadd(vc,{"exped_xnome",xxNome})
aadd(vc,{"exped_fone",xFone})
aadd(vc,{"exped_xlgr",xLgr})
aadd(vc,{"exped_nro",xNro})
aadd(vc,{"exped_xbairro",xxBairro})
aadd(vc,{"exped_cmun",xcMun})
aadd(vc,{"exped_xmun",xxMun})
aadd(vc,{"exped_cep",xCEP})
aadd(vc,{"exped_uf",xUF})
aadd(vc,{"exped_cpais",xdcPais})
aadd(vc,{"exped_xpais",xdxPais})
aadd(vc,{"receb_cnpj",xrCnpj})
aadd(vc,{"receb_ie",xrIE})
aadd(vc,{"receb_xnome",xrNome})
aadd(vc,{"receb_fone",xrFone})
aadd(vc,{"receb_xlgr",xrLgr})
aadd(vc,{"receb_nro",xrNro})
aadd(vc,{"receb_xbairro",xrBairro})
aadd(vc,{"receb_cmun",xrcMun})
aadd(vc,{"receb_xmun",xrxMun})
aadd(vc,{"receb_cep",xrCep})
aadd(vc,{"receb_uf",xrUF})
aadd(vc,{"receb_cpais",xrcPais})
aadd(vc,{"receb_xpais",xrxPais})
aadd(vc,{"dest_cnpj",xdCnpj})
aadd(vc,{"dest_ie",xdIE})
aadd(vc,{"dest_xnome",xdNome})
aadd(vc,{"dest_fone",xdFone})
aadd(vc,{"dest_xlgr",xdxLgr})
aadd(vc,{"dest_nro",xdNro})
aadd(vc,{"dest_xbairro",xdBairro})
aadd(vc,{"dest_cmun",xdcMun})
aadd(vc,{"dest_xmun",xdxMun})
aadd(vc,{"dest_cep",xdCEP})
aadd(vc,{"dest_uf",xdUF})
aadd(vc,{"dest_cpais",xdcPais})
aadd(vc,{"dest_xpais",xdxPais})
aadd(vc,{"vtprest",xvTPrest})
aadd(vc,{"icms_cst",xCST})
aadd(vc,{"icms_vbc",xvBC})
aadd(vc,{"icms_picms",xpICMS})
aadd(vc,{"icms_vicms",xvICMS})
aadd(vc,{"vtottrib",xvTotTrib})
aadd(vc,{"chave",xChaveNfe})
aadd(vc,{"bnnf",xBnnf})
aadd(vc,{"valornf",xvaltot})
aadd(vc,{"pesob",xpesob})
aadd(vc,{"codtra",xcodfor})
q:=F_MONTAQUERY(vc,"ctranspc",.T.)
F_MOSTRAQ(q)
F_TRANSACTION({q})