Árvore de páginas

Versões comparadas

Chave

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

EXECAUTO

...

MATA150 - Documento de Entrada

Array

Produto:

Protheus

Versões:

Todas

Ocorrência:

Rotina Automática - MATA103 MATA150 (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érico
Opção desejada: 3-Inclusão; 4-Classificação; 5-Exclusão
2 : Inclui novo participante
3 : Atualiza os dados de uma cotação já existente
4 : Inclui uma nova proposta em uma cotação já existente
5 : Exclui toda a cotação
3
ExpL1Lógico
Indica se Apresenta ou não a Dialog da Rotina em Rotina Automática.
Filtra a Origem das Cotações para TRM.F.
ExpA3ExpA4ArrayParâ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 custo
Array contendo os valores de Impostos que irão sobrepor valores calculados. (Opcional)
ExpL2

Lógico

Parâ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

Indica se é uma simulação


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

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

"000035")

aadd(aCabec

//Cabeçalho
aadd(aCab

,{"

F1

C8_

TIPO

FORNECE" ,"

N

000010"

,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

1})
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})

" COM00000000000000000000000011" ,Nil},;
         

aadd(aItem,

          {"

D1

C8_

COD

ITEM" ,

PadR(

"0001",

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

Nil},;
             

aadd(aItem,

      {"

D1

C8_UM" ,"UN",

NIL

Nil}

)

,;
         

aadd(aItem,{"D1_LOCAL" ,"01" ,NIL})

         

aadd(aItem,

{"

D1

C8_QUANT" ,

1

10 ,

NIL

Nil}

)

,;
         

aadd(aItem,

          {"

D1

C8_

VUNIT

PRECO" ,

7508.33

0 ,NIL}

)

,;
                   

aadd(aItem,

{"

D1

C8_TOTAL" ,

7508.33

0 ,NIL}})

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

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

If !lMsErroAuto
       

  aadd

ConOut(

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

" Novo participante incluído" )
Else
       

 if

MostraErro(

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,

ConOut("Erro na inclusão!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return


// Atualiza Cotação

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")+"000035")

aadd(aCabec,{"C8_FORNECE" ,"000010"})
aadd(aCabec,{"C8_LOJA" ,"01"})
aadd(aCabec,{"C8_COND" ,"001"})
aadd(aCabec,{"C8_CONTATO" ,"AUTO"})
aadd(aCabec,{"C8_FILENT" ,"01"})
aadd(aCabec,{"C8_MOEDA" ,1})
aadd(aCabec,{"C8_EMISSAO" ,dDataBase})
aadd(aCabec,{"C8_TOTFRE" ,0})
aadd(aCabec,{"C8_VALDESC" ,0})
aadd(aCabec,{"C8_DESPESA" ,0})
aadd(aCabec,{"C8_SEGURO" ,0})
aadd(aCabec,{"C8_DESC1" ,0})
aadd(aCabec,{"C8_DESC2" ,0})
aadd(aCabec,{"C8_DESC3" ,0})

aadd(aItens,{{"C8_NUMPRO" ,"01" ,Nil},;
                    {"C8_PRODUTO" ," COM00000000000000000000000011" ,Nil},;
                    {"C8_ITEM" ,"0001",Nil},;
                    {"C8_UM" ,"UN",Nil},;
                    {"C8_QUANT" ,10 ,Nil},;
                    {"C8_PRECO" ,20 ,NIL},;
                    {"C8_TOTAL" ,200 ,NIL}})


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

If !lMsErroAuto
         ConOut("Cotação atualizada ")
Else
         MostraErro()
         ConOut("Erro na Atualização

2 = Não

//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

INCLUIR PROPOSTA

User Function incPMata150

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

User Function EXEC103

()
Local

aCab

aCabec := {}
Local

aItem := {}
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 :=

GetSxeNum("SF1","F1_DOC")
SF1->(dbSetOrder(1))
While SF1->(dbSeek(xFilial("SF1")+cNum))
ConfirmSX8()
cNum := GetSxeNum("SF1","F1_DOC")
EndDo//Cabeçalho
aadd(aCab,{"F1_TIPO" ,"C" ,NIL

{}
aItens := {}

aadd(aCabec,{"C8_NUM" ,"000035"})
aadd(aCabec,{"C8_FORNECE" ,"000010"})
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

1})
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" ," COM00000000000000000000000011" ,Nil},;
                    {"C8_ITEM" ,"0001",Nil},;
                    {"C8_UM" ,"UN",Nil},;
                    {"C8_QUANT" ,10 ,Nil},;
                    {"C8_PRECO" ,30 ,NIL},;
                    {"C8_TOTAL" ,300 ,NIL}})


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

If !lMsErroAuto
       ConOut("PROPOSTA INCLUÍDA")
Else
       MostraErro()
       ConOut("Erro na inclusão!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return

//EXCLUIR COTAÇÃO

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

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

aCabec :={}
aItens :={}
dbSelectArea("SC8")


aAdd(aCabec,{"C8_NUM" ,"000035"})
aAdd(aCabec,{"C8_FORNECE","000001"})
aAdd(aCabec,{"C8_LOJA" ,"00"})

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

 

                     

 

{"

NF_VALIPI

C8_PRODUTO","COM00000000000000000000000011" ,

  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)

If !lMsErroAuto

ConOut

       ConOut("

Incluido NF: " + cNum

Proposta Excluída")
Else

MostraErro

       MostraErro()

ConOut

       ConOut("Erro na

inclusao

Exclusão!")
EndIf

ConOut("Fim: " + Time())

RESET ENVIRONMENT

Return

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. 

Informações
titleImportante:

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
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

:

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})