Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Wiki Markup
||Descrição|| A rotina automática tem como objetivo permitir a inclusão e a exclusão de Faturas por Documentos de Transporte (CTE/CTRC) através de programas para atender as necessidades específicas do cliente.  
||Observações|| 
||Exemplos||//-- Exemplo execucao rotina automática para geracao faturas por documentos
User Function TM850Inc()
Local cAlias   := GetNextAlias()
Local cQuery   := ""
Local aCabDT6  := {}
Local aRegDT6  := {}
Local lTMSCTe  := SuperGetMv( "MV_TMSCTE", .F., .F. ) //-- Parametro do CT-e ativo.
//-- Filtros CTE
Local cTipo    := "FT"
Local cFilDeb  := "01"
Local cCliFat  := Padr("000001",Len(SA1->A1_COD ))
Local cLojFat  := Padr("01"    ,Len(SA1->A1_LOJA))
Local dDataDe  := CToD("01/08/2013")
Local dDataAte := CToD("31/08/2013")
//-- Parametros rotina automatica
Local nMoedFat := 1
Local dEmisFat := dDataBase
Local dVencFat := CToD( "31/12/2013" )
Local cNat     := "NATFAT"

lMsErroAuto := .F.
nModulo     := 43

cQuery := "SELECT DT6_FILDOC, DT6_DOC, DT6_SERIE,DT6_VALTOT,DT6_ACRESC,DT6_DECRES,DT6_DATEMI, "
cQuery + = "       DT6_VALFAT, DT6.R_E_C_N_O_ RECNO , DUY.DUY_EST UFDEST "
cQuery + = "     FROM "+RetSqlName("DT6")+" DT6 "
cQuery + = "LEFT JOIN "+RetSqlName("DUY")+" DUY "
cQuery + = "  ON DUY.DUY_FILIAL = '"+xFilial("DUY")+"'"
cQuery + = " AND DUY.DUY_GRPVEN = DT6.DT6_CDRDES"
cQuery + = " AND DUY.D_E_L_E_T_ = ' ' "
If	lTMSCTe
	cQuery += "LEFT JOIN "+RetSqlName("DTP")+" DTP "
	cQuery += "  ON DTP.DTP_FILORI = DT6.DT6_FILDOC "
	cQuery += " AND DTP.DTP_LOTNFC = DT6.DT6_LOTNFC "
	cQuery += " AND DTP.D_E_L_E_T_ = ' ' "
EndIf
cQuery + = "WHERE DT6.DT6_FILIAL = '"+xFilial("DT6") + "'"
cQuery + = "  AND DT6.DT6_CLIDEV = '"+cCliFat+"'"
cQuery + = "  AND DT6.DT6_LOJDEV = '"+cLojFat+"'"
cQuery + = "  AND DT6.DT6_PREFIX  ='"+Space(Len(DT6->DT6_PREFIX))+"'"
cQuery + = "  AND DT6.DT6_NUM     ='"+Space(Len(DT6->DT6_NUM   ))+"'"
cQuery + = "  AND DT6.DT6_TIPO    ='"+Space(Len(DT6->DT6_TIPO  ))+"'"
cQuery + = "  AND DT6.DT6_DATEMI >='"+DTOS(dDataDe) +"'"
cQuery + = "  AND DT6.DT6_DATEMI <='"+DTOS(dDataAte)+"'"
cQuery + = "  AND DT6.DT6_FILDEB  ='"+cFilDeb+"'"
// Fatura apenas documentos validos de transporte
cQuery + = "  AND DT6.DT6_DOCTMS NOT IN ( '1', 'A', 'K' )"    //('K'= Carregamento em Partes do Internacional)
cQuery + = "  AND DT6.DT6_SERIE <> 'PED'"
If	lTMSCTe // AUTORIZADO O USO DO CTE DT6_SITCTE = '2'
	cQuery + = "  AND ((DT6.DT6_SITCTE = ' ' AND DTP.DTP_TIPLOT = '1') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '0' AND DTP.DTP_TIPLOT = '1') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '1' AND DTP.DTP_TIPLOT = '3') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '2' AND DTP.DTP_TIPLOT = '3') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '4' AND DTP.DTP_TIPLOT = '3')) "
EndIf // ((AUTORIZADO O USO DO CTE e Lote Eletronico) ou (CTRC antigos e Lote Normal))
// Nao permite FATURAR ctrc que tenham solicitacoes de transferencias em aberto.
cQuery + = "  AND DT6.DT6_NUMSOL = ' '"
cQuery + = "  AND DT6.D_E_L_E_T_ = ' '"
cQuery + = "  ORDER BY " + SqlOrder(DT6->(IndexKey(1))+"+RECNO")
cQuery := ChangeQuery(cQuery)
dbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cAlias, .F., .T.)
Do While !(cAlias)->(Eof())
	//-- Layout contendo informacoes necessarias para geracao da fatura.
	aRegDT6 := {{ "DT6_FILDOC", (cAlias)->(DT6_FILDOC),Nil},; // 1
		{ "DT6_DOC"   , (cAlias)->(DT6_DOC   ),Nil},; // 2
		{ "DT6_SERIE" , (cAlias)->(DT6_SERIE ),Nil},; // 3
		{ "DT6_VALTOT", (cAlias)->(DT6_VALTOT),Nil},; // 4
		{ "DT6_ACRESC", (cAlias)->(DT6_ACRESC),Nil},; // 5
		{ "DT6_DECRES", (cAlias)->(DT6_DECRES),Nil},; // 6
		{ "_SI_VALFAT", (cAlias)->(DT6_VALFAT),Nil},; // 7
		{ "DT6_DATEMI", (cAlias)->(DT6_DATEMI),Nil},; // 8
		{ "_SI_UFDEST", (cAlias)->(UFDEST    ),Nil},; // 9
		{ "RECNO"     , (cAlias)->(RECNO     ),Nil} } // 10
	AAdd(aCabDT6,aClone(aRegDT6))
	(cAlias)->(DbSkip())
EndDo
(cAlias)->(dbCloseArea())

MsExecAuto({|q,r,s,t,u,v,w,x,y,z|TmsA850(q,r,s,t,u,v,w,x,y,z)}, aCabDT6, 3, cTipo, cFilDeb, cCliFat, cLojFat, nMoedFat, dEmisFat, dVencFat, cNat)
If lMsErroAuto
	   MostraErro()
EndIf

Return Nil

//-- Exemplo execucao rotina automática para exclusao faturas por documentos
User Function TM850Exc()
Local cAlias   := GetNextAlias()
Local cQuery   := ""
Local aCabDT6  := {}
Local aRegDT6  := {}
Local lTMSCTe  := SuperGetMv( "MV_TMSCTE", .F., .F. ) //-- Parametro do CT-e ativo.
//-- Filtros CTE
Local cTipo    := "FT"
Local cFilDeb  := "01"
Local cCliFat  := Padr("000001",Len(SA1->A1_COD ))
Local cLojFat  := Padr("01"    ,Len(SA1->A1_LOJA))
Local dDataDe  := CToD("01/08/2013")
Local dDataAte := CToD("31/08/2013")
Local cPrefix  := "FT "
Local cNum     := "000052   "
Local cParc    := "00A"
//-- Parametros rotina automatica
Local nMoedFat := 1
Local dEmisFat := dDataBase
Local dVencFat := CToD( "31/12/2013" )
Local cNat     := "NATFAT"

lMsErroAuto := .F.
nModulo     := 43

cQuery := "SELECT DT6_FILDOC, DT6_DOC, DT6_SERIE,DT6_VALTOT,DT6_ACRESC,DT6_DECRES,DT6_DATEMI, "
cQuery + = "       DT6_VALFAT, DT6.R_E_C_N_O_ RECNO , DUY.DUY_EST UFDEST "
cQuery + = "     FROM "+RetSqlName("DT6")+" DT6 "
cQuery + = "LEFT JOIN "+RetSqlName("DUY")+" DUY "
cQuery + = "  ON DUY.DUY_FILIAL = '"+xFilial("DUY")+"'"
cQuery + = " AND DUY.DUY_GRPVEN = DT6.DT6_CDRDES"
cQuery + = " AND DUY.D_E_L_E_T_ = ' ' "
If	lTMSCTe
	cQuery += "LEFT JOIN "+RetSqlName("DTP")+" DTP "
	cQuery += "  ON DTP.DTP_FILORI = DT6.DT6_FILDOC "
	cQuery += " AND DTP.DTP_LOTNFC = DT6.DT6_LOTNFC "
	cQuery += " AND DTP.D_E_L_E_T_ = ' ' "
EndIf
cQuery + = "WHERE DT6.DT6_FILIAL = '"+xFilial("DT6") + "'"
cQuery + = "  AND DT6.DT6_CLIDEV = '"+cCliFat+"'"
cQuery + = "  AND DT6.DT6_LOJDEV = '"+cLojFat+"'"
cQuery + = "  AND DT6.DT6_PREFIX  ='"+PadR(cPrefix,Len(DT6->DT6_PREFIX))+"'"
cQuery + = "  AND DT6.DT6_NUM     ='"+PadR(cNum   ,Len(DT6->DT6_NUM   ))+"'"
cQuery + = "  AND DT6.DT6_TIPO    ='"+PadR(cTipo  ,Len(DT6->DT6_TIPO  ))+"'"
cQuery + = "  AND DT6.DT6_DATEMI >='"+DTOS(dDataDe) +"'"
cQuery + = "  AND DT6.DT6_DATEMI <='"+DTOS(dDataAte)+"'"
cQuery + = "  AND DT6.DT6_FILDEB  ='"+cFilDeb+"'"
// Fatura apenas documentos validos de transporte
cQuery + = "  AND DT6.DT6_DOCTMS NOT IN ( '1', 'A', 'K' )"    //('K'= Carregamento em Partes do Internacional)
cQuery + = "  AND DT6.DT6_SERIE <> 'PED'"
If	lTMSCTe // AUTORIZADO O USO DO CTE DT6_SITCTE = '2'
	cQuery + = "  AND ((DT6.DT6_SITCTE = ' ' AND DTP.DTP_TIPLOT = '1') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '0' AND DTP.DTP_TIPLOT = '1') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '1' AND DTP.DTP_TIPLOT = '3') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '2' AND DTP.DTP_TIPLOT = '3') OR "
	cQuery + = "       (DT6.DT6_SITCTE = '4' AND DTP.DTP_TIPLOT = '3')) "
