Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Importante

Observações:

O parâmetro aCodRet contendo o array com os códigos de retenção pode ser referenciado com um ou mais impostos ou com a referencia genérica "..." assim como aparece na aba de impostos da nota fiscal de entrada. 
Para gravar os códigos de retenção é necessário habilitar o parâmetro MV_VISDIRF. 

:

Quando a rotina automática de Documentos de Entrada(MATA103) for chamada com a opção 4 = Classificação, deve-se necessariamente informar a variável LINPOS, conforme exemplo abaixo:

Produto:

Protheus

Versões:

Todas

Ocorrência:

Rotina Automática - MATA103 (Execauto)

Ambiente:

SIGACOM - Compras

Descrição:Rotina automática que permite a atualização, exclusão de cotação / inclusão de itens / exclusão de cotação.um novo participante em uma cotação já existente
Parâmetros:

.

NomeTipoDescriçãoConteúdo Default
ExpA1ArrayArray contendo os dados do cabeçalho da Nota Fiscal de Entrada.cotação
ExpA2

Array

Array contendo os itens da Nota Fiscal de Entrada.cotação
ExpN1NuméricoOpção desejada: 3-Inclusão; 4-Classificação; 5-Exclusão3
ExpL1LógicoIndica se Apresenta ou não a Dialog da Rotina em Rotina Automática..F.Filtra a Origem das Cotações para TRM.F.
ExpL2

Lógico

Indica se é uma simulação


ExpN2NuméricoItem recebido pela p/ser excluído pela Exec.AutoExpA3

Array

Array contendo os valores de Impostos que irão sobrepor valores calculados. (Opcional)ExpA4ArrayParâmetro de uso interno TOTVS.ExpA5ArrayArray com os perguntes MTA103 que a rotina automática atualiza em tempo de execução.ExpA6ArrayArray contendo os dados do rateio por centro de custoExpL2LógicoParâmetro de uso interno TOTVS.ExpC1CaracterCódigo de retorno SEFAZ que será gravado no campo F3_CODRSEFExpA7ArrayArray contendo a informação se gera DIRF e os códigos de retenção por imposto

Passo a passo:

#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"


//INCLUSÃO DE UM NOVO PARTICIPANTE

User Function IncMata150

//DOCUMENTO TIPO NORMAL

#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103

()
Local

aCab

aCabec := {}
Local

aItem := {}
Local

aItens := {}

Local aAutoImp := {}
Local aItensRat := {}
Local aCodRet := {}
Local aParamAux := {}
Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0
Local nReg := 1

Conout("Inicio: " + Time())

Private

PRIVATE lMsErroAuto := .F.

Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "

32

99" FILIAL "

6597

01" MODULO "COM"

cNum := GetSxeNum("SF1","F1_DOC")
SF1->(

//| Posiciona a cotação em que o novo participante será incluído. |//
dbSelectArea("SC8")
dbSetOrder(1)

)


