;** Rm_0249 ********************************************************************
;* Conferencia Reduc‡Æo Z X Cupons                                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 21/03/2013 por Anivel Augusto Rodrigues
;Ultima Alteracao: 02/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valor de variavel ECF_NUM nÆo localizado           
;Ultima Alteracao: 03/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calcular aliquota de icms com redu‡Æo           
;Ultima Alteracao: 16/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calcula com acrescimos                          
;Ultima Alteracao: 17/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calculo da diferenca                          
;Ultima Alteracao: 18/04/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes acrescimo redu‡Æo, vrliquido                             
;Ultima Alteracao: 10/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes icms item com redu‡Æo bc                                 
;Ultima Alteracao: 13/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout e nÆo calcular venda bruta item                   
;Ultima Alteracao: 15/05/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes layout                                                   
;Ultima Alteracao: 09/10/2014 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desconto/acrescimo no item somar em seus totalizadores
;Ultima Alteracao: 17/12/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes desconto/acrescimo no item somar em seus totalizadores
;Ultima Alteracao: 01/07/2016 por Kamila Gomes
;Motivo Alteracao: Ajustes Tamanho Array NR_TOTC420 de 20 para 30
;Ultima Alteracao: 27/10/2016 por Rafael Matos
;Motivo Alteracao: Ajustes Layout para padroniza‡Æo
;Ultima Alteracao: 10/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 14/08/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao meios de pagamento         
;Ultima Alteracao: 25/01/2018 por Kamila Gomes
;Motivo Alteracao: Ajustes pegar notav somente de notas nÆo canceladas 
;Ultima Alteracao: 11/11/2019 por Bruno Carvalho
;Motivo Alteracao: Play a partir do script "RM_4200"  

;********************************************************************************
;* CONVERTE VALOR PARA STRING                                                  *
;********************************************************************************
Proc Valor_Str(Valor,Dec)
Private VrTit,Valor,Dec,Part1,Part2

If IsBlank(Valor)
  Then Valor=0
EndIf  
Switch
 Case dec=0 : VrTit=Format("W13,EI,AL",Valor)
 Case dec=1 : VrTit=Format("W13.1,EI,AL",Valor)
 Case dec=2 : VrTit=Format("W13.2,EI,AL",Valor)
 Case dec=3 : VrTit=Format("W13.3,EI,AL",Valor)
 Case dec=4 : VrTit=Format("W13.4,EI,AL",Valor)
 Case dec=5 : VrTit=Format("W13.5,EI,AL",Valor)
 Case dec=6 : VrTit=Format("W13.6,EI,AL",Valor)
EndSwitch
VrTit=RTrim(LTrim(VrTit))

Return VrTit
EndProc  ; (Valor_Str)


;********************************************************************************
;* Totalizadores Reducao ICMS                                                   *
;********************************************************************************
Proc NR_TOTC420(ns,trib,Aliq)
Private ns,trib,Aliq,s1,s2,i 

ns  =Upper(RTrim(ns))
trib=Upper(trib)
s1  =AlinhM(Tira_CharNum(Valor_Str(Aliq,2)),4)
For i From 1 To 30
  If NR_TOTC420[i]=""
     Then s2=AlinhM(StrVal(i),2)
          NR_TOTC420[i]=Completa(RTrim(ns),25," ")+"|"+trib+s1+"|"+s2
          
          s2="ERRO"
          
          QuitLoop
     Else If RTrim(SubStr(NR_TOTC420[i],01,25))=ns And
             SubStr(NR_TOTC420[i],27,01)=trib And
             SubStr(NR_TOTC420[i],28,04)=s1
             Then s2=SubStr(NR_TOTC420[i],33,02)
                  QuitLoop
          EndIf
  EndIf      
EndFor
   
Return s2
EndProc  

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Carrega_Totalizadores()
Private i

;---- Cria/Zera Totalizadores -------------------------------------------------- 
Array NR_TOTC420[30]
For I From 1 To 30 
  NR_TOTC420[I]=""
EndFor

;---- Carrega valores de totalizadores por ecf redu‡Æo z -----------------------
i=0
View "\\Sistemas\\Vendas\\Opaf_tot"
Scan  
  Switch
    Case [Tipo]="ICMS"  :
      i=i+1
      NR_TOTC420[i]=Completa([Numero de Serie],25," ")+"|T"+AlinhM(StrVal([Aliquota]*100),4)+"|"+[Indice Aliquota]
    Case [Tipo]="ISSQN" : 
      i=i+1
      NR_TOTC420[i]=Completa([Numero de Serie],25," ")+"|S"+AlinhM(StrVal([Aliquota]*100),4)+"|"+[Indice Aliquota]
  EndSwitch
