Passo a passo: | User Function ExecAu103() Local aCabec := {} Local aItens := {} Local aLinha := {} Local aColsCC := {} Local aCodRet := {} Local nX := 0 Local nY := 0 Local cDoc := "" Local lOk := .T. Private lMsErroAuto := .F. Private lMsHelpAuto := .T. //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Abertura do ambiente | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ConOut(Repl("-",80)) ConOut(PadC("Teste de Inclusao de 1000 documentos de entrada com 20 itens cada",80)) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Verificacao do ambiente para teste | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("SB1") dbSetOrder(1) If !SB1->(MsSeek(xFilial("SB1")+"001 ")) //Verificar a existência do produto lOk := .F. ConOut("Cadastrar produto: 001") EndIf dbSelectArea("SF4") dbSetOrder(1) If !SF4->(MsSeek(xFilial("SF4")+"001")) //Verificar a existência do tes lOk := .F. ConOut("Cadastrar TES: 001") EndIf dbSelectArea("SE4") dbSetOrder(1) If !SE4->(MsSeek(xFilial("SE4")+"001")) //Verificar a existência do condição de pagamento lOk := .F. ConOut("Cadastrar condicao de pagamento: 001") EndIf dbSelectArea("SA2") dbSetOrder(1) If !SA2->(MsSeek(xFilial("SA2")+"001 ")) //Verificar a existência do fornecedor lOk := .F. ConOut("Cadastrar fornecedor: 001 ") EndIf If lOk ConOut("Inicio: "+Time()) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Verifica o último documento valido para um fornecedor | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ dbSelectArea("SF1") dbSetOrder(2) MsSeek(xFilial("SF1")+"000001z",.T.) dbSkip(-1) cDoc := SF1->F1_DOC For nY := 1 To 1000 //Altere para a quantidade desejada aCabec := {} aItens := {}
If Empty(cDoc) cDoc := StrZero(1,Len(SD1->D1_DOC)) Else cDoc := Soma1(cDoc) EndIf
//ExpA1 - Array contendo os dados do cabeçalho da Nota Fiscal de Entrada. aadd(aCabec,{"F1_TIPO" , "N" , Nil}) aadd(aCabec,{"F1_FORMUL" , "N" , Nil}) aadd(aCabec,{"F1_DOC" , cDoc , Nil}) aadd(aCabec,{"F1_SERIE" , "UNI" , Nil}) aadd(aCabec,{"F1_EMISSAO" , dDataBase , Nil}) aadd(aCabec,{"F1_DESPESA" , 12 , Nil}) aadd(aCabec,{"F1_FORNECE" , "001 " , Nil}) aadd(aCabec,{"F1_LOJA" , SA2->A2_LOJA, Nil}) aadd(aCabec,{"F1_ESPECIE" , "NFE " , Nil}) aadd(aCabec,{"F1_COND" , "001" , Nil}) aadd(aCabec,{"F1_DESCONT" , 0 , Nil}) aadd(aCabec,{"F1_SEGURO" , 0 , Nil}) aadd(aCabec,{"F1_FRETE" , 0 , Nil}) aadd(aCabec,{"F1_VALMERC" , 100 , Nil}) aadd(aCabec,{"F1_VALBRUT" , 100 , Nil}) aadd(aCabec,{"F1_MOEDA" , 2 , Nil}) aadd(aCabec,{"F1_TXMOEDA" , 3 , Nil}) aadd(aCabec,{"F1_STATUS" , "A" , Nil})
//ExpA2- Array contendo os itens da Nota Fiscal de Entrada. For nX := 1 To 20 //Altere para a quantidade desejada aLinha := {} aadd(aLinha,{"D1_COD" , "001" , Nil}) aadd(aLinha,{"D1_QUANT" , 1 , Nil}) aadd(aLinha,{"D1_VUNIT" , 100 , Nil}) aadd(aLinha,{"D1_TOTAL" , 100 , Nil}) aadd(aLinha,{"D1_TES" , "001" , Nil}) aadd(aLinha,{"D1_SEGURO" , 0 , Nil}) aadd(aLinha,{"D1_VALFRE" , 0 , Nil}) aadd(aLinha,{"D1_DESPESA" , 4 , Nil}) aadd(aLinha,{"AUTDELETA" , "N" , Nil}) // Incluir sempre no último elemento do array de cada item
aadd(aItens,aLinha) Next nX
//ExpA6 - Array contendo os dados do rateio por centro de custo If Empty(aColsCC) dbSelectArea("SDE") AADD(aColsCC,{SDE->DE_ITEMNF,{}}) For nX := 1 To 5 AADD(aColsCC[1][2], {{"DE_ITEM" ,"0"+Alltrim(STR(nX))} ,; {"DE_PERC" ,20} ,; {"DE_CC" ,"CC00"+Alltrim(STR(nX))},; {"DE_CONTA" ,""} ,; {"DE_ITEMCTA",""} ,; {"DE_CLVL" ,""}}) Next nX EndIf //ExpA7 - 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"} ) MATA103(aCabec,aItens,3,,,,,aColsCC,,,aCodRet) //ExpN1 - Opção desejada: 3-Inclusão; 4-Alteração ; 5-Exclusão If !lMsErroAuto ConOut("Incluido com sucesso! "+cDoc) Else MostraErro() ConOut("Erro na inclusao!") EndIf Next nY ConOut("Fim : "+Time())
EndIf
Return |