;** Rm_1501B *******************************************************************
;* Resumo de Saida Consignado II                                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 25/02/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao: 27/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes deduzir descontos nos calculos e no faturaI/pedidoI enova estrutura
;Ultima Alteracao: 16/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")

;*******************************************************************************
;* Rotina p/ Geracao de Pedidos de Retorno/Complemento                         *
;*******************************************************************************
Proc Rm_1501B_Gera_Pedidos()
AGUARDE("Aguarde, gerando pedidos")

MSG="Verificar gera‡„o do Pedido !// //"

;**** Vendas ****
INICIO=True
    
;If Not CheckTG_OPFAT[1] And Not CheckTG_OPFAT2[1] And Not CheckTG_COMISSAO[1]
;   Then Sort Tabela2 On "Codigo da Empresa", "Codigo", "Descricao do Item" To "Answer"
;        ClearAll
;EndIf

View Tabela1
View "\\Sistemas\\Cadastro\\TpPagto"
View "Destin"
View "NotaC"
View "PedidoC"
View "PedidoI"
CoEdit "Answer"
Scan
  CODEMP=[Codigo da Empresa]
  CODCLI=[Codigo           ]
  
  QTDDIFER=[Saida_Qtd]-([Retorno_Qtd]+[Venda_Qtd]+[Bonif_Qtd]+[Troca_Qtd])
  
  If QTDDIFER>0
     Then If INICIO
             Then If Not Rm_1501B_Grava_PedidoC()
                     Then QuitLoop
                  EndIf
          EndIf
          Rm_1501B_Grava_PedidoI([Codigo do Item],QTDDIFER,[Saida_Vr],([Saida_DescTotal]/[Saida_Qtd]))
  EndIf

EndScan
Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Gravar PedidoC                                                    *
;*******************************************************************************
Proc Rm_1501B_Grava_PedidoC()
private destinok

INICIO=False

Moveto Tabela1
Moveto [Codigo da Empresa]
Locate CODEMP, CODCLI
If RetVal
   Then NUMDOC=[Numero do Documento] 
        SERDOC=[Serie do Documento ]
   Else Moveto "Answer"
        Mensagem("Erro ao localizar o cliente !")
        Return False
EndIf

Moveto "NotaC"
Moveto [Codigo da Empresa]
Locate CODEMP, NUMDOC, SERDOC
If Not RetVal
   Then Moveto "Answer"
        Mensagem("Erro ao localizar a Nota!")
        Return False
EndIf

destinok=false
Moveto "Destin"
Scan
  If Search("VEND",[Descricao da Destinacao])>0 And
     Search("CONS",[Descricao da Destinacao])>0 And
     substr([CFO],1,1)                       =substr([NotaC->CFO],1,1)
     then DESTIN  =[Codigo da Destinacao]
          destinok=true
  endif    
endscan
if not destinok
   then Moveto "Answer" 
        Mensagem("Erro ao localizar a Destina‡Æo para a Venda de Consignado !// //Verificar !")
        DESTIN=False
        return false
endif

Moveto "PedidoC"
Moveto [Numero do Pedido]
While True
  End
  Moveto [Numero do Pedido]
  If Numero_Lancamento("Interno","Locked_Down")
     Then PEDIDO = PROXLANCTO_NLANC
          Release Vars PROXLANCTO_NLANC
          quitloop
  EndIf    
EndWhile

;While True
;  End
;  If Numero_Lancamento("Interno","")
;     Then PEDIDO = PROXLANCTO_NLANC
;  EndIf
;  Down
;  [Numero do Pedido]=PEDIDO
;  If Not IsLockRecord()
;     Then QuitLoop
;     Else Del
;  EndIf
;EndWhile

[Codigo da Empresa       ]=[NotaC->Codigo da Empresa]
[Situacao do Pedido      ]="ABERTO"
[Data de Emissao         ]=Today()
[Data de Entrega         ]=Today()
[Codigo da Destinacao    ]=DESTIN
[Codigo                  ]=[NotaC->Codigo]
[Codigo do Representante ]=[NotaC->Codigo do Representante ]
[Codigo da Tabela        ]=[NotaC->Codigo da Tabela        ]
[Condicao de Pagamento   ]=[NotaC->Condicao de Pagamento   ]
[Forma de Pagamento      ]=[NotaC->Forma de Pagamento      ]
[Codigo da Transportadora]=[NotaC->Codigo da Transportadora]
[Frete por Conta         ]=[NotaC->Frete por Conta         ]
[Placa do Veiculo        ]=[NotaC->Placa do Veiculo        ]
[UF Veiculo              ]=[NotaC->UF Veiculo              ]
[Frete Incluso na Nota   ]=":"
;[Numero_Carregamento     ]=[NotaC->Numero_Carregamento     ]

[Observacao na Nota Fiscal]="VENDAS DE ITEN(S) REF. CONSIGNACAO No "+RELDOCTO_SAIDA

if not isblank(RELDOCTO_RETOR) then [Observacao na Nota Fiscal]=[Observacao na Nota Fiscal]+" * RETORNO No "  +RELDOCTO_RETOR   endif
if not isblank(RELDOCTO_TROCA) then [Observacao na Nota Fiscal]=[Observacao na Nota Fiscal]+" * TROCA No "    +RELDOCTO_TROCA   endif
if not isblank(RELDOCTO_DEVOL) then [Observacao na Nota Fiscal]=[Observacao na Nota Fiscal]+" * DEVOLUCAO No "+RELDOCTO_DEVOL   endif

Controle_Dia()
 
MSG=MSG+"Pedido: "+PEDIDO+" - "+[Descricao da Destinacao]+"// //"
UnLockRecord

Moveto "Answer"

SEQI=0

Return True
EndProc

;*******************************************************************************
;* Rotina p/ Gravar PedidoI                                                    *
;*******************************************************************************
Proc Rm_1501B_Grava_PedidoI(ITEM,QTD,VR,vrdescto)
private item,qtd,vr,vrdescto

SEQI=SEQI+1

Moveto "PedidoI"
End
Down
[Numero do Pedido     ]=PEDIDO
[Item do Pedido       ]=SEQI
[Codigo do Item       ]=ITEM
[Quantidade           ]=QTD
[Preco Unitario       ]=VR
[Preco Unitario Tabela]=[Preco Unitario              ]

if vrdescto>0
   then [Tipo Desconto Item     ]="T"
        [Valor Desconto Unitario]=ndecimal((qtd*vrdescto),2)
        [Valor Desconto Item    ]=[Valor Desconto Unitario]
endif   
[Preco Total          ]=([Quantidade]*[Preco Unitario ])-[Valor Desconto Item]

If [Aliquota de ICMS]>0
   Then [Valor do ICMS]=NDecimal(([Preco Total]*[Aliquota de ICMS])/100,2)
EndIf
[Codigo da Tabela     ]=[NotaC->Codigo da Tabela     ]

UnLockRecord

Moveto "Answer"

EndProc

;*******************************************************************************
;* Processo p/ gerar peiddo                                                    * 
;*******************************************************************************
Proc Rm_1501B_Processo_GeraPedido()
private result

ConfGeral("Deseja gerar um pedido ?")
If Ok<>"S"
   Then Return False
EndIf

result=Gera_Dados()
if result 
   Then 
        Rm_1501B_Gera_Pedidos()
        If IsAssigned(DESTIN)
           Then If DESTIN=False
                   Then MSG="Destina‡„o de VENDA CONSIGNADA n„o encontrada!"
                   Else MSG=MSG+"Confirmar Pedido antes de Faturar !"
                EndIf
           Else MSG=MSG+"Confirmar Pedido antes de Faturar !"
        EndIf
        Mensagem(MSG)
EndIf        

DeletaTabelas()
        
Return result

EndProc ;Processo_GeraPedido()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************

Retorno_ok=Rm_1501B_Processo_GeraPedido()

Release Vars  PEDIDO,SEQI,INICIO, DESTIN, MSG,
              CODEMP, CODCLI, QTDDIFER

Release Procs Rm_1501B_Processo_GeraPedido, Rm_1501B_Gera_Pedidos, Rm_1501B_Grava_PedidoC, Rm_1501B_Grava_PedidoI