EndScan
ClearImage

EndProc

;*******************************************************************************
;* Rotina p/ Selecionar Registros                                              *
;*******************************************************************************
Proc SELECIONA_REDUCAO()
ClearAll

{Ask} {ECF_C} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Serie do Documento     ] TypeIn "~VSDGTPDOCTO.."
Moveto [Data                   ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then Processa_Reducao()
EndIf

ClearAll

{Ask} {NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Serie do Documento     ] TypeIn "~VSDGTPDOCTO.."
Moveto [Tipo do Documento      ] TypeIn "CUP.."
Moveto [Data de Emissao        ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Do_It!
ClearAll

If Not IsEmpty("Answer")
   Then Processa_Cupons()
EndIf

EndProc

;*******************************************************************************
;* Rotina Redu‡Æo                                                              *
;*******************************************************************************
Proc Processa_Reducao()

View   "\\Sistemas\\Vendas\\ECF_T"
View   "\\Sistemas\\Vendas\\ECF_S"
View   Tabela
CoEdit "Answer"
NR = NRecords("Answer")

Scan
  Barra(NR, RecNo())
  Aguarde(Completa("Aguarde, processando redu‡Æo Z",45," ")+BARRA_STRING)
  
  Moveto Tabela
  End
  Down
  [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
  [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
  [Numero do ECF          ]=[Answer->Numero do ECF          ]
  [Numero Serie Fabricacao]=[Answer->Numero Serie Fabricacao]
  [Data                   ]=[Answer->Data                   ]
  [Serie do Documento     ]=[Answer->Serie do Documento     ]
  [Grupo                  ]=""
  [Totalizador            ]=""
  [COO                    ]=[Answer->Numero Cupom Reducao   ]
  [CRO                    ]=[Answer->Reinicio Operacao      ]
  [CRZ                    ]=[Answer->Contador Reducao       ]
  [COOI                   ]=[Answer->Numero Cupom Inicial   ]
  [COOF                   ]=[Answer->Numero Cupom Final     ]
  [GTI                    ]=[Answer->Totalizador Inicial    ]
  [GTF                    ]=[Answer->Totalizador Final      ]

  Moveto Tabela
  End
  Down
  [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
  [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
  [Numero do ECF          ]=[Answer->Numero do ECF          ]
  [Numero Serie Fabricacao]=[Answer->Numero Serie Fabricacao]
  [Data                   ]=[Answer->Data                   ]
  [Serie do Documento     ]=[Answer->Serie do Documento     ]
  [Grupo                  ]="1 Vendas"
  [Totalizador            ]="          Bruta"
  [RDZ_Valor              ]=[Answer->Totalizador Final]-[Answer->Totalizador Inicial]
                            
  Moveto Tabela
  End
  Down
  [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
  [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
  [Numero do ECF          ]=[Answer->Numero do ECF          ]
  [Numero Serie Fabricacao]=[Answer->Numero Serie Fabricacao]
  [Data                   ]=[Answer->Data                   ]
  [Serie do Documento     ]=[Answer->Serie do Documento     ]
  [Grupo                  ]="1 Vendas"
  [Totalizador            ]="        Liquida"
  [RDZ_Valor              ]=([Answer->Totalizador Final]-[Answer->Totalizador Inicial])-
                             ([Answer->Descontos]+[Answer->Cancelados])

  Moveto "\\Sistemas\\Vendas\\ECF_T"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa      ],
         [Answer->Serie do Documento     ],
         [Answer->Data                   ]
  While [Codigo da Empresa ]=[Answer->Codigo da Empresa  ] And
        [Serie do Documento]=[Answer->Serie do Documento ] And
        [Data              ]=[Answer->Data               ]

    If IsBlank([\Sistemas\Vendas\ECF_T->Indice Aliquota])
       Then NR_TOT=NR_TOTC420([Answer->Numero Serie Fabricacao],"T",[\Sistemas\Vendas\ECF_T->Aliquota de ICMS])
       Else NR_TOT=[\Sistemas\Vendas\ECF_T->Indice Aliquota]
    EndIf
    COD_TOT_PAR=NR_TOT+"T"+AlinhM(Tira_CharNum(Valor_Str([\Sistemas\Vendas\ECF_T->Aliquota de ICMS],2)),4)

    Moveto Tabela
    End
    Down
    [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
    [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
    [Numero do ECF          ]=[Answer->Numero do ECF          ]
    [Numero Serie Fabricacao]=[Answer->Numero Serie Fabricacao]
    [Data                   ]=[Answer->Data                   ]
    [Serie do Documento     ]=[Answer->Serie do Documento     ]
    [Grupo                  ]="2 ICMS"
    [Totalizador            ]=COD_TOT_PAR
    [RDZ_BC                 ]=[\Sistemas\Vendas\ECF_T->Base de Calculo ICMS]
    [RDZ_Valor              ]=[\Sistemas\Vendas\ECF_T->Valor do ICMS       ]
    
    Moveto "\\Sistemas\\Vendas\\ECF_T"
    Skip
    If Eot() Then QuitLoop EndIf
  EndWhile
  
  Moveto "\\Sistemas\\Vendas\\ECF_S"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa      ],
         [Answer->Serie do Documento     ],
         [Answer->Data                   ]
  While [Codigo da Empresa ]=[Answer->Codigo da Empresa  ] And
        [Serie do Documento]=[Answer->Serie do Documento ] And
        [Data              ]=[Answer->Data               ]

    If IsBlank([\Sistemas\Vendas\ECF_S->Indice Aliquota])
       Then NR_TOT=NR_TOTC420([Answer->Numero Serie Fabricacao],"S",[\Sistemas\Vendas\ECF_S->Aliquota de ISSQN])
       Else NR_TOT=[\Sistemas\Vendas\ECF_S->Indice Aliquota]
    EndIf
    COD_TOT_PAR=NR_TOT+"S"+AlinhM(Tira_CharNum(Valor_Str([\Sistemas\Vendas\ECF_S->Aliquota de ISSQN],2)),4)

    Moveto Tabela
    End
    Down
    [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
    [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
    [Numero do ECF          ]=[Answer->Numero do ECF          ]
    [Numero Serie Fabricacao]=[Answer->Numero Serie Fabricacao]
    [Data                   ]=[Answer->Data                   ]
    [Serie do Documento     ]=[Answer->Serie do Documento     ]
    [Grupo                  ]="3 ISSQN"
    [Totalizador            ]=COD_TOT_PAR
    [RDZ_BC                 ]=[\Sistemas\Vendas\ECF_S->Base de Calculo ISSQN]
    [RDZ_Valor              ]=[\Sistemas\Vendas\ECF_S->Valor do ISSQN      ]
    
    Moveto "\\Sistemas\\Vendas\\ECF_S"
    Skip
    If Eot() Then QuitLoop EndIf
  EndWhile
  
  Moveto "Answer"
  For wi From 1 To 6
    Moveto Tabela
    End
    Down
    [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
    [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
    [Numero do ECF          ]=[Answer->Numero do ECF          ]
    [Numero Serie Fabricacao]=[Answer->Numero Serie Fabricacao]
    [Data                   ]=[Answer->Data                   ]
    [Serie do Documento     ]=[Answer->Serie do Documento     ]
    Switch                                      
      Case wi=1: grupo         ="4 Nao Tributados"
                 [Totalizador ]="1 Subst.Trib F1"
                 [RDZ_Valor   ]=[Answer->Substituicao Tributaria]

      Case wi=2: grupo         ="4 Nao Tributados"
                 [Totalizador ]="2     Isento I1"
                 [RDZ_Valor   ]=[Answer->Isento]

      Case wi=3: grupo         ="4 Nao Tributados"
                 [Totalizador ]="3 Nao Tribut N1"
                 [RDZ_Valor   ]=[Answer->Nao Incidencia]

      Case wi=4: grupo         ="2 ICMS"
                 [Totalizador ]=" 2    Descontos"
                 [RDZ_Valor   ]=[Answer->Descontos]

      Case wi=5: grupo         ="2 ICMS"
                 [Totalizador ]=" 1   Cancelados"
                 [RDZ_Valor   ]=[Answer->Cancelados]

      Case wi=6: grupo         ="2 ICMS"
                 [Totalizador ]=" 3   Acrescimos"
                 [RDZ_Valor   ]=[Answer->Acrescimos]
    EndSwitch
    [Grupo                  ]=grupo              
    

  EndFor
  
  Moveto "Answer"
EndScan
Do_It!
ClearAll


EndProc


;*******************************************************************************
;* Rotina Cupons                                                               *
;*******************************************************************************
Proc Processa_Cupons()

View "\\Sistemas\\Cadastro\\tppagto"
View "\\Sistemas\\Vendas\\ECF_C"
View "\\Sistemas\\Vendas\\NotaI"
View "\\Sistemas\\Vendas\\NotaV"
View   Tabela
Coedit "Answer"

NR=NRecords("Answer")

ECF_EMP="****"
ECF_SER="****"
ECF_FAB=""

Scan
  Barra(NR, RecNo())
  Aguarde(Completa("Aguarde, processando cupons   ",45," ")+BARRA_STRING)

  If [Codigo da Empresa ]<>ECF_EMP Or
     [Serie do Documento]<>ECF_SER
     Then Moveto "\\Sistemas\\Vendas\\ECF_C"
          Moveto [Codigo da Empresa]
          Locate [Answer->Codigo da Empresa  ],
                 [Answer->Serie do Documento ],
                 [Answer->Data de Emissao    ]
          If RetVal
             Then ECF_FAB=[Numero Serie Fabricacao]
                  ECF_NUM=[Numero do ECF          ]
             Else ECF_FAB="???????????????"
                  ECF_NUM=0
          EndIf

          Moveto "Answer"
  EndIf        
                    
  Moveto "\\Sistemas\\Vendas\\NotaI"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa  ],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento ]
  If RetVal
     Then
          While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                [Numero do Documento]=[Answer->Numero do Documento] And
                [Serie do Documento ]=[Answer->Serie do Documento ]
     
            vr_bc    =0
            vr_trib  =0

            If [\Sistemas\Vendas\NotaI->Tipo do Item]<>"C"
               Then 
                    Switch
                      Case [\Sistemas\Vendas\NotaI->Situacao_Item     ]="C" Or
                           [Answer->Situacao                          ]="C":
                           grupo="2 ICMS"
                           COD_TOT_PAR=" 1   Cancelados"
                           vr_trib=[\Sistemas\Vendas\NotaI->Preco Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="I":
                           grupo="4 Nao Tributados"
                           COD_TOT_PAR="2     Isento I1"
                           vr_trib=([\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total])+[\Sistemas\Vendas\NotaI->Valor OutDesp Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="N" Or
                           [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="O":   
                           grupo="4 Nao Tributados"
                           COD_TOT_PAR="3 Nao Tribut N1"
                           vr_trib=([\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total])+[\Sistemas\Vendas\NotaI->Valor OutDesp Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="S":
                           grupo="4 Nao Tributados"
                           COD_TOT_PAR="1 Subst.Trib F1"
                           vr_trib=([\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total])+[\Sistemas\Vendas\NotaI->Valor OutDesp Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ICMS]="D":
                           grupo="2 ICMS" 
                           If [\Sistemas\Vendas\NotaI->Aliquota Reduzida BCICMS]>0
                              Then res     = Round(([\Sistemas\Vendas\NotaI->Aliquota de ICMS] * [\Sistemas\Vendas\NotaI->Aliquota Reduzida BCICMS])/100,2)
                                   AliqICMS= [Aliquota de ICMS]-res
                                   vr_bc   =([\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total])+[\Sistemas\Vendas\NotaI->Valor OutDesp Total]
                              Else AliqICMS=[\Sistemas\Vendas\NotaI->Aliquota de ICMS]
                                   vr_bc   =[\Sistemas\Vendas\NotaI->ICMS_BC         ]
                           EndIf    
                      
                           NR_TOT     =NR_TOTC420(ECF_FAB,"T",AliqICMS)
                           COD_TOT_PAR=NR_TOT+"T"+AlinhM(Tira_CharNum(Valor_Str(AliqICMS,2)),4)

                           vr_trib=[\Sistemas\Vendas\NotaI->Valor do ICMS]
                    EndSwitch
            
               Else grupo="ISSQN"
                    Switch
                      Case [\Sistemas\Vendas\NotaI->Situacao_Item     ]="C" Or
                           [Answer->Situacao                          ]="C":
                           COD_TOT_PAR="Cancelado Can-O"

                           vr_trib=[\Sistemas\Vendas\NotaI->Preco Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ISSQN]="I":
                           COD_TOT_PAR="2     Isento I1"

                           vr_trib=[\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ISSQN]="N" Or
                           [\Sistemas\Vendas\NotaI->Tributacao de ISSQN]="O":   
                           COD_TOT_PAR="3 Nao Tribut N1"

                           vr_trib=[\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ISSQN]="S":
                           COD_TOT_PAR="Subst.Trib F1"

                           vr_trib=[\Sistemas\Vendas\NotaI->Preco Total]-[\Sistemas\Vendas\NotaI->Valor Desconto Total]
                      Case [\Sistemas\Vendas\NotaI->Tributacao de ISSQN]="D":
                           NR_TOT     =NR_TOTC420(ECF_FAB,"S",[\Sistemas\Vendas\NotaI->Aliquiota de ISSQN])
                           COD_TOT_PAR=NR_TOT+"S"+AlinhM(Tira_CharNum(Valor_Str([\Sistemas\Vendas\NotaI->Tributacao de ISSQN],2)),4)

                           vr_bc  =[\Sistemas\Vendas\NotaI->ISSQN_BC      ]
                           vr_trib=[\Sistemas\Vendas\NotaI->Valor do ISSQN]
                    EndSwitch
            
            EndIf

            Grava_Totalizador()
                
            If COD_TOT_PAR<>" 1   Cancelados" 
               Then

                    If [\Sistemas\Vendas\NotaI->Tipo do Item]<>"C"
                       Then
                            vr_descto=[\Sistemas\Vendas\NotaI->Valor Desconto Total]
                            vr_acresc=[\Sistemas\Vendas\NotaI->Valor OutDesp Total ]
                            
                            If [\Sistemas\Vendas\NotaI->Valor Desconto Unitario]>0
                               Then  vr_descto=vr_descto+([\Sistemas\Vendas\NotaI->Valor Desconto Unitario]*
                                                          [\Sistemas\Vendas\NotaI->Quantidade])
                            EndIf                              
                            If [\Sistemas\Vendas\NotaI->Preco Unitario]>[\Sistemas\Vendas\NotaI->Preco Unitario Tabela]
                               Then  vr_acresc=vr_acresc+(([\Sistemas\Vendas\NotaI->Preco Unitario]-[\Sistemas\Vendas\NotaI->Preco Unitario Tabela])*
                                                           [\Sistemas\Vendas\NotaI->Quantidade])
                            EndIf                              

                            If vr_descto>0
                               Then grupo="2 ICMS"
                                    COD_TOT_PAR=" 2    Descontos"
                                    vr_bc  =0
                                    vr_trib=vr_descto
                                    Grava_Totalizador()
                            EndIf
                            If vr_acresc>0
                               Then grupo="2 ICMS"
                                    COD_TOT_PAR=" 3   Acrescimos"
                                    vr_bc  =0
                                    vr_trib=vr_acresc
                                    Grava_Totalizador()
                            EndIf
                    EndIf

                    vr_vliqui=([\Sistemas\Vendas\NotaI->Preco Total         ]-[\Sistemas\Vendas\NotaI->Valor Desconto Total])+
                               [\Sistemas\Vendas\NotaI->Valor OutDesp Total]
        
                    grupo="1 Vendas"
                    COD_TOT_PAR="        Liquida"
                    vr_bc  =0
                    vr_trib=vr_vliqui 
                    Grava_Totalizador()

            EndIf  

          ;;vr_vbruta=(([\Sistemas\Vendas\NotaI->Preco Unitario]+[\Sistemas\Vendas\NotaI->Valor Desconto Unitario])*
          ;;            [\Sistemas\Vendas\NotaI->Quantidade])+[\Sistemas\Vendas\NotaI->Valor OutDesp Total]
          ;;
          ;;grupo="1 Vendas"
          ;;COD_TOT_PAR="Bruta"
          ;;vr_bc  =0
          ;;vr_trib=vr_vbruta 
          ;;Grava_Totalizador()
  
            Moveto "\\Sistemas\\Vendas\\NotaI"
            Skip
            If EOT() Then QuitLoop EndIf
          EndWhile
  EndIf
  
  
  Moveto "\\Sistemas\\Vendas\\NotaV"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa  ],
         [Answer->Numero do Documento],
         [Answer->Serie do Documento ]
  If RetVal And [Answer->Situacao   ]<>"C"
     Then
          While [Codigo da Empresa  ]=[Answer->Codigo da Empresa  ] And
                [Numero do Documento]=[Answer->Numero do Documento] And
                [Serie do Documento ]=[Answer->Serie do Documento ] 
     
            COD_TOT_PAR=[Forma de Pagamento]+"  "
            
            switch
              case [Forma de Pagamento]="CD" or
                   [Forma de Pagamento]="CT" or
                   [Forma de Pagamento]="CL" : 
                COD_TOT_PAR=COD_TOT_PAR+[Nome do Cartao]
                   
              otherwise                      :
              
                if [Forma de Pagamento]="DN"
                   then 
                        COD_TOT_PAR=" DN DINHEIRO"
                   else
                        getrecord "\\sistemas\\cadastro\\tppagto" [Forma de Pagamento] to regtppagto
                        if retval
                           then COD_TOT_PAR=COD_TOT_PAR+regtppagto["Descricao Tipo Pagamento"]
                        endif   
                endif   
              
            endswitch
            
            grupo="5 Meios de Pagamento"
            COD_TOT_PAR=Completa(COD_TOT_PAR,20," ")

            vr_bc  =[Valor]
            vr_trib=blankNum() 
            Grava_Totalizador()
  
            Moveto "\\Sistemas\\Vendas\\NotaV"
            Skip
            If EOT() Then QuitLoop EndIf
          EndWhile
  EndIf
  
  if [Answer->Valor Troco]>0
     then
            grupo="5 Meios de Pagamento"
            COD_TOT_PAR="zz  TROCO"
            vr_bc  =[Answer->Valor Troco]
            vr_trib=blankNum() 
            Grava_Totalizador()
  endif   
  
  Moveto "Answer"
EndScan
Do_It!
ClearAll

Edit Tabela
Scan For Not IsBlank([Grupo])

  If [RDZ_BC   ]=0 Then [RDZ_BC   ]=BlankNum() EndIf
  If [RDZ_Valor]=0 Then [RDZ_Valor]=BlankNum() EndIf

  If [CUP_BC   ]=0 Then [CUP_BC   ]=BlankNum() EndIf
  If [CUP_Valor]=0 Then [CUP_Valor]=BlankNum() EndIf


  if [Grupo]<>"5 Meios de Pagamento" 
     then 
          If Format("W12.2,EIC",[CUP_BC    ]*1)<>Format("W12.2,EIC",[RDZ_BC    ]*1) Then [DIF_BC    ]=[CUP_BC    ]-[RDZ_BC   ] Endif
          If Format("W12.2,EIC",[CUP_Valor ]*1)<>Format("W12.2,EIC",[RDZ_Valor ]*1) Then [DIF_Valor ]=[CUP_Valor ]-[RDZ_Valor] Endif

          If Search("Bruta",[Totalizador])>0
             Then [DIF_Valor ]=BlankNum()
          EndIf   
  endif

EndScan
Do_it!
ClearAll

IF VSDGCODMODELO="2X"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [Grupo    ] TypeIn "Not Blank"
        Moveto [DIF_BC   ] TypeIn "Blank"
        Moveto [DIF_Valor] TypeIN "Blank"
        Do_It!
        ClearAll
EndIf

Endproc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Grava_Totalizador()

Moveto Tabela
Moveto [Codigo da Empresa]
Locate [Answer->Codigo da Empresa      ],
       ECF_NUM,
       ECF_FAB,
       [Answer->Data de Emissao        ],
       [Answer->Serie do Documento     ],
       grupo,
       COD_TOT_PAR
If Not RetVal 
   Then
        End
        Down
        [Codigo da Empresa      ]=[Answer->Codigo da Empresa      ]
        [Nome Fantasia Empresa  ]=[Answer->Nome Fantasia Empresa  ]
        [Numero do ECF          ]=ECF_NUM
        [Numero Serie Fabricacao]=ECF_FAB
        [Data                   ]=[Answer->Data de Emissao        ]
        [Serie do Documento     ]=[Answer->Serie do Documento     ]
        [Grupo                  ]=grupo
        [Totalizador            ]=COD_TOT_PAR
EndIf

[CUP_BC    ]=[CUP_BC    ]+vr_bc
[CUP_Valor ]=[CUP_Valor ]+vr_trib

endProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;***********************************************+*******************************
Carrega_Totalizadores()

Tabela=Cria_Temp(PrivDir())
Copy "\\Base\\Sistemas\\Vendas\\RM_0249" Tabela
EmptY(Tabela)

SELECIONA_REDUCAO()

If IsEmpty(Tabela)
   Then MENSAGEM("N„o existem registros a processar")
        TEMP = False
   Else CopyReport "\\Base\\Sistemas\\Vendas\\RM_0249" "R" Tabela "R"
        IMPRIREL(Tabela,"R")
        TEMP = True
EndIf
Delete Tabela
Return TEMP