;** FT_PEDI ********************************************************************
;*  Rotina buscar itens de pedido de venda                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 06/02/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 14/02/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes obs do item
;Ultima Alteracao: 25/04/2017 por Bruno Carvalho 
;Motivo Alteracao: Ajustes para verficar pedido informado na OC se ‚ o mesmo informado no processo 
;Ultima Alteracao: 02/05/2017 por Bruno Carvalho 
;Motivo Alteracao: Ajustes no processo p/ buscar itens do pedido, verificando se h  itens j  lan‡ados
;Ultima Alteracao: 12/05/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes nÆo pegar preco do pedido
;Ultima Alteracao: 26/01/2018 por Bruno Carvalho 
;Motivo Alteracao: Ajustes no campo [Informacoes_Adicionais] ao receber do pedidoi estas informa‡oes

;*******************************************************************************
;* Confirmacao de Janela                                                       *
;*******************************************************************************
Proc SD_PEDI(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

Temp=True
If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY"
   Then Switch
           Case Evento["KeyCode"] = 27:
                OK="N"
                CancelDialog
                Temp=False
           Case Evento["KeyCode"] = 13:
                If Campo="I_PEDIDOV"
                   Then NPEDIDOV=ControlValue("I_PEDIDOV")
                        SelectControl "Sim"
                        OK="S"
                   Else OK="N"
                EndIf
                CancelDialog
                Temp=False
        EndSwitch
Endif                           
Return Temp
EndProc   ;  (Opcao)

;*******************************************************************************
;* Faturamento de Ordem de Expedicao              
;*******************************************************************************
Proc PegaPedidgo()
Private OK, PedidoOk, regpedidoi

Moveto "OCI"
End
SEQIT=[Item da OC]

NPEDIDOV=""
If [OCC->Numero do Pedido]<>"" Then NPEDIDOV = [OCC->Numero do Pedido] VSD_I_PEDIDOV = NPEDIDOV EnDIf

ShowDialog "Pedido de Venda" proc "SD_PEDI" @ 09,20 height 03 width 30

  @ 0,4 ?? "N§ Pedido:"
  Accept @ 00,15 width 9 "A6" Picture "#*#" tag "I_PEDIDOV" to VSD_I_PEDIDOV

  PushButton @ 02,06 Width 10 "Sim"     OK Value "Sim" Tag "Sim" to Button
  PushButton @ 02,15 Width 10 "N„o" CANCEL Value "Nao" Tag "N„o" to Button
Enddialog
If OK="N"
   Then Return
EndIf

NPEDIDOV       = AlinhM(NPEDIDOV,6)
ITENS_LANCADOS = False

If RecordStatus("New")=False
   Then ITENS_LANCADOS = True
EndIf   

Moveto "OCC"
UnLockRecord
FormKey
IsLockRecord()

{TableAdd} {\\Sistemas\\Vendas\\PedidoC}
{TableAdd} {\\Sistemas\\Vendas\\PedidoI}
                
PedidoOk=False
If NPEDIDOV<>""
   Then GetRecord "\\Sistemas\\Vendas\\PedidoC" NPEDIDOV To REG_PEDIDO
        If Not RetVal
           Then Mensagem("Pedido de Venda n„o encontrado "+NPEDIDOV+" !")
           Else Processa_Pedido=True
                If [OCC->Numero do Pedido]<>""
                   Then If NPEDIDOV<>[OCC->Numero do Pedido]
                           Then MSG=    Completa("Pedido "+REG_PEDIDO["Numero do Pedido"]+" de "+Format("D13",REG_PEDIDO["Data de Emissao"]),60," ")+"//"
                                MSG=MSG+Completa("Cliente "+REG_PEDIDO["Codigo"]+" "+REG_PEDIDO["Razao Social"],60," ")+"////"
                                Mensagem(MSG+"Pedido difere do informado na Ordem de Compra!")
                                Processa_Pedido=False
                        EndIf        
                EndIf
                If Processa_Pedido
                   Then MSG=    Completa("Pedido "+REG_PEDIDO["Numero do Pedido"]+" de "+Format("D13",REG_PEDIDO["Data de Emissao"]),60," ")+"//"
                        MSG=MSG+Completa("Cliente "+REG_PEDIDO["Codigo"]+" "+REG_PEDIDO["Razao Social"],60," ")+"//"
                        If ConfGeral(MSG+"Confirma incluir itens deste Pedido ?")
                           Then PedidoOk=True 
                        EndIf
                EndIf
        EndIf           
EndIf                   

If PedidoOk And ITENS_LANCADOS And [OCC->Numero do Pedido]<>""
   Then MSG=    Completa("H  itens informados nesta Ordem de Compra.",60," ")+"////"
        MSG=MSG+Completa("Deseja excluir os itens desta rela‡„o para posteriormente",60," ")+"//"
        MSG=MSG+Completa("ser inclu¡do os itens do pedido "+NPEDIDOV+" informado.",60," ")+"//"
        If ConfGeral(MSG+"Continuar com este processo ?")
           Then SEQIT=0
                Moveto "OcI"
                Moveto [Numero da OC]
                Locate OC
                If RetVal
                   Then While OC = [Numero da OC]
                          Del
                          If Eot() Then QuitLoop EndIf
                        EndWhile
                EndIf
           Else Mensagem("Verifique os itens que ser„o lan‡ados para evitar duplicidade!")              
        EndIf        
EndIf

While PedidoOk
  Moveto "\\Sistemas\\Vendas\\PedidoI"
	Moveto [Numero do Pedido]
	Locate NPEDIDOV
	If Not Retval
	   Then Mensagem("Pedido de Venda"+NPEDIDOV+" sem itens !// Verificar !")
	   Else Conta_Item=0 
          While [Numero do Pedido]=NPEDIDOV
			      Adiciona_Item = True
            ;Switch
            ;  Case Not IsBlank([\Sistemas\Vendas\PedidoI->Quantidade Faturada]) And [\Sistemas\Vendas\PedidoI->Quantidade Faturada]<0 : Adiciona_Item=False 
            ;  Case ([\Sistemas\Vendas\PedidoI->Quantidade]-[\Sistemas\Vendas\PedidoI->Quantidade Faturada])<=0 : Adiciona_Item=False
            ;EndSwitch
            
            If Adiciona_Item
               Then Conta_Item = Conta_Item +1
                    CHAVEI=1  
        			      Moveto "OCI"
                    While True      
                      End
                      SEQIT=SEQIT+1
                      If SEQIT>900
                         Then Mensagem("Numero Maximo de Itens 900 permitidos !")
                              PedidoOk=False
                              QuitLoop
                      EndIf
                      Down
                      [Numero da OC]=[OCC->Numero da OC]
                      [Item da OC  ]=SEQIT
                      If Not IsLockRecord()
                         Then QuitLoop
                         Else Del
                      EndIf   
                    EndWhile
                    If Not PedidoOk
                       Then QuitLoop
                    EndIf   
        	        
                    [Codigo do Item        ]=[\Sistemas\Vendas\PedidoI->Codigo do Item ]
                    [Informacoes_Adicionais]=[\Sistemas\Vendas\PedidoI->Informacoes_Adicionais]
        
                    VSD_I_Codigo_Item=[Codigo do Item]
                    Ajusta_Dados_Item()
                     
                    [Quantidade             ] = [\Sistemas\Vendas\PedidoI->Quantidade]-[\Sistemas\Vendas\PedidoI->Quantidade Faturada]
                    [Preco Total            ] = Round([Quantidade]*([Preco Unitario]-[Valor Desconto Unitario]),2)
                      
                    SaveTables
            EndIf 
            Moveto "\\Sistemas\\Vendas\\PedidoI"
            Skip
            If EOT() Then QuitLoop EndIf
	        EndWhile
	        If Conta_Item=0
	           Then Mensagem("Todo os itens do pedido "+NPEDIDOV+" encontram-se faturados!")
	        EndIf   
	EndIf
	QuitLoop
EndWhile
Moveto "OCC"
Do_It!

Moveto "\\Sistemas\\Vendas\\PedidoC" ClearImage
Moveto "\\Sistemas\\Vendas\\PedidoI" ClearImage
Moveto "OCC"
CoEditKey
FormKey
IsLockRecord()

Moveto "OCI"

EndProc ;PegaPedidgo()  

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
PegaPedidgo()
Release Vars NPEDIDOV
Release Procs PegaPedidgo, SD_PEDI
