;** CalcPCKG *******************************************************************
;*  Calcula pe‡as em Kg                                                        *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 02/02/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 16/02/2017 por Anivel Augusto Rodrigues 
;Motivo Alteracao: Ajustes se n. pe‡as exato para mensagem
;Ultima Alteracao: 12/09/2017 por Bruno Carvalho 
;Motivo Alteracao: Adicionado funcionamento no COMPRAS
;Ultima Alteracao: 28/08/2019 por Bruno Carvalho 
;Motivo Alteracao: Adicionado Table()="Faturaid" para processo ser utilizado na rotina TROCA
;Ultima Alteracao: 30/10/2019 por Bruno Carvalho 
;Motivo Alteracao: Ajustes p/ quando chamar esta op‡Æo quando estiver no campo da quantidade solicitada  

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialogc(Disparo,Campo,Evento,Elemento)
private Disparo,Campo,Evento,Elemento,temp, MSG_CAMPO,TECLA

Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then campo="TG_Pecas" 
        AoCriarShowDialog() 
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_Pecas"         : Campo="NO"
            Case Campo="TG_Exato"         : Campo="TG_Pecas"
            Case Campo="YES" Or Campo="NO": Campo="TG_Pecas"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
                  Switch
                    Case Campo="TG_Pecas"   : Campo="TG_Exato"
                    QtdPecas=ControlValue("TG_Pecas")
                    
                    QtdKilos=NDecimal(QtdPecas*VSD_I_Peso_Liquido,3)
                    
                    Case Campo="TG_Exato"   : 
                    PcExato=ControlValue("TG_Exato")

                    if PcExato<>"" then Campo="YES" endif
                    
                    Case Campo="YES"        : AcceptDialog
                    Case Campo="NO"         : CancelDialog
                         
                  EndSwitch
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_Pecas":
       MSG_CAMPO="Informe o n£mero de pe‡as !"  
  Case Campo="TG_Exato":
       MSG_CAMPO="N£mero de pe‡as tem que ser exato ? (SIM/NÇO)"  
       
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
;AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
;LimpAguarde()
Proc Cal()
private QtdPecas,QtdKilos, s, ns, s2, posini, posini, tamanhoobs, wiobs,Campo_Qtd

Switch
  Case Camp¢="I_Quantidade_Solicitada" : Campo_Qtd="Solicitada"  
  OtherWise                            : Campo_Qtd=""
EndSwitch  

QtdPecas=blanknum()
QtdKilos=blanknum()
PcExato =""

  ShowDialog "Calcula Pe‡as em Kg" Proc "SD_Dialogc"
  Trigger "OPEN","ARRIVE"
  Key "ENTER","ESC","TAB"
   @ 03,08
    Height 07 Width 45

    Label  @ 00,00 "Peso L¡quido"  For "I_Peso_Liquido"
    Accept @ 01,01 Width 12 "N"                       Tag "I_Peso_Liquido"   To VSD_I_Peso_Liquido       

    Label  @ 00,13 "N§ Pe‡as"  For "TG_Pecas"
    Accept @ 01,14 Width 08 "S"                       Tag "TG_Pecas"   To QtdPecas       

    Label  @ 00,22 "Peso/Kg"  For "TG_Kilos"
    Accept @ 01,23 Width 12 "N"  Picture "#*#.[###]"  Tag "TG_Kilos"   To QtdKilos     

    Label  @ 00,35 "Exato?"  For "TG_Exato"
    Accept @ 01,36 Width 6  "A3"  Picture "SIM,NAO"  Tag "TG_Exato"   To PcExato     

    Pushbutton @ 03,09 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 03,21 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
    
  EndDialog  
  
  If RetVal 
     Then If Campo_Qtd="Solicitada"
             Then VSD_I_Quantidade_Solicitada = QtdKilos 
             Else VSD_I_Quantidade = QtdKilos
          EndIf   
     
          ns="[Exato "+LTrim(Format("W6,EIC",QtdPecas))+" Pecas] "
     
          if Table()="Pedidoi" then s=VSD_I_Obs_Item endif
          if Table()="Faturai" Or Table()="Faturaid" Or Table()="Oci"
             then s=VSD_I_InfAdic  
          endif
          
          posini=SearchFrom("[Exato ",s,1)
          If posini>0                   
             Then posfim=SearchFrom(" Pecas]",s,posini)
                  If posfim>0                
                     Then
                          s2=""
                          posini   =posini-1
                          if posini>0 
                             then 
                                  for wiobs from 1 to posini
                                    s2=s2+SubStr(s,wiobs,1)
                                  endfor
                          endif   
                          
                          posfim   =posfim+7
                          tamanhoobs=Len(s)-posfim
                          if tamanhoobs>0
                             then for wiobs from 1 to tamanhoobs
                                    s2=s2+SubStr(s,(posfim+wiobs),1)
                                  endfor
                          endif
                          switch
                            case s2<>"" : s=s2 
                            otherwise   : s=""
                          endswitch
                  EndIf
          EndIf
          if PcExato="NAO"
             then ns="" 
          endif
          
          if Table()="Pedidoi" 
             then VSD_I_Obs_Item          =ns+s   
                  [Observacao_item       ]=VSD_I_Obs_Item  
          endif
          if Table()="Faturai" Or Table()="Faturaid" Or Table()="Oci"
             then VSD_I_InfAdic           =ns+s   
                  [Informacoes_Adicionais]=VSD_I_InfAdic   
          endif
  endif    
  
EndProc

Cal()

Release Procs SD_Dialogc,Cal
