//OFIOM110
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Funcao ³FS_INTLOJA³ Autor ³Valdir F. Silva ³ Data ³ 29/10/01 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descricao ³Faz integracao da venda balcao c/ o sigaloja ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³Siga Veiculos (Modulo de Oficina/Pecas) ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function FS_INTLOJA()
Local aCabPV := Array(27)
Local aItePV := {}
Local aPagPV := {}
Local cLocal := ""
Local cLocali := ""
Local nX
Local cOrcLoja
//Cabecalho
aCabPV[01] := SA1->A1_COD //Codigo do cliente
aCabPV[02] := SA1->A1_LOJA //Loja para entrada
aCabPV[03] := cCodVen //Codigo do vendedor
aCabPV[04] := dDataBase+30 //Data de emissao
aCabPV[05] := 0 //Valor do ICMS
aCabPV[06] := 0 //Valor do ISS
aCabPV[07] := 0 //Valor do IPI
aCabPV[08] := nTotDes //Valor do Desconto
aCabPV[09] := nTotOrc+nTotDes //Valor Liquido(Total-Desconto)
aCabPV[10] := "1" //Quem esta gravando
aCabPV[11] := VS1->VS1_NUMORC //Chave a pesquisar
aCabPV[12] := cTipPag
aCabPV[13] := ""
aCabPV[14] := ""
aCabPV[15] := VS1->VS1_VALFRE
aCabPV[16] := VS1->VS1_VALSEG
aCabPV[17] := VS1->VS1_DESACE
aCabPV[18] := VS1->VS1_DATVAL
// grava campos faltantes...luis
aCabPV[19] := nTotEntr // L1_ENTRADA - valor da entrada
aCabPV[20] := 1 // L1_PARCELA - valor da parcela
aCabPV[21] := VS1->VS1_ICMCAL // L1_VALICM - valor do icm
aCabPV[22] := MV_SIMB1 // L1_FORMPG - forma de pagto
aCabPV[23] := 0 // L1_VLRDEBI - valor do cartao de debito
aCabPV[24] := time() // L1_HORA - hora
aCabPV[25] := "0" // L1_TIPODES - tipo de desconto (grava 0 ?)
aCabPV[26] := cEstacao // L1_ESTACAO
//Itens
dbSelectArea("VS3")
dbSetOrder(1)
dbSeek(xFilial("VS3")+VS1->VS1_NUMORC)
While VS3->VS3_FILIAL == xFilial("VS3") .and. VS3->VS3_NUMORC == VS1->VS1_NUMORC .and. VS3->(!eof())
//Pega a classificacao fiscal de acordo com o estado do cliente
cCFiscal := FG_CLAFIS(VS3->VS3_CODTES)
// FG_Seek("SB1","VS3->VS3_GRUITE+VS3->VS3_CODITE",7,.f.)
SB1->(DbSetOrder(7))
SB1->(DbSeek(xFilial("SB1")+VS3->VS3_GRUITE+VS3->VS3_CODITE))
cLocali := SB1->B1_LOCPAD
If !(M->VS1_ORCACE$"1 ")
cLocali := GetMv("MV_RESITE")
Endif
// FG_Seek("SBF","SB1->B1_COD+cLocali",2,.f.)
SBF->(DbSetOrder(2))
SBF->(DbSeek(xFilial("SBF")+SB1->B1_COD+cLocali))
cLocali := SBF->BF_LOCALIZ
If !Empty(VS3->VS3_LOCALI)
cLocali := VS3->VS3_LOCALI
EndIf
cLocal := SB1->B1_LOCPAD
If !Empty(VS3->VS3_LOCAL)
cLocal := VS3->VS3_LOCAL
EndIf
Aadd(aItePV,Array(27))
aItePV[Len(aItePV),01] := SB1->B1_COD // Codigo do Produto
aItePV[Len(aItePV),02] := SB1->B1_DESC // Descricao do Produto
aItePV[Len(aItePV),03] := VS3->VS3_QTDITE // Quantidade Vendida
aItePV[Len(aItePV),04] := (VS3->VS3_VALTOT / VS3->VS3_QTDITE) // Valor Unitario
aItePV[Len(aItePV),05] := VS3->VS3_VALTOT // Valor Total do Item
aItePV[Len(aItePV),06] := If(M->VS1_ORCACE$"1 ",cLocal,GetMv("MV_RESITE")) // Almoxarifado
aItePV[Len(aItePV),07] := SB1->B1_UM // Unidade de Medida Primaria.
aItePV[Len(aItePV),08] := VS3->VS3_PERDES // Desconto percentual
aItePV[Len(aItePV),09] := VS3->VS3_VALDES // Desconto Valor
aItePV[Len(aItePV),10] := VS3->VS3_CODTES // Tipo de Saida do Item
aItePV[Len(aItePV),11] := cCFiscal // CFO
aItePV[Len(aItePV),12] := 0 //Valor IPI
aItePV[Len(aItePV),13] := VS3->VS3_ICMCAL //Valor do ICMS
aItePV[Len(aItePV),14] := 0 //Valor do ISS
aItePV[Len(aItePV),15] := VS3->VS3_VBAICM //Base ICMS
aItePV[Len(aItePV),16] := VS3->VS3_VALPEC // Valor Unitario
aItePV[Len(aItePV),17] := "" //Lote
aItePV[Len(aItePV),18] := "" //Sub Lote
aItePV[Len(aItePV),19] := cLocali //Localizacao
aItePV[Len(aItePV),20] := "" //Numero de Serie
// grava campos faltantes...luis
nPosMaFis := aScan(aColsP,{|x| x[FG_POSVAR("VS3_GRUITE","aHeaderP")]+x[FG_POSVAR("VS3_CODITE","aHeaderP")] == VS3->VS3_GRUITE+VS3->VS3_CODITE})
aItePV[Len(aItePV),21] := MaFisRet(nPosMaFis,"IT_VALPS2") // L2_VALPS2 - valor do pis -
aItePV[Len(aItePV),22] := MaFisRet(nPosMaFis,"IT_VALCF2") // L2_VALCF2 - valor cofins - MaFisRet(nPos,"IT_VALCF2")
aItePV[Len(aItePV),23] := MaFisRet(nPosMaFis,"IT_BASEPS2") // L2_BASEPS2 - base do pis - MaFisRet(nPos,"IT_BASEPS2")
aItePV[Len(aItePV),24] := MaFisRet(nPosMaFis,"IT_BASECF2") // L2_BASECF2 - base do cofins - MaFisRet(nPos,"IT_BASECF2")
aItePV[Len(aItePV),25] := MaFisRet(nPosMaFis,"IT_ALIQPS2") // L2_ALIQPS2 - aliquota pis - MaFisRet(nPos,"ALIQPS2")
aItePV[Len(aItePV),26] := MaFisRet(nPosMaFis,"IT_ALIQCF2") // L2_ALIQCF2 - aliquota cofins - MaFisRet(nPos,"IT_ALIQCF2")
aItePV[Len(aItePV),27] := SB1->B1_SEGUM
If ( ExistBlock("VETITLOJA") )
aItePV := ExecBlock("VETITLOJA",.f.,.f.,{aCabPV,aItePV})
EndIf
dbSelectArea("VS3")
dbSkip()
Enddo
//OFIXX004
if lIntegraLoja // Cupom
aCabPV := Array(29)
//Cabecalho
aCabPV[01] := SA1->A1_COD //Codigo do cliente
aCabPV[02] := SA1->A1_LOJA //Loja para entrada
aCabPV[03] := VS1->VS1_CODVEN //Codigo do vendedor
aCabPV[04] := dDataBase //Data de emissao
aCabPV[05] := 0 //Valor do ICMS
aCabPV[06] := 0 //Valor do ISS
aCabPV[07] := 0 //Valor do IPI
aCabPV[08] := VS1->VS1_DESCON//Valor do Desconto
aCabPV[09] := VS1->VS1_VTOTNF //Valor Liquido(Total-Desconto)
aCabPV[10] := "1" //Quem esta gravando
aCabPV[11] := VS1->VS1_NUMORC //Chave a pesquisar
aCabPV[12] := VS1->VS1_FORPAG
aCabPV[13] := ""
aCabPV[14] := ""
aCabPV[15] := VS1->VS1_VALFRE
aCabPV[16] := VS1->VS1_VALSEG
aCabPV[17] := VS1->VS1_DESACE
aCabPV[18] := VS1->VS1_DATVAL
// grava campos faltantes...luis
aCabPV[19] := 0 // L1_ENTRADA - valor da entrada
aCabPV[20] := 1 // L1_PARCELA - valor da parcela
aCabPV[21] := VS1->VS1_ICMCAL // L1_VALICM - valor do icm
aCabPV[22] := MV_SIMB1 // L1_FORMPG - forma de pagto
aCabPV[23] := 0 // L1_VLRDEBI - valor do cartao de debito
aCabPV[24] := time() // L1_HORA - hora
aCabPV[25] := "0" // L1_TIPODES - tipo de desconto (grava 0 ?)
aCabPV[26] := cEstacao // L1_ESTACAO
aCabPV[27] := VS1->VS1_CODVE2 //Codigo do 2o vendedor
aCabPV[28] := VS1->VS1_CODVE3 //Codigo do 3o vendedor
//Itens
dbSelectArea("VS3")
dbSetOrder(1)
dbSeek(xFilial("VS3")+VS1->VS1_NUMORC)
While VS3->VS3_FILIAL == xFilial("VS3") .and. VS3->VS3_NUMORC == VS1->VS1_NUMORC .and. VS3->(!eof())
//Pega a classificacao fiscal de acordo com o estado do cliente
cCFiscal := FG_CLAFIS(VS3->VS3_CODTES)
FG_Seek("SB1","VS3->VS3_GRUITE+VS3->VS3_CODITE",7,.f.)
If VS1->VS1_ORCACE$"1 "
cLocali := SB1->B1_LOCPAD
FG_Seek("SBF","SB1->B1_COD+SB1->B1_LOCPAD",2,.f.)
Else
cLocali := GetMv("MV_RESITE")
FG_Seek("SBF","SB1->B1_COD+cLoc",2,.f.)
Endif
cLocali := SBF->BF_LOCALIZ
If !Empty(VS3->VS3_LOCALI)
cLocali := VS3->VS3_LOCALI
EndIf
cLocal := SB1->B1_LOCPAD
If !Empty(VS3->VS3_LOCAL)
cLocal := VS3->VS3_LOCAL
EndIf
//
Aadd(aItePV,Array(27))
aItePV[Len(aItePV),01] := SB1->B1_COD // Codigo do Produto
aItePV[Len(aItePV),02] := SB1->B1_DESC // Descricao do Produto
aItePV[Len(aItePV),03] := VS3->VS3_QTDITE // Quantidade Vendida
aItePV[Len(aItePV),04] := (VS3->VS3_VALTOT / VS3->VS3_QTDITE) // Valor Unitario
aItePV[Len(aItePV),05] := VS3->VS3_VALTOT // Valor Total do Item
aItePV[Len(aItePV),06] := If(VS1->VS1_ORCACE$"1 ",cLocal,GetMv("MV_RESITE")) // Almoxarifado
aItePV[Len(aItePV),07] := SB1->B1_UM // Unidade de Medida Primaria.
aItePV[Len(aItePV),08] := VS3->VS3_PERDES // Desconto percentual
aItePV[Len(aItePV),09] := VS3->VS3_VALDES // Desconto Valor
aItePV[Len(aItePV),10] := VS3->VS3_CODTES // Tipo de Saida do Item
aItePV[Len(aItePV),11] := cCFiscal // CFO
aItePV[Len(aItePV),12] := 0 //Valor IPI
aItePV[Len(aItePV),13] := VS3->VS3_ICMCAL //Valor do ICMS
aItePV[Len(aItePV),14] := 0 //Valor do ISS
aItePV[Len(aItePV),15] := VS3->VS3_VBAICM //Base ICMS
aItePV[Len(aItePV),16] := VS3->VS3_VALPEC // Valor Unitario
aItePV[Len(aItePV),17] := "" //Lote
aItePV[Len(aItePV),18] := "" //Sub Lote
aItePV[Len(aItePV),19] := cLocali //Localizacao
aItePV[Len(aItePV),20] := "" //Numero de Serie
aItePV[Len(aItePV),21] := VS3->VS3_VALPIS // L2_VALPS2 - valor do pis -
aItePV[Len(aItePV),22] := VS3->VS3_VALCOF // L2_VALCF2 - valor cofins - MaFisRet(nPos,"IT_VALCF2")
aItePV[Len(aItePV),23] := VS3->VS3_BASPIS // L2_BASEPS2 - base do pis - MaFisRet(nPos,"IT_BASEPS2")
aItePV[Len(aItePV),24] := VS3->VS3_BASCOF // L2_BASECF2 - base do cofins - MaFisRet(nPos,"IT_BASECF2")
aItePV[Len(aItePV),25] := VS3->VS3_ALQPIS // L2_ALIQPS2 - aliquota pis - MaFisRet(nPos,"ALIQPS2")
aItePV[Len(aItePV),26] := VS3->VS3_ALQCOF // L2_ALIQCF2 - aliquota cofins - MaFisRet(nPos,"IT_ALIQCF2")
aItePV[Len(aItePV),27] := SB1->B1_SEGUM
//
If ( ExistBlock("VETITLOJA") )
aItePV := ExecBlock("VETITLOJA",.f.,.f.,{aCabPV,aItePV})
EndIf
//
dbSelectArea("VS3")
dbSkip()
enddo