EndIf // ((AUTORIZADO O USO DO CTE e Lote Eletronico) ou (CTRC antigos e Lote Normal))
// Nao permite FATURAR ctrc que tenham solicitacoes de transferencias em aberto.
cQuery + = "  AND DT6.DT6_NUMSOL = ' '"
cQuery + = "  AND DT6.D_E_L_E_T_ = ' '"
cQuery + = "  ORDER BY " + SqlOrder(DT6->(IndexKey(1))+"+RECNO")
cQuery := ChangeQuery(cQuery)
dbUseArea(.T., "TOPCONN", TCGenQry(,,cQuery), cAlias, .F., .T.)
Do While !(cAlias)->(Eof())
	//-- Layout contendo informacoes necessarias para geracao da fatura.
	aRegDT6 : = {{ "DT6_FILDOC", (cAlias)->(DT6_FILDOC),Nil},; // 1
		{ "DT6_DOC"   , (cAlias)->(DT6_DOC   ),Nil},; // 2
		{ "DT6_SERIE" , (cAlias)->(DT6_SERIE ),Nil},; // 3
		{ "DT6_VALTOT", (cAlias)->(DT6_VALTOT),Nil},; // 4
		{ "DT6_ACRESC", (cAlias)->(DT6_ACRESC),Nil},; // 5
		{ "DT6_DECRES", (cAlias)->(DT6_DECRES),Nil},; // 6
		{ "_SI_VALFAT", (cAlias)->(DT6_VALFAT),Nil},; // 7
		{ "DT6_DATEMI", (cAlias)->(DT6_DATEMI),Nil},; // 8
		{ "_SI_UFDEST", (cAlias)->(UFDEST    ),Nil},; // 9
		{ "RECNO"     , (cAlias)->(RECNO     ),Nil} } // 10
	AAdd(aCabDT6,aClone(aRegDT6))
	(cAlias)->(DbSkip())
EndDo
(cAlias)->(dbCloseArea())

- Posicionar titulo SE1
dbSelectArea("SE1")
dbSetOrder(1) //E1_FILIAL+E1_PREFIXO+E1_NUM+E1_PARCELA+E1_TIPO
dbSeek(xFilial("SE1")+cPrefix+cNum+cParc+cTipo)

MsExecAuto({|x,y|TmsA850(x,y)}, aCabDT6, 5	)
If lMsErroAuto
	   MostraErro()
EndIf

Return Nil

||Preview|| 
||Veja também|| 
||Idioma|| Português(Brasil)
||Versões|| Microsiga_Protheus11
||Sistemas Operacionais Suportados||Todos
||Compatível com as Bases de Dados||Todas
||Updates|| 
||Parâmetros|| aAutoCab - Cabeçalho dos Documentos de Transporte, matriz conforme layout abaixo.
Item 01 "DT6_FILDOC", conteúdo, Nil
Item 02 "DT6_DOC", conteúdo, Nil
Item 03 "DT6_SERIE", conteúdo, Nil
Item 04 "DT6_VALTOT", conteúdo, Nil
Item 05 "DT6_ACRESC", conteúdo, Nil
Item 06 "DT6_DECRES", conteúdo, Nil
Item 07 "_SI_VALFAT", conteúdo, Nil
Item 08 "DT6_DATEMI", conteúdo, Nil
Item 09 "_SI_UFDEST", conteúdo, Nil
Item 10 "RECNO", conteúdo, Nil
nOpcAuto – Opção Menu (numérico), onde 3 para inclusão e 5 para exclusão.
cTipo – Tipo Fatura (caracter).
cFilDeb – Filial Débito (caracter).
cCliente – Cliente (caracter).
cLoja – Loja (caracter).
nMoeAut  – Moeda (numérico).
dEmiAut  – Data de Emissão (data).
dVenAut  – Data de Vencimento da Fatura (data).
cNatAut  – Natureza Operação (caracter)
||Retorno|| 
||Eventos de chamada do Ponto de Entrada|| 
||Variáveis|| 
||Programa Fonte|| TMSA850.PRW