Вы находитесь на странице: 1из 2

/*---------------------------------------------------------------------------+

!
FICHA TECNICA DO PROGRAMA
!
+----------------------------------------------------------------------------+
!
DADOS DO PROGRAMA
!
+------------------+---------------------------------------------------------+
!Autor
! Calandrine Maximiliano
!
+------------------+---------------------------------------------------------+
!Descricao
! Acerta valores de PIS e COFINS para notas de servio. !
+------------------+---------------------------------------------------------+
!Nome
! IbFat001
!
+------------------+---------------------------------------------------------+
!Data de Criacao ! 09/03/2012
!
+------------------+--------------------------------------------------------*/
#INCLUDE 'RWMAKE.CH'
#INCLUDE "PROTHEUS.CH"
User Function IbFat001
cTit := "Acerta PIS e COFINS"
cMsg := "Essa rotina ir modificar os valores de PIS e COFINS"
cMsg += " da nota n " + SF2->F2_DOC + "-" + SF2->F2_SERIE + "."
cMsg += " Confirma essa operao?
dbSelectArea("SFT")
SFT->(dbSetOrder(1)) //FT_FILIAL+FT_TIPOMOV+FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_
LOJA+FT_ITEM+FT_PRODUTO
dbSelectArea("SF3")
SF3->(dbSetOrder(4)) //F3_FILIAL+F3_CLIEFOR+F3_LOJA+F3_NFISCAL+F3_SERIE
dbSelectArea("SD2")
SD2->(dbSetOrder(3))
If (SD2->(dbSeek(SF2->F2_FILIAL+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2>F2_LOJA)))
While SD2->(!Eof()) .AND. SF2->F2_FILIAL+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_C
LIENTE+SF2->F2_LOJA = ;
SD2->D2_FILIAL+SD2->D2_DOC+SD2->D2_SERIE+SD2->D2_CLIENTE+SD2->D2_LOJA
If (SD2->D2_CF <> "5949" .AND. SD2->D2_CF <> "6949")
Alert("Operao diponivel somente para notas fiscais de servio.")
Return
EndIf
If (Aviso(cTit,cMsg,{'OK','Cancelar'},2,'SIGAFAT') <> 1)
Return
Endif
RecLock("SD2",.F.)
SD2->D2_VALIMP6 :=
SD2->D2_VALIMP5
SD2->D2_BASIMP6
SD2->D2_BASIMP5
SD2->D2_ALQIMP6
SD2->D2_ALQIMP5
SD2->D2_VALCOF
SD2->D2_VALPIS
SD2->D2_BASEPIS
SD2->D2_BASECOF
SD2->D2_ALQPIS

(SD2->D2_TOTAL*0.65)/100
:= (SD2->D2_TOTAL*3.00)/100
:= SD2->D2_TOTAL
:= SD2->D2_TOTAL
:= 0.65
:= 3.00
:= (SD2->D2_TOTAL*3.00)/100
:= (SD2->D2_TOTAL*0.65)/100
:= SD2->D2_TOTAL
:= SD2->D2_TOTAL
:= 0.65

SD2->D2_ALQCOF := 3.00
SD2->(MsUnLock())
If (SFT->(dbSeek(SF2->F2_FILIAL+"S"+SF2->F2_SERIE+SF2->F2_DOC+SF2->F2_
CLIENTE+SF2->F2_LOJA+PadR(SD2->D2_ITEM,4,' ')+SD2->D2_COD)))
//Ateno -> O PadR foi necessrio porque a quantidade de caracteres do cam
po D2_ITEM est diferente do FT_ITEM
RecLock("SFT",.F.)
SFT->FT_VALIMP6 := (SFT->FT_VALCONT*0.65)/100
SFT->FT_VALIMP5 := (SFT->FT_VALCONT*3.00)/100
SFT->FT_BASIMP6 := SFT->FT_VALCONT
SFT->FT_BASIMP5 := SFT->FT_VALCONT
SFT->FT_ALQIMP6 := 0.65
SFT->FT_ALQIMP5 := 3.00
SFT->FT_VALCOF := (SFT->FT_VALCONT*3.00)/100
SFT->FT_VALPIS := (SFT->FT_VALCONT*0.65)/100
SFT->FT_BASEPIS
SFT->FT_BASECOF
SFT->FT_ALIQPIS
SFT->FT_ALIQCOF
SFT->(MsUnLock())
Endif
SD2->(dbSkip())

:=
:=
:=
:=

SFT->FT_VALCONT
SFT->FT_VALCONT
0.65
3.00

Enddo
Endif
RecLock("SF2",.F.)
SF2->F2_VALIMP6 := (SF2->F2_VALMERC*0.65)/100
SF2->F2_VALIMP5 := (SF2->F2_VALMERC*3.00)/100
SF2->F2_BASIMP6 := SF2->F2_VALMERC
SF2->F2_BASIMP5 := SF2->F2_VALMERC
SF2->F2_VALCOFI := (SF2->F2_VALMERC*3.00)/100
SF2->F2_VALPIS := (SF2->F2_VALMERC*0.65)/100
SF2->(MsUnLock())
If (SF3->(dbSeek(SF2->F2_FILIAL+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->
F2_SERIE)))
RecLock("SF3",.F.)
SF3->F3_VALIMP6 := (SF3->F3_VALCONT*0.65)/100
SF3->F3_VALIMP5 := (SF3->F3_VALCONT*3.00)/100
SF3->F3_BASIMP6 := SF3->F3_VALCONT
SF3->F3_BASIMP5 := SF3->F3_VALCONT
SF3->F3_ALQIMP6 := 0.65
SF3->F3_ALQIMP5 := 3.00
SF3->(MsUnLock())
EndIf
MsgBox("Registro atualizado com sucesso!", "INFO", "INFO")
Return
User Function MC090MNU
Aadd(aRotina, { "Acerta Pis/Cofins","u_IbFat001()", 0 , 3})
Return

Вам также может понравиться