Histórico da Página
...
Bloco de código | ||
---|---|---|
| ||
#INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" USER Function MyNFS2NFS() Local aCabs := {} Local aItens := {} Local aStruSF2 := {} Local aStruSD2 := {} Local nX := 1 Local aDocOri := {} Local bFiscalSF2:= {|| .T.} Local bFiscalSD2:= {|| .T.} Local cNF := "" Local cDoc := "" Local cSerie := "A " Local cTipoNF := "N" Local cCliente := "000001" Local cLoja := "01" Local cProd := "IPI1" Local cTES := "802" Local cCondPgto := "001" PRIVATE lMsErroAuto := .F. PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "FAT" TABLES "SF2","SD2","SA1","SA2","SB1","SB2","SF4","SED","SE1" aStruSF2 := SF2->(dbStruct()) //Montagem do cabeçalho do Documento Fiscal nF2FILIAL := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_FILIAL"}) nF2TIPO := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_TIPO"}) nF2DOC := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_DOC"}) nF2SERIE := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_SERIE"}) nF2EMISSAO := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_EMISSAO"}) nF2CLIENTE := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_CLIENTE"}) nF2LOJA := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_LOJA"}) nF2CLIENT := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_CLIENT"}) nF2LOJENT := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_LOJENT"}) nF2TIPOCLI := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_TIPOCLI"}) nF2COND := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_COND"}) nF2DTDIGIT := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_DTDIGIT"}) nF2EST := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_EST"}) nF2UFORIG := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_UFORIG"}) nF2UFDEST := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_UFDEST"}) nF2VALMERC := Ascan(aStruSF2,{|x| AllTrim(x[1]) == "F2_VALMERC"}) For nX := 1 To Len(aStruSF2) If aStruSF2[nX][2] $ "C/M" Aadd(aCabs,"") ElseIf aStruSF2[nX][2] == "N" Aadd(aCabs,0) ElseIf aStruSF2[nX][2] == "D" Aadd(aCabs,CtoD(" / / ")) ElseIf aStruSF2[nX][2] == "L" Aadd(aCabs,.F.) EndIf Next nX dbSelectArea("SA1") dbSetOrder(1) dbSeek(xFilial("SA1") + cCliente + cLoja) aCabs[nF2FILIAL] := xFilial("SF2") aCabs[nF2TIPO] := cTipoNF aCabs[nF2DOC] := cDoc aCabs[nF2SERIE] := cSerie aCabs[nF2EMISSAO] := dDataBase aCabs[nF2CLIENTE] := SA1->A1_COD aCabs[nF2LOJA] := SA1->A1_LOJA aCabs[nF2CLIENT] := SA1->A1_COD aCabs[nF2LOJENT] := SA1->A1_LOJA aCabs[nF2TIPOCLI] := SA1->A1_TIPO aCabs[nF2COND] := cCondPgto aCabs[nF2DTDIGIT] := dDataBase aCabs[nF2EST] := SA1->A1_EST aCabs[nF2UFORIG] := SA1->A1_EST aCabs[nF2UFDEST] := SA1->A1_EST aCabs[nF2VALMERC] := 1000 aStruSD2 := SD2->(dbStruct()) //Montagem dos itens do Documento Fiscal nD2FILIAL := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_FILIAL"}) nD2DOC := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_DOC"}) nD2SERIE := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_SERIE"}) nD2CLIENTE := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_CLIENTE"}) nD2LOJA := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_LOJA"}) nD2EMISSAO := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_EMISSAO"}) nD2TIPO := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_TIPO"}) nD2ITEM := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_ITEM"}) nD2CF := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_CF"}) nD2COD := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_COD"}) nD2UM := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_UM"}) nD2QUANT := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_QUANT"}) nD2PRCVEN := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_PRCVEN"}) nD2PRUNIT := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_PRUNIT"}) nD2TOTAL := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_TOTAL"}) nD2LOCAL := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_LOCAL"}) nD2TES := Ascan(aStruSD2,{|x| AllTrim(x[1]) == "D2_TES"}) aAdd(aItens, {}) nPos := Len(aItens) For nX := 1 To Len(aStruSD2) If aStruSD2[nX][2]$"C/M" aAdd(aItens[nPos],"") ElseIf aStruSD2[nX][2]=="D" aAdd(aItens[nPos],CToD("")) ElseIf aStruSD2[nX][2]=="N" aAdd(aItens[nPos],0) ElseIf aStruSD2[nX][2]=="L" aAdd(aItens[nPos],.T.) EndIf Next nX For nX := 1 to Len(aItens) AADD(aDocOri,0) Next dbSelectArea("SF4") dbSetOrder(1) dbSeek(xFilial("SF4") + cTES) dbSelectArea("SB1") dbSetOrder(1) dbSeek(xFilial("SB1") + cProd) aItens[Len(aItens),nD2FILIAL] := xFilial("SD2") aItens[Len(aItens),nD2DOC] := cDoc aItens[Len(aItens),nD2SERIE] := cSerie aItens[Len(aItens),nD2CLIENTE] := SA1->A1_COD aItens[Len(aItens),nD2LOJA] := SA1->A1_LOJA aItens[Len(aItens),nD2EMISSAO] := dDataBase aItens[Len(aItens),nD2TIPO] := cTipoNF aItens[Len(aItens),nD2ITEM] := "01" aItens[Len(aItens),nD2CF] := SF4->F4_CF aItens[Len(aItens),nD2COD] := SB1->B1_COD aItens[Len(aItens),nD2UM] := SB1->B1_UM aItens[Len(aItens),nD2QUANT] := 1 aItens[Len(aItens),nD2PRCVEN] := 1000 aItens[Len(aItens),nD2TOTAL] := 1000 aItens[Len(aItens),nD2PRUNIT] := 1000 aItens[Len(aItens),nD2LOCAL] := SB1->B1_LOCPAD aItens[Len(aItens),nD2TES] := SF4->F4_CODIGO //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Parametros da funcao automatica: ³ //³ExpC1: Serie do Documento de Origem ³ //³ExpC2: Numero do Documento de Origem ³ //³ExpC3: Cliente/Fornecedor do documento do origem ³ //³ExpC4: Loja do Documento de origem ³ //³ExpC5: Serie do Documento a ser gerado ³ //³ExpL6: Mostra Lct.Contabil (OPC) ³ //³ExpL7: Aglutina Lct.Contabil (OPC) ³ //³ExpL8: Contabiliza On-Line (OPC) ³ //³ExpL9: Contabiliza Custo On-Line (OPC) ³ //³ExpLA: Reajuste de preco na nota fiscal (OPC) ³ //³ExpNB: Tipo de Acrescimo Financeiro (OPC) ³ //³ExpNC: Tipo de Arredondamento (OPC) ³ //³ExpLD: Atualiza Amarracao Cliente x Produto (OPC) ³ //³ExplE: Cupom Fiscal (OPC) ³ //³ExpBF: CodeBlock de Selecao do SD2 (OPC) ³ //³ Parametros do codeblock ³ //³ ExpC1: Alias do arquivo SD2 ³ //³ ExpC2: Alias do arquivo SF4 ³ //³ExpBG: CodeBlock a ser executado para o SD2 (OPC) ³ //³ Parametros do codeblock ³ //³ ExpN1:[1] Apos a copia do item do documento de saida ³ //³ [2] Apos a checagem da atualizacoes anteriores ³ //³ ExpA2:Array com o conteudo dos campos do SD2 ³ //³ ExpC3:Alias do SD2 (OPC) ³ //³ ExpC4:Alias do SF4 (OPC) ³ //³ ExpC5:Alias do SB1 (OPC) ³ //³ExpBH: CodeBlock a ser executado para o SF2 (OPC) ³ //³ ExpN1:[1] Apos a copia do item do documento de saida ³ //³ [2] Apos a checagem da atualizacoes anteriores ³ //³ExpBI: CodeBlock a ser executado no final da transacao (OPC) ³ //³ExpAJ: Array com os Recnos do SF2 (OPC) ³ //³ Deve possuir o mesmo tamanho da ExpAl (OPC) ³ //³ExpAL: Array com os itens do SD2 (OPC) ³ //³ [1] Item do SD2 (OPC) ³ //³ [2] Conteudo dos campos na ordem da estrutura (OPC) ³ //³ExpAM: Array com os dados do SF2 (OPC) ³ //³ [n] Conteudo posicional do campo ) ³ //³ Somente é necessario se não houver um documento de ³ //³ origem. ³ //³ExpAN: Calculo Fiscal (OPC) ³ //³ Desabilita o calculo fiscal pois as informacoes ja ³ //³ foram passadas nos campos do SD2 e SF2. ³ //³ExpAO: Codigo do cliente de Entrega para calculo dos impostos³ //³ExpAP: Codigo da loja de Entrega para calculo dos impostos ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ cNF := MaNfs2Nfs(/*cSerOri*/ "",; //Serie do Documento de Origem /*cNumORI*/ "",; //Numero do Documento de Origem /*cClieFor*/ "",; //Cliente/Fornecedor do documento do origem /*cLoja*/ "",; //Loja do Documento de origem /*cSerieNFS*/ cSerie,; //Serie do Documento a ser gerado /*lMostraCtb*/ NIL,; //Mostra Lct.Contabil (OPC) /*lAglutCtb*/ NIL,; //Aglutina Lct.Contabil (OPC) /*lCtbOnLine*/ NIL,; //Contabiliza On-Line (OPC) /*lCtbCusto*/ NIL,; //Contabiliza Custo On-Line (OPC) /*lReajusta*/ NIL,; //Reajuste de preco na nota fiscal (OPC) /*nCalAcrs*/ NIL,; //Tipo de Acrescimo Financeiro (OPC) /*nArredPrcLis*/ NIL,; //Tipo de Arredondamento (OPC) /*lAtuSA7*/ NIL,; //Atualiza Amarracao Cliente x Produto (OPC) /*lECF*/ NIL,; //Cupom Fiscal (OPC) /*bFilSD2*/ NIL,; //CodeBlock de Selecao do SD2 (OPC) /*bSD2*/ NIL,; //CodeBlock a ser executado para o SD2 (OPC) /*bSF2*/ NIL,; //CodeBlock a ser executado para o SF2 (OPC) /*bTTS*/ NIL,; //CodeBlock a ser executado no final da transacao (OPC) /*aDocOri*/ aDocOri,; //Array com os Recnos do SF2 (OPC) /*aItemOri*/ aItens,; //Array com os itens do SD2 (OPC) /*aSF2*/ aCabs,; //Array com os dados do SF2 (OPC) /*lNoFiscal*/ .F.,; //Calculo Fiscal - Desabilita o calculo fiscal pois as informacoes ja foram passadas nos campos do SD2 e SF2 (OPC) /*bFiscalSF2*/ bFiscalSF2,;//CodeBlock para tratamento do fiscal - SF2 (OPC) /*bFiscalSD2*/ bFiscalSD2,;//CodeBlock para tratamento do fiscal - SD2 (OPC) /*bFatSE1*/ NIL,; //CodeBlock para tratamento do fiscal - SE1 (OPC) /*cNumNFS*/ cDoc) //Numero do documento fiscal (OPC) If !Empty(cNF) Conout("Nota Fiscal: " + cNF + ", gerada com sucesso!!!") EndIf RESET ENVIRONMENT Return .T. |
07. DEMAIS INFORMAÇÕES
Não há.
08. ASSUNTOS RELACIONADOS
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas