  ;** FT_REQ   *****************************************************************
;*  Rotina de faturamento de requisi‡Æo de estoque                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 18/06/2018 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 

;*******************************************************************************
;* Faturamento de Ordem de Expedicao              
;*******************************************************************************
Proc PegaRequisicao()
Private OK, PED_ORC_FAT, SEQI, Atualiza, ExpedOk, cc, ccfp, ccd, Item, qtdp, qtde,NUMOE,
        CODIGO, QUANTI

Array CODIGO[300]
Array QUANTI[300]

Moveto "FaturaI"
End
SEQI=[Item da Of]


OK=""
PED_ORC_FATURAR=""
PED_ORC_FAT=""

ShowDialog "Requisi‡Æo" proc "OPCAO" @ 09,20 height 03 width 30
  @ 0,1 ?? "N§ Lan‡amento:"
  Accept @ 00,16 width 9 "A6" Picture "#*#" tag "PED_ORC_FATURAR" to PED_ORC_FATURAR

  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
PED_ORC_FATURAR=PED_ORC_FAT
PED_ORC_FATURAR=AlinhM(PED_ORC_FATURAR,6)

Moveto "FaturaC"
UnLockRecord
FormKey
IsLockRecord()

NUMOE = ""

{TableAdd} {\\sistemas\\estoque\\rqcabeca}
{TableAdd} {\\sistemas\\estoque\\rqitem}

ExpedOk=False
Moveto "\\sistemas\\estoque\\rqcabeca"
Moveto [Numero do Lancamento] 
Locate PED_ORC_FATURAR
If Retval
   Then         
        MSG="Requisi‡Æo: // //"
        MSG=MSG+Completa("No "+[Numero do Lancamento]+" de "+Format("D13",[Data de Ocorrencia])+" - "+[Tipo do Documento]+" - "+[Numero do Documento],60," ")+"//"

        If ConfGeral(MSG+"Confirma faturar esta ordem ?")
           Then ExpedOk=True
        EndIf
   else         
        Mensagem("Requisi‡Æo nÆo localizada "+PED_ORC_FATURAR+" !")
EndIf

If Not ExpedOk
   Then 
        Do_It!
        Moveto "\\sistemas\\estoque\\rqcabeca"  ClearImage
        Moveto "\\sistemas\\estoque\\rqitem"    ClearImage
        Moveto "FaturaC"
        CoEditKey
        FormKey
        IsLockRecord()
        Return
EndIf

Usando_Expedicao=True
While True
	Moveto "\\sistemas\\estoque\\rqitem"
	Moveto [Numero do Lancamento]
	Locate PED_ORC_FATURAR
	If Not Retval
	   Then Mensagem("Requisi‡Æo "+PED_ORC_FATURAR+" sem itens !// Verificar !")
	        QuitLoop 
	   Else 
          LimpaRodape(0)
          Aguarde("Carregando itens")

	        For Wii From 1 to 300
            CODIGO[Wii]=""
            QUANTI[Wii]=BlankNum()
          EndFor

	        ExpedOk=True
	        cc  =0
	        While [Numero do Lancamento]=PED_ORC_FATURAR
           Moveto [Codigo do Item]

           If [Quantidade]>0 
              Then
       	           cc=cc+1
               
                   For Wii From 1 to 300
                       If CODIGO[Wii]=[Codigo do Item]
                          Then QUANTI[Wii]=QUANTI[Wii]+[Quantidade]
                               QuitLoop
                          Else If CODIGO[Wii]=""
                                  Then CODIGO[Wii]=[Codigo do Item]
                                       QUANTI[Wii]=[Quantidade    ]
                                       QuitLoop
                               Endif
                       Endif
                   Endfor
           EndIf

	         Skip
	         If EOT() Then QuitLoop EndIf
	        EndWhile
	        
	        If cc=0
	           Then MSG="" 
						      MSG=MSG+"N„o existe Item com Quantidade para esta ordem requisi‡Æo//"
		              MSG=MSG+"Verificar requisi‡Æo !//"
						      QuitLoop
	        EndIf   
	    

	        qtde=0

          For Wii From 1 to 900
            Aguarde("Processando itens")

            If IsBlank(CODIGO[Wii])
               Then QuitLoop
            Endif
            CHAVEI=1
            
            ExpedOk=True
            
            Moveto "FaturaI"
            While True
              End
              SEQI=SEQI+1
              If SEQI>900
                 Then Mensagem("Numero Maximo de Itens 900 permitidos !")
                      ExpedOk=False
                      QuitLoop
              EndIf
              Down
              [Numero da Of]=[FaturaC->Numero da Of]
              [Item da Of  ]=SEQI
              If Not IsLockRecord()
                 Then QuitLoop
                 Else Del
              EndIf   
            EndWhile
            If Not ExpedOk
               Then QuitLoop
            EndIf   
          
			      getrecord "\\sistemas\\estoque\\itens" CODIGO[Wii] to regitens
			      if not retval
			         then 
                    Mensagem("Item: "+CODIGO[Wii]+", nÆo cadastrado !")
                    del
			         else
                    [Codigo do Item          ]=CODIGO[Wii]
                    [Quantidade              ]=QUANTI[Wii]
                  
                    VSD_I_Codigo_Item=[Codigo do Item]
                    Pega_Preco("Novo")
                  
                    If Not CHECA_ESTOQUE() Or [Preco Unitario]<=0
                       Then 
                  		      If [Preco Unitario]<=0
                               Then MSG="Item: "+[Codigo do Item]+" - "+SubStr([Descricao do Item ],1,30)
                                    Mensagem(MSG+"// //Item sem tabela de pre‡o !")
                            EndIf
                            Del
                  		 Else
                            GetRecord "\\Sistemas\\Estoque\\Iten_Com" [\sistemas\estoque\rqitem->Codigo do Item] To REG_ITEMCOMP
                               If Not RetVal
                                  Then Mensagem("Item "+[\sistemas\estoque\rqitem->Codigo do Item]+" n„o localizado na tabela de complementos!")
                                       QuitLoop
                               EndIf
                  		 
                  		      Ajusta_Dados_Item()
                  		      Registro_Item("Ler")
                            CalcularPrecoTotal_Item()
                            Registro_Item("Gravar")
                            
                            qtde         =qtde+QUANTI[Wii]
                          
                            ESTOQUE()
                    EndIf
                  
                    SaveTables
            endif
            
            FATUROU_OE=True
          EndFor
	    
	EndIf
	QuitLoop
EndWhile

Moveto "FaturaC"
Do_It!

Moveto "\\sistemas\\estoque\\rqcabeca"  ClearImage
Moveto "\\sistemas\\estoque\\rqitem"    ClearImage
Moveto "FaturaC"
CoEditKey
FormKey
IsLockRecord()

Usando_Expedicao=False

LimpaRodape(0)
EndProc   ;  (PegaRequisicao)

FATUROU_OE=False
PegaRequisicao()
Release Procs Expedicao
