;* FT_CUS1 *********************************************************************
;* Rotina para imprimir a rela‡Æo de custo      ** Utiliza no Balcao **        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido  em: 13/11/2019 por Bruno Carvalho               
;Ultima Alteracao:   /  /     por                 
;Motivo Alteracao: 

;*******************************************************************************
;* Rotina p/ Imprimir a Rela‡Æo de Custos                                     **
;*******************************************************************************
Proc Imprimir_Relacao_Custos()

If Not PARAM_RELATORIO_CUSTO
   Then Mensagem("Fun‡Æo inativa !// //Contactar Suporte Vise caso queira utilizar !")
        Return
EndIf
   
DISPOSITIVO()
Play "RC_0000"

EndProc ;Imprimir_Relacao_Custos()

;*******************************************************************************
;* Cabe‡alho do relatorio dos itens negativos.                                 *
;  Somente para o SYS_CODIGO_CLIENTE "0102"                                    *
;*******************************************************************************
Proc CABECALHO_ITEM_NEG()

Print File ARQIMP CI_10CPP
Print File ARQIMP "\n\n"
Print File ARQIMP Spaces(2)+Fill("-",80) + "\n"
Print File ARQIMP Spaces(2)+Format("W80,AC","RELACAO DE ITENS NEGATIVOS")+ "\n"
Print File ARQIMP Spaces(2)+Fill("-",80)+ "\n"
Print File ARQIMP "\n"
Print File ARQIMP Spaces(2)+"                                          __________ Quantidade __________"+"\n"
Print File ARQIMP Spaces(2)+"Item                                       Informada    Estoque  Diferenca"+"\n"
Print File ARQIMP Spaces(2)+"----------------------------------------- ---------- ---------- ----------"+"\n"

NLINHA = 9

EndProc ;CABECALHO_ITEM_NEG()

;*******************************************************************************
;* Rotina para Atualizar as quantidades em caso de itens negativos.            *
;           Somente para o SYS_CODIGO_CLIENTE "0102"                           *
;*******************************************************************************
Proc ATUALIZA_QUANTIDADE()
Private FAZ,MSG,ARQIMP,COR_MENSAGEM,qtdant

FAZ = False 
ATUALIZA_ORCAMENTO = True

Home
Moveto [Codigo do Item]
While True
  If Not CHECA_ESTOQUE()
     Then If Not FAZ
             Then ARQIMP=PrivDir()+"ITEM_NEG.Txt"
                  If IsFile(ARQIMP)
                     Then Deleta_Arquivo(ARQIMP)
                  EndIf
                  CABECALHO_ITEM_NEG()
                  FAZ = True
          EndIf
          If NLINHA > 60
             Then Print File ARQIMP "\f"
                  CABECALHO_ITEM_NEG()
          EndIf
          NLINHA = NLINHA + 1
          Print File ARQIMP Spaces(2)+Format("W10",[Codigo do Item])+Spaces(1)+Format("W30",[Descricao do Item])+
                            Spaces(1)+Format("W10,AR",[Quantidade])+
                            Spaces(1)+Format("W10,AR",SALDOATUAL)+
                            Spaces(1)+Format("W10,AR",SALDOATUAL-[Quantidade])+"\n"        
          
          qtdant       = [Quantidade]
          [Quantidade] = SALDOATUAL
          If [Quantidade] > 0 And [Preco Unitario] > 0
             Then 
                  if [Valor Desconto Item]>0
                     then
                          switch
                            case [Tipo Desconto Item]="U" : [Valor Desconto Item]=round([Quantidade]*[Valor Desconto Unitario],2)
                            case [Tipo Desconto Item]="T" :
                                 if [Taxa Desconto Unitario]>0 
                                    then [Valor Desconto Unitario]=round((round([Quantidade]*[Preco Unitario],2)*[Taxa Desconto Unitario])/100,2)
                                    else [Valor Desconto Unitario]=round(([Valor Desconto Item    ]/qtdant)*[Quantidade],2)
                                 endif 
                                 [Valor Desconto Item]=[Valor Desconto Unitario]  
                          endswitch
                  endif
                  [Preco Total] = Round([Quantidade]*[Preco Unitario],2)-[Valor Desconto Item]
             Else If AtLast()
                     Then Del
                          QuitLoop
                     Else Del
                          Loop
                  EndIf        
          EndIf
  EndIf
  ESTOQUE()
  If AtLast()
     Then QuitLoop
     Else Down
  EndIf   
EndWhile

If FAZ
   Then COR_MENSAGEM="1"
        MSG=    "Os itens com saldo insuficiente, terÆo suas quantidades alteradas//"
        MSG=MSG+"para que seu estoque nÆo fique negativo.                         //"
        MSG=MSG+"Ser  impressa uma listagem com as diferen‡as !                     "
        Mensagem(MSG)
        DISPOSITIVO()
        If OK<>"" 
           Then ImpriArq(ARQIMP)
        EndIf   
EndIf        

ATUALIZA_ORCAMENTO = False
Release Vars MSG,ARQIMP,FAZ,COR_MENSAGEM

Moveto [Item da OF]

EndProc ;ATUALIZA_QUANTIDADE()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
If Not IsAssigned(PARAM_FTCUS1) 
   Then Return 
EndIf

Switch
  Case PARAM_FTCUS1 = "ATUALIZA_QUANTIDADE"    : ATUALIZA_QUANTIDADE()
  Case PARAM_FTCUS1 = "IMPRIMIR_RELACAO_CUSTO" : Imprimir_Relacao_Custos()     
EndSwitch

Release Vars PARAM_FTCUS1
Release Procs CABECALHO_ITEM_NEG,Imprimir_Relacao_Custos,ATUALIZA_QUANTIDADE