While SF1->(

dbSeek(xFilial("

SF1

SC8")+

cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo

"000055")

aadd(aCabec

//Cabeçalho
aadd(aCab

,{"

F1

C8_

TIPO

FORNECE" ,"

N

2 "

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

FORMUL

LOJA" ,"

N

01"

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

DOC" ,cNum ,NIL})
aadd(aCab,{"F1_SERIE" ,"1 " ,NIL

COND" ,"001"})
aadd(

aCab

aCabec,{"

F1

C8_

EMISSAO

CONTATO" ,

DDATABASE ,NIL})
aadd(aCab,{"F1_DTDIGIT" ,DDATABASE ,NIL

"AUTO"})
aadd(

aCab

aCabec,{"

F1

C8_

FORNECE

FILENT" ,"

001

01"

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

LOJA

MOEDA" ,

"01" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

ESPECIE

EMISSAO" ,

"CTE" ,NIL

dDataBase})
aadd(

aCab

aCabec,{"

F1

C8_

COND

TOTFRE" ,

"001" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

DESPESA

VALDESC" ,

10 ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

DESCONT

DESPESA" ,0

,Nil

})
aadd(

aCab

aCabec,{"

F1

C8_SEGURO" ,0

,Nil

})
aadd(

aCab

aCabec,{"

F1

C8_

FRETE

DESC1" ,0

,Nil

})
aadd(

aCab

aCabec,{"

F1

C8_

MOEDA

DESC2" ,

1 ,Nil

0})
aadd(

aCab

aCabec,{"

F1

C8_

TXMOEDA

DESC3" ,

1 ,Nil

0})

aadd(

aCab

aItens,{{"

F1

C8_

STATUS

NUMPRO" ,"

A

01" ,Nil}

)//Itens
For nX := 1 To 1

,;
           

aItem := {}

         

aadd(aItem,

{"

D1

C8_

ITEM

PRODUTO" ,

StrZero(nX,4) ,NIL})

"ZZ-002" ,Nil},;
                 

aadd(aItem,

   {"

D1

C8_

COD

ITEM" ,

PadR(

"0001",

TamSx3("D1_COD")[1]) ,NIL})

Nil},;
                   

aadd(aItem,

 {"

D1

C8_UM" ,"

UN

CX " ,

NIL

Nil}

)

,;
           

aadd(aItem,

         {"

D1

C8_

LOCAL

QUANT" ,

"01"

1000 ,

NIL

Nil}

)

,;
         

aadd(aItem,

           {"

D1

C8_

QUANT

PRECO" ,1 ,NIL}

)

,;
           

aadd(aItem,{"D1_VUNIT" ,7508.33 ,NIL})

         

aadd(aItem,

{"

D1

C8_TOTAL" ,

7508.33

1000 ,NIL}})

          aadd(aItem,{"D1_TES" ,"001" ,NIL})

MSExecAuto({|v,x,y| MATA150(v,x,y)},aCabec,aItens,3)

If !lMsErroAuto
     

    aadd(aItem,{"D1_RATEIO" ,"1" ,NIL})

         if(nOpc == 4)//Se for classificação deve informar a variável LINPOS

              aAdd(aItem, {"LINPOS" , "D1_ITEM",  StrZero(nX,4)}) //ou SD1->D1_ITEM  se estiver posicionado.

         endIf

       aAdd(aItens,aItem)
Next nX

//Rateio de Centro de Custo
aItem := {}
aAdd(aItensRat, Array(2))
aItensRat[Len(aItensRat)][1] := "0001"
aItensRat[Len(aItensRat)][2] := {}

aAdd(aItem, {"DE_FILIAL" , xFilial("SDE") , Nil})
aAdd(aItem, {"DE_ITEM" , StrZero(1,TamSx3("DE_ITEM")[1]) , Nil})
aAdd(aItem, {"DE_DOC" , cNum , Nil})
aAdd(aItem, {"DE_SERIE" , "1" , Nil})
aAdd(aItem, {"DE_FORNECE" , "001 " , Nil})
aAdd(aItem, {"DE_LOJA" , "01" , Nil})
aAdd(aItem, {"DE_ITEMNF" , "0001" , Nil})
aAdd(aItem, {"DE_PERC" , 100 , Nil})
aAdd(aItem, {"DE_CC" , "01" , Nil})
aAdd(aItensRat[Len(aItensRat)][2], aClone(aItem))

//Array contendo a informação se gera DIRF e os códigos de retenção por imposto
aAdd( aCodRet, {01, "0297", 1, "..."} )
aAdd( aCodRet, {02, "0297", 1, "IRR"} )
aAdd( aCodRet, {03, "5979", 1, "PIS"} )
aAdd( aCodRet, {04, "5960", 1, "COF"} )
aAdd( aCodRet, {05, "5987", 1, "CSL"} )
// Exemplo para manipular o pergunte MTA103
aAdd(aParamAux, {"MV_PAR01", 2}) //-- Mostra Lanc. Contabil? 1 = Sim, 2 = Não
aAdd(aParamAux, {"MV_PAR06", 1}) //-- Contabilizacao Online? 1 = Sim, 2 = Não

ConOut(" Incluido NF: " + cNum)
Else
      MostraErro()
      ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return


//ALTERAÇÃO DE UMA COTAÇÃO JÁ EXISTENTE

User Function AltMata150()
Local aCabec := {}
Local aItens := {}
PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM"

aCabec:={}
aItens:={}

dbSelectArea("SC8")
dbSetOrder(1)
dbSeek(xFilial("SC8")+"000055")

aadd(aCabec,{"C8_FORNECE" ,"1 "})
aadd(aCabec,{"C8_LOJA" ,"01"})
aadd(aCabec,{"C8_COND" ,"001"})
aadd(aCabec,{"C8_CONTATO" ,"AUTO"})
aadd(aCabec,{"C8_FILENT" ,"01"})
aadd(aCabec,{"C8_MOEDA" ,0})
aadd(aCabec,{"C8_EMISSAO" ,dDataBase})
aadd(aCabec,{"C8_SEGURO" ,100})

aadd(aItens,{{"C8_NUMPRO" ,"01" ,Nil},;
                     {"C8_PRODUTO" ,"ZZ-002" ,Nil},;
                     {"C8_ITEM" ,"0001",Nil},;
                     {"C8_UM" ,"CX " ,Nil},;
                     {"C8_QUANT" ,2000 ,Nil}})


MSExecAuto({|v,x,y| MATA150(v,x,y)},aCabec,aItens,3)

If !lMsErroAuto
     

//3-Inclusão / 4-Classificação / 5-Exclusão
MSExecAuto({|x,y,z,k,a,b| MATA103(x,y,z,,,,k,a,,,b)},aCab,aItens,nOpc,aParamAux,aItensRat,aCodRet)

If !lMsErroAuto

ConOut(" Incluido NF: " + cNum)
Else
      MostraErro()
      ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT


Return

//

DOCUMENTO TIPO COMPLEMENTO

INCLUSÃO DE UMA PROPOSTA EM UMA COTAÇÃO JÁ EXISTENTE

User Function AltMata150

#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TbiConn.ch"

User Function EXEC103

()
Local

aCab := {}
Local aItem

aCabec := {}
Local aItens := {}

Local nOpc := 3
Local cNum := ""
Local nI := 0
Local nX := 0

Conout("Inicio: " + Time())

Private

PRIVATE lMsErroAuto := .F.

Private lMsHelpAuto := .T.

PREPARE ENVIRONMENT EMPRESA "

32

99" FILIAL "

6597

01" MODULO "COM"

cNum

aCabec := {}
aItens :=

GetSxeNum

{}

dbSelectArea("

SF1","F1_DOC"

SC8")

SF1->(

dbSetOrder(1

)

)

While SF1->(

dbSeek(xFilial("

SF1

SC8")+

cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo//Cabeçalho

"000055")

aadd(

aCab

aCabec,{"

F1

C8_

TIPO

FORNECE" ,"

C

1 "

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

TPCOMPL

LOJA" ,"

3

01"

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

DOC

COND" ,

cNum ,NIL

"001"})
aadd(

aCab

aCabec,{"

F1

C8_

SERIE

CONTATO" ,"

1

AUTO"

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

FORNECE

FILENT" ,"

001

01"

,NIL

})
aadd(

aCab

aCabec,{"

F1

C8_

LOJA

MOEDA" ,

"01" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_EMISSAO" ,

DDATABASE ,NIL

dDataBase})
aadd(

aCab

aCabec,{"

F1

C8_

DTDIGIT

TOTFRE" ,

DDATABASE ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

FORMUL

VALDESC" ,

"N" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

ESPECIE

DESPESA" ,

"CTE" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

COND

SEGURO" ,

"001" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

MODAL

DESC1" ,

"01" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

TPFRETE

DESC2" ,

"C" ,NIL

0})
aadd(

aCab

aCabec,{"

F1

C8_

TPCTE

DESC3" ,

"N" ,NIL

0})

aadd(

aCab

aItens,{{"

F1

C8_

EST

NUMPRO" ,"

SP

02" ,

NIL

Nil}

)
aadd(aCab,{"F1_DESCONT" , 0 , Nil})
aadd(aCab,{"F1_SEGURO" , 0 , Nil})
aadd(aCab,{"F1_FRETE" , 0 , Nil})
aadd(aCab,{"F1_MOEDA" , 1 , Nil})
aadd(aCab,{"F1_TXMOEDA" , 1 , Nil})
aadd(aCab,{"F1_STATUS" , "A" , Nil})

//Itens
For nX := 1 To 1
aItem := {}
aadd(aItem,{"D1_ITEM" ,StrZero(nX,4) ,NIL})
aadd(aItem,{"D1_COD" ,PadR("0001",TamSx3("D1_COD")[1]) ,NIL})
aadd(aItem,{"D1_UM" ,"UN" ,NIL})
aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})
aadd(aItem,{"D1_VUNIT" ,1000 ,NIL})
aadd(aItem,{"D1_TOTAL" ,1000 ,NIL})
aadd(aItem,{"D1_TES" ,"001" ,NIL})
aadd(aItem,{"D1_NFORI" ,"000009015" ,NIL})
aadd(aItem,{"D1_SERIORI" ,"1 " ,NIL})
aadd(aItem,{"D1_ITEMORI" ,"0001" ,NIL})
aAdd(aItens,aItem)
Next nX

//Impostos (Informar a referência do imposto, que consta no valid do campo)

//Para impostos de cabeçalho informar: referência, valor  
aAutoImp := { {"NF_FRETE" ,  10},;

,;
                     {"C8_PRODUTO" ,"ZZ-002" ,Nil},;
                     {"C8_ITEM" ,"0001",Nil},;
                     {"C8_UM" ,"CX " ,Nil},;
                     {"C8_QUANT" ,3000 ,Nil}})


MSExecAuto({|v,x,y| MATA150(v,x,y)},aCabec,aItens,4)

If !lMsErroAuto
      ConOut(" Incluido NF: " + cNum)
Else
      MostraErro()
      ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return

//ALTERAÇÃO DE UMA COTAÇÃO JÁ EXISTENTE

User Function AltMata150()
Local aCabec := {}
Local aItens := {}
PRIVATE lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "COM"


aCabec :={}
aItens :={}

aAdd(aCabec,{"C8_NUM" ,"000055"})
aAdd(aCabec,{"C8_FORNECE","000001"})
aAdd(aCabec,{"C8_LOJA" ,"01"})

aAdd(aItens,{{"C8_NUMPRO" ,"01" ,Nil},;

   

                     {"

NF_VALIPI

C8_PRODUTO","1" ,

  15

Nil},;
                     

   

{"

NF

C8_

VALICM

ITEM" ,

7}}

//Para impostos de Itens informar: referência, valor, número da linha
aAdd(aAutoImp, {'IT_BASEICM', 100, 1}) //Base
aAdd(aAutoImp, {'IT_VALICM', 12,     1}) //Valor imposto 
aAdd(aAutoImp, {'IT_ALIQICM',12,    1}) //Porcentagem Imposto

//3-Inclusão / 4-Classificação / 5-Exclusão

"0001" ,Nil}})


MSExecAuto({|v,x,y

,z

|

MATA103

MATA150(v,x,y

,z

)},

aCab

aCabec,aItens,

nOpc

5,,,"0001")

If !lMsErroAuto
      ConOut(" Incluido NF: " + cNum)
Else
      MostraErro()
      ConOut("Erro na inclusao!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return

title
Informações

Não deve-se utilizar o campo D1_ITEM no comando "For". O uso desse campo no array que trás as informações dos itens do documento de entrada, impede a execução correta do Excecauto.

Informações
titlePara opção Classificação
Bloco de código
languagedelphi
titleLINPOS
aAdd(aLinha, {"LINPOS"	,		"D1_ITEM",                 SD1->D1_ITEM})
Informações
titlePara opção Inclusão

Validar chave NFE, o usuário terá que passar no array do cabeçalho a nomenclatura VLDAMNFE indicando se deve ou não fazer a validação da chave

Bloco de código
languagedelphi
titleLINPOS
aAdd(aCab, {"VLDAMNFE" , "S", Nil})