;******************************************************************************
; ACERTO DE REGISTRO INCLUSOS NO LOJA, ONDE NÇO CONSTAM NOS NOTAS             * 
;******************************************************************************
;* Desenvolvido: 19/04/2012 por Bruno Carvalho                                *
;* Modificado  :   /  /     por                                               *
;* Motivo      :                                                              *
;******************************************************************************
Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

Mensagem("Acerto de registros inclusos no loja para o Nota!//"+
         "Apenas registros que nÆo constam nas NOTAS...")

While True
  If Verifica_Usuario()
     Then QuitLoop
     Else ConfGeral("Comunicar os usuarios !// //Deseja Continuar com Atualizacao ?")
          If OK<>"S"
             Then Exit
          EndIf
  EndIf
EndWhile

;*******************************************************************************
;Rotina Corre‡Æo de Tabelas                                                    *
;*******************************************************************************
Proc Correcao_Tabelas()

If IsTable("Lojacc")
   Then AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
        SetDir "\\Sistemas\\Vendas"
        ConfGeral("Deseja efetuar o backup dos arquivos envolvidos ?//"+
                  "NOTAC - NOTAI - NOTAV")
        If Ok="S"
           Then Copy "NotaC" "Bk_NotC"
                Copy "NotaI" "Bk_NotI"
                Copy "NotaV" "Bk_NotV"
        EndIf
        ClearAll
        
        View "NotaC"
        View "NotaI"
        View "NotaV"
        View "LojaV"
        View "LojaCh"
        View "LojaCc"
        View "\\Sistemas\\Cadastro\\Cartoes"
        Coedit "Lojac"
        
        Scan
          
          CDEMP  = [Codigo da Empresa]
          DTMOV  = [Data]
          NDOC   = AlinhM(StrVal(Day([Data])),2)+ AlinhM(StrVal(Month([Data])),2)+SubStr(StrVal(Year([Data])),3,2)  
          
          Moveto "NotaC"
          Moveto [Codigo da Empresa]
          Locate CDEMP,NDOC
          If RetVal
             Then Moveto "Lojac"
                  Loop
          EndIf

          VALOR    = 0
          VENDEDOR = 0 
         
          Moveto "LojaV"                            ;Valor Total e o Numero de Vendedores
          Moveto [Data]
          Locate DTMOV,CDEMP
          If RetVal
           Then While [Data]=DTMOV And
                      [Codigo da Empresa]=CDEMP
                  VENDEDOR = VENDEDOR+1
                  VALOR    = Round(VALOR + [Valor],2)
                  Skip
                  If Eot() Then Quitloop EndIf
                EndWhile
          EndIf     
           
          If VENDEDOR > 0
             Then Release Vars PORC_Vendas, DN_AVISTA, CH_AVISTA, CH_APRAZO, CT_APRAZO  
                
                  Array VENDEDORES[VENDEDOR]
                  Array PORC_Vendas[VENDEDOR]
                                       
                  Array DN_AVISTA[VENDEDOR]
                  Array CH_AVISTA[VENDEDOR]
                  Array CH_APRAZO[VENDEDOR]
                  Array CT_APRAZO[VENDEDOR]
                
                  VENDEDOR=0
                
                  Moveto "LojaC"
                  VR_DN_AVISTA=[Dinheiro          ]
                  VR_CH_AVISTA=[Cheques a Vista   ] 
                  VR_CH_APRAZO=[Cheques a Prazo   ]
                  VR_CT_APRAZO=[Cartoes de Credito]
          
                  Moveto "LojaV"                            ;Valor Total e o Numero de Vendedores
                  Moveto [Data]
                  Locate DTMOV,CDEMP
                  If RetVal
                     Then While [Data   ]=DTMOV And
                                [Codigo da Empresa]=CDEMP
                            VENDEDOR=VENDEDOR+1
                          
                            VENDEDORES[VENDEDOR]  = [Codigo do Representante]
                            Porc_Vendas[VENDEDOR] = Round(([Valor]*100) / VALOR,2)
                          
                            DN_AVISTA[VENDEDOR] = Round((VR_DN_AVISTA * Porc_Vendas[VENDEDOR]) / 100,2)           
                            CH_AVISTA[VENDEDOR] = Round((VR_CH_AVISTA * Porc_Vendas[VENDEDOR]) / 100,2) 
                            CH_APRAZO[VENDEDOR] = Round((VR_CH_APRAZO * Porc_Vendas[VENDEDOR]) / 100,2)           
                            CT_APRAZO[VENDEDOR] = Round((VR_CT_APRAZO * Porc_Vendas[VENDEDOR]) / 100,2)   
                            Skip
                            If Eot() Then Quitloop EndIf
                          EndWhile                
                  EndIf
                  
                  QT_CARTAO = 0  
          
                  Moveto "Lojacc"                           ;Numeros de Cartäes de Cr‚dito
                  Moveto [Data]
                  Locate DTMOV,CDEMP
                  If RetVal
                     Then While [Data   ]=DTMOV And
                                [Codigo da Empresa]=CDEMP
                            QT_CARTAO = QT_CARTAO+1
                            Skip
                            If Eot() Then Quitloop EndIf
                          EndWhile       
                  EndIf
                  
                  NUM_CARTAO = QT_CARTAO
                  QT_CARTAO  = QT_CARTAO * VENDEDOR
                   
                  If QT_CARTAO > 0
                     Then Release Vars CARTAO
                          Array CARTAO[QT_CARTAO]
                          Array NOMCT[QT_CARTAO]
                          
                          QT_CARTAO = 0
                                          
                          Moveto "Lojacc"  
                          Locate DTMOV,CDEMP
                          If RetVal
                             Then While [Data   ]=DTMOV And
                                        [Codigo da Empresa]=CDEMP
                                    QT_CARTAO = QT_CARTAO+1
                                    
                                    For CONT_CARTAO From 1 To VENDEDOR 
                                      CARTAO[QT_CARTAO] = Round(([Valor] * PORC_Vendas[CONT_CARTAO]) / 100,2)
                                      NOMCT[QT_CARTAO]  = [Nome do Cartao]
                                      
                                      If CONT_CARTAO=VENDEDOR
                                         Then QuitLoop
                                      EndIf   
                                      
                                      QT_CARTAO = QT_CARTAO+1
                                    EndFOR
                                                  
                                    Skip
                                    If Eot() Then Quitloop EndIf
                                  EndWhile       
                          EndIf
                  EndIf
                              
                  ;***************************** Atualizando Notas ***************************  
                  For CONTA_VENDEDOR From 1 To VENDEDOR                               
                    
                    AUX_CARTAO=CONTA_VENDEDOR                             
                    For CONTA_NOTA From 1 To 2                               
                      Switch
                        Case CONTA_NOTA=1 : SERIE="C"+AlinhM(StrVal(CONTA_VENDEDOR),2)+"V"
                                            CONDP="01"
                                            TPAGTO="V"
                                            FPAGTO="DN"
                                            TOTAL_NOTA = Round(DN_AVISTA[CONTA_VENDEDOR]+CH_AVISTA[CONTA_VENDEDOR],2)
                                            TIPO=" A VISTA"
                        Case CONTA_NOTA=2 : SERIE="C"+AlinhM(StrVal(CONTA_VENDEDOR),2)+"P"
                                            CONDP="02"
                                            TPAGTO="P"
                                            FPAGTO="CH"
                                            TOTAL_NOTA = Round(CH_APRAZO[CONTA_VENDEDOR]+CT_APRAZO[CONTA_VENDEDOR],2)
                                            TIPO=" A PRAZO"
                      EndSwitch
                  
                      HORA_SAIDA = Time() 
                    
                      If TOTAL_NOTA=0
                         Then Loop
                      EndIf   
                    
                      Moveto "\\Sistemas\\Vendas\\NotaC"
                      End Down
                      
                      [Codigo da Empresa        ]=CDEMP
                      [Numero do Documento      ]=NDOC
                      [Codigo do Documento      ]="ROM"     
                      [Serie do Documento       ]=SERIE    
                      [Tipo do Documento        ]="ROM"     
                      [Data de Emissao          ]=DTMOV
                      [Data de Saida            ]=DTMOV
                      [Hora de Saida            ]=HORA_SAIDA
                      [Codigo                   ]="2000"
                      [Razao Social             ]=[Razao Social]+TIPO
                      [Codigo do Representante  ]=VENDEDORES[CONTA_VENDEDOR]
                      [Condicao de Pagamento    ]=CONDP  
                      [Tipo de Pagamento        ]=TPAGTO
                      [Forma de Pagamento       ]=FPAGTO
                      [Codigo da Destinacao     ]="001"  
                      [Atualiza Estoque         ]="N"  
                      [Tipo Movimento Estoque   ]="S"  
                      [Checa Estoque Negativo   ]="N"  
                      [Codigo da Transportadora ]="0001"  
                      [Frete por Conta          ]="1"  
                      [Valor Mercadoria         ]=TOTAL_NOTA  
                      [Valor Mercadoria Liquido ]=TOTAL_NOTA   
                      [Valor Nota Fiscal        ]=TOTAL_NOTA  
                      [Numero Nota Original     ]=[LojaC->Numero Documento]
                      [Sistema Gerador          ]="LJ" 
                      Controle_Dia()
                      UnLockRecord 
          
                      Moveto "NotaI"
                      End Down
                      [Codigo da Empresa        ]= CDEMP
                      [Numero do Documento      ]= NDOC
                      [Serie do Documento       ]= SERIE    
                      [Item do Documento        ]= 1
                      [Tipo do Item             ]= "P"  
                      [Codigo do Item           ]= "0000000001"  
                      [Quantidade               ]= 1 
                      [Data de Entrega          ]=DTMOV 
                      [Unidade Fiscal           ]= "UN"  
                      [Preco Unitario           ]= TOTAL_NOTA  
                      [Preco Total              ]= TOTAL_NOTA  
                       UnLockRecord 
          
                      If CONTA_NOTA=2 And NUM_CARTAO > 0 
                         Then CONTA_CARTAO = NUM_CARTAO
                         Else CONTA_CARTAO = 1
                      EndIf     
                      
                      For FACA_CARTAO From 1 To CONTA_CARTAO+1
          
                        Switch
                          Case CONTA_NOTA=1 And FACA_CARTAO=1 : FPAGTO="DN"
                                                                VALOR = DN_AVISTA[CONTA_VENDEDOR]
                          Case CONTA_NOTA=1 And FACA_CARTAO=2 : FPAGTO="CH"
                                                                VALOR = CH_AVISTA[CONTA_VENDEDOR]
                          Case CONTA_NOTA=2 And FACA_CARTAO=1 : FPAGTO="CP"
                                                                VALOR = CH_APRAZO[CONTA_VENDEDOR]
                          Case CONTA_NOTA=2 And FACA_CARTAO=2 : FPAGTO="CT"
                        EndSwitch
          
                        NOME_CT=""          
                        If CONTA_NOTA=2 And FACA_CARTAO >= 2 And NUM_CARTAO > 0
                           Then VALOR      = CARTAO[AUX_CARTAO]
                                NOME_CT    = NOMCT[AUX_CARTAO]
                                AUX_CARTAO = AUX_CARTAO+VENDEDOR 
                           Else If CONTA_NOTA=2 And FACA_CARTAO=2 And QT_CARTAO = 0
                                   Then QuitLoop
                                EndIf        
                        EndIF  
                        
                        If VALOR > 0
                           Then Moveto "NotaV"
                                End Down
                                [Codigo da Empresa        ]= CDEMP
                                [Numero do Documento      ]= NDOC
                                [Serie do Documento       ]= SERIE
                                [Sequencia                ]= AlinhM(StrVal(FACA_CARTAO),2)
                                [Data                     ]= DTMOV
                                [Valor                    ]= VALOR
                                [Forma de Pagamento       ]= FPAGTO
          
                                If NOME_CT<>""
                                   Then Moveto "\\Sistemas\\Cadastro\\Cartoes" ;Processo realizado dessa forma, atrav‚s de lookup estava gerando erro!
                                        Moveto [Nome do Cartao]
                                        Locate NOME_CT
                                        If RetVal
                                           Then NOME_CT =[Nome do Cartao]
                                           Else NOME_CT=""
                                        EndIf
                                        Moveto "NotaV"
                                        If NOME_CT<>""
                                           Then  [Nome do Cartao]=NOME_CT
                                        EndIf      
                                EndIf
                                
                                UnLockRecord
                        EndIf
                       EndFor
                    EndFor
                  EndFor
          EndIf
        Moveto "LojaC"  
        EndScan
        Do_It! 
        ClearAll
        
        Release Vars VR_DN_AVISTA, VR_CH_AVISTA, VR_CH_APRAZO, VR_CT_APRAZO, VENDEDOR, DN_AVISTA,
                     CH_AVISTA, CH_APRAZO, CT_APRAZO, PORC_Vendas, QT_CARTAO, CONT_CARTAO, CARTAO     
   
EndIf

EndProc

;------------------------------------------------------------------------------
Aguarde("Atualizando Sistema")
Password("t01avivcl")
Password("FechaSys")

View "SysTable"
SYS_CODIGO_CLIENTE = [Codigo do Cliente   ]
ClearAll
;------------------------------------------------------------------------------
;****************** Vendas  ************
Diretorio="\\Sistemas\\Vendas\\"
Aguarde("Atualizando Pasta: "+Diretorio)
{Tools} {More} {Directory} TypeIn Diretorio Enter
Correcao_Tabelas()
;------------------------------------------------------------------------------

{Tools} {More} {Directory} {\\Sistemas\\Cadastro\\}
UnPassword("t01avivcl")
LimpAguarde()
Mensagem("Realizado com Sucesso !")

Release Vars Diretorio, Array_Diretorios, i
Release Procs Correcao_Tabelas