;** VN_0510 ********************************************************************
;*  Grafico Indicador PedVendas/Faturamento                                    *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 14/06/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao: 28/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: AJustes dias uteis
;Ultima Alteracao: 12/09/2019 por Anivel Augusto Rodrigues      
;Motivo Alteracao: Ajustes filewrite inicial
;Ultima Alteracao: 11/10/2019 por Anivel Augusto Rodrigues      
;Motivo Alteracao: Ajustes variavel nv, erro ticket medio
;Ultima Alteracao: 23/10/2019 por Anivel Augusto Rodrigues  
;Motivo Alteracao: Ajustes mensagem

;*******************************************************************************
;* Rotina p/ Selecionar e Ordernar Registros                                   *
;*******************************************************************************
Proc VN_0510_SelecionaDados()
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]       TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
Do_It!
VN_0510_NDV=Nrecords("Answer")
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]       TypeIn "~VSDGEMPRESA.."
moveto [Numero do Pedido       ] check 
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
Do_It!
VN_0510_NV =Nrecords("Answer")
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]       TypeIn "~VSDGEMPRESA.."
moveto [Codigo                 ] check 
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
Do_It!
VN_0510_NC =Nrecords("Answer")
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]                TypeIn "~VSDGEMPRESA.."
Moveto [Numero do Pedido       ] Example "ndoc"
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoI" Enter
Moveto [Numero do Pedido       ] Example "ndoc"
Moveto [Codigo do Item         ] check
Do_It!
VN_0510_NP =Nrecords("Answer")
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]                TypeIn "~VSDGEMPRESA.."
Moveto [Numero do Pedido       ] Example "ndoc"
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoI" Enter
Moveto [Numero do Pedido       ] Example "ndoc"
Moveto [Valor Desconto Item    ]       TypeIn "Calc Sum as Valor DescontoI"
Moveto [Valor Desconto Total   ]       TypeIn "Calc Sum as Valor DescontoT"
Do_It!
If Nrecords("Answer")>0
   then VN_0510_TVD=[Answer->Valor DescontoI]+[Answer->Valor DescontoT]
   else VN_0510_TVD=0
endif
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]                TypeIn "~VSDGEMPRESA.."
Moveto [Numero do Pedido       ] Example "ndoc"
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoI" Enter
Moveto [Numero do Pedido       ] Example "ndoc"
Moveto [Preco Total            ]       TypeIn "Calc Sum as Valor Total"
Moveto [Valor Desconto Item    ]       TypeIn "Calc Sum as Valor DescontoI"
Do_It!
If Nrecords("Answer")>0
   then VN_0510_TVP=[Answer->Valor Total]+[Answer->Valor DescontoI]
   else VN_0510_TVP=0
endif
VN_0510_PD =(VN_0510_TVD/VN_0510_TVP)*100
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ]       TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
Moveto [Comissao do Representante] check
Moveto [Valor Mercadoria Liquido ]     TypeIn "Calc Sum as Valor Total"
Do_It!
VN_0510_TCV =0
If Nrecords("Answer")>0
   then scan
          VN_0510_TCV =VN_0510_TCV+(([Answer->Valor Total]*[Answer->Comissao do Representante])/100)
        endscan 
endif
ClearAll

{Ask} TypeIn "\\Sistemas\\Vendas\\PedidoC" Enter
Moveto [Codigo da Empresa      ] check TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
Moveto [Descricao da Destinacao]       TypeIn "..VEND.. Or ..SAIDA.. Or ..SERV.."
Moveto [Situacao do Pedido     ]       TypeIn ".."
Moveto [Valor Nota Fiscal      ]       TypeIn "Calc Sum as Valor Total"
Do_It!
If Nrecords("Answer")>0
   then VN_0510_TV =[Answer->Valor Total]
   else VN_0510_TV =0
endif
VN_0510_TM =VN_0510_TV/VN_0510_NV
ClearAll

EndProc

;*******************************************************************************
;* Rotina p/ Verificar Dias Uteis                                              *
;*******************************************************************************
Proc VN_0510_Verifica_Dias_Uteis()
private DIASUTEIS,DIAS_PERCORRIDOS,DIAS_FALTANTES,
        NDIAS,AUX_VSDGDTINI,
        REGFERIADO, FERIADO, DIA

View "\\Sistemas\\Cadastro\\Feriados"
        
DIASUTEIS        = 0
DIAS_PERCORRIDOS = 0 
DIAS_FALTANTES   = 0
                        
NDIAS         = Ultimo_Dia_Data(VSDGDTINI)-(VSDGDTINI-1)
AUX_VSDGDTINI = VSDGDTINI-1
For i From 1 To NDIAS
  FERIADO       = False
  AUX_VSDGDTINI = AUX_VSDGDTINI+1
  DIA           = Dow(AUX_VSDGDTINI)
  
  GetRecord "\\Sistemas\\Cadastro\\Feriados" AUX_VSDGDTINI To REGFERIADO
  If Retval
     Then If REGFERIADO["Dias a Receber"]>0
             Then FERIADO = True
                  If REGFERIADO["Dias a Receber"]>1
                     Then AUX_VSDGDTINI = AUX_VSDGDTINI + REGFERIADO["Dias a Receber"]-1
                          i=i+REGFERIADO["Dias a Receber"]-1
                  EndIf
          EndIf
  EndIf       
  
  if sys_Codigo_Cliente="0294" and AUX_VSDGDTINI=dateval("23.12.2018")
     then
          If Not FERIADO
             Then DIASUTEIS = DIASUTEIS +1
          EndIf 
     else
          switch
            case Not FERIADO and DIA ="Sat" and     VN_0510_TrabalhaSabado: DIASUTEIS = DIASUTEIS +1
            case Not FERIADO and DIA ="Sat" and not VN_0510_TrabalhaSabado: ; nĈo soma
            case Not FERIADO and DIA<>"Sun"                               : DIASUTEIS = DIASUTEIS +1
          endswitch
  EndIf 
EndFor


DIAS_PERCORRIDOS = 0
NDIAS            = Ultimo_Dia_Data(VSDGDTINI)-(VSDGDTINI-1)
AUX_VSDGDTINI    = VSDGDTINI-1
For i From 1 To NDIAS
  FERIADO       = False
  AUX_VSDGDTINI = AUX_VSDGDTINI+1
  DIA           = Dow(AUX_VSDGDTINI)
  
  GetRecord "\\Sistemas\\Cadastro\\Feriados" AUX_VSDGDTINI To REGFERIADO
  If Retval
     Then If REGFERIADO["Dias a Receber"]>0
             Then FERIADO = True
                  If REGFERIADO["Dias a Receber"]>1
                     Then AUX_VSDGDTINI = AUX_VSDGDTINI + REGFERIADO["Dias a Receber"]-1
                          i=i+REGFERIADO["Dias a Receber"]-1
                  EndIf
          EndIf
  EndIf        
  if sys_Codigo_Cliente="0294" and AUX_VSDGDTINI=dateval("23.12.2018")
     then
          If Not FERIADO
             Then DIAS_PERCORRIDOS = DIAS_PERCORRIDOS +1
          EndIf 
     else
          switch
            case Not FERIADO and DIA ="Sat" and     VN_0510_TrabalhaSabado: DIAS_PERCORRIDOS = DIAS_PERCORRIDOS +1
            case Not FERIADO and DIA ="Sat" and not VN_0510_TrabalhaSabado: ; nĈo soma
            case Not FERIADO and DIA<>"Sun"                               : DIAS_PERCORRIDOS = DIAS_PERCORRIDOS +1
          endswitch
  endif   

  If AUX_VSDGDTINI>=VSDGDTFIM Then QuitLoop EndIf
EndFor
              
DIAS_FALTANTES   = DIASUTEIS-DIAS_PERCORRIDOS

VN_0510_NDU=DIASUTEIS
VN_0510_NDP=DIAS_PERCORRIDOS
VN_0510_NDR=DIAS_FALTANTES

ClearAll
EndProc ;VN_0510_Verifica_Dias_Uteis()


;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc VN_0510_AdicionaDados()
ClearAll

Edit tabeladados

[tipo     ]=1
[nome     ]="Total Pedidos"
[valor    ]=VN_0510_TV
[descricao]="Clientes atendidos:"
[info     ]=Format("W6,EIC",VN_0510_NC)

end
down
[tipo     ]=1
[nome     ]="Ticket medio"
[valor    ]=VN_0510_TM
[descricao]="Vendas realizadas:"
[info     ]=Format("W6,EIC",VN_0510_NV)

end
down
[tipo     ]=1
[nome     ]="Total MercBrut"
[valor    ]=VN_0510_TVP
[descricao]="Produtos vendidos:"
[info     ]=Format("W6,EIC",VN_0510_NP)


end
down
[tipo     ]=1
[nome     ]="Total Descontos"
[valor    ]=VN_0510_TVD
[descricao]="% sobre produtos:"
[info     ]=Format("W5.2,EIC",VN_0510_PD)+"%"

end
down
[tipo     ]=1
[nome     ]="Total MercLiq"
[valor    ]=VN_0510_TVP-VN_0510_TVD
[descricao]="."
[info     ]="."

end
down
[tipo     ]=1
[nome     ]="Total Comissao"
[valor    ]=VN_0510_TCV
[descricao]="% sobre total prodliq:"
[info     ]=Format("W5.2,EIC",(VN_0510_TCV/(VN_0510_TVP-VN_0510_TVD))*100)+"%"

Do_It!
ClearAll

EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc VN_0510_GravaCsv()
private s, arquivo, arqnew, inicio, NR, vartemp

Aguarde("Aguarde, Exportando PedVendas Indicador")

ClearAll

arquivo=VSDGPASTA+"tmp0000.txt"
arqnew =VSDGPASTA+"VN_0510.csv"
         
NR=NRecords(tabeladados)
inicio=true

FileWrite        arquivo from "nome,descricao,info,valor\n"    

Edit tabeladados 
Scan
  Barra(NR, RecNo())
  AGUARDE(BARRA_STRING)

  s=  monta_string([nome     ])+","
  s=s+monta_string([descricao])+","
  s=s+monta_string([info     ])+","
  s=s+strval([Valor          ])+"\n"

  FileWrite append arquivo from s    
  
EndScan
Do_It!
ClearAll

FileRead  arquivo to   vartemp
FileWrite arqnew  from vartemp    


arqnew =VSDGPASTA+"VN_0511.csv"
FileWrite        arqnew  from "maximo,atual\n"   
FileWrite append arqnew  from strval(VN_0510_NDU)+","+strval(VN_0510_NDP)+"\n"

arqnew =VSDGPASTA+"VN_0511a.csv"
FileWrite        arqnew  from "value\n"   
FileWrite append arqnew  from strval(VN_0510_NDU)+"\n"

arqnew =VSDGPASTA+"VN_0511b.csv"
FileWrite        arqnew  from "value\n"   
FileWrite append arqnew  from strval(VN_0510_NDR)+"\n"

arqnew =VSDGPASTA+"VN_0511c.csv"
FileWrite        arqnew  from "value\n"   
FileWrite append arqnew  from strval(VN_0510_NDV)+"\n"

LimpAguarde()
  
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************

tabeladados=Cria_Temp(PrivDir())
cria_tabela(tabeladados,"tipo(s),nome(A30),descricao(A30),info(A30),valor(N)")

;variaveis
VN_0510_TV =0
VN_0510_TM =0
VN_0510_TVP=0
VN_0510_PD =0
VN_0510_TCV=0

VN_0510_NV =0
VN_0510_NC =0
VN_0510_NP =0
VN_0510_ND =0

VN_0510_NDU=0
VN_0510_NDP=0
VN_0510_NDR=0
VN_0510_NDV=0


VN_0510_TrabalhaSabado=False
if sys_codigo_cliente="0294"
   then VN_0510_TrabalhaSabado=true
endif   

VN_0510_Verifica_Dias_Uteis()
VN_0510_SelecionaDados()
VN_0510_AdicionaDados()
VN_0510_GravaCsv()

Delete tabeladados

ClearAll
Release Vars tabeladados,
             VN_0510_TV,VN_0510_TM, VN_0510_TVP,VN_0510_TD,VN_0510_TCV,
             VN_0510_NV,VN_0510_NC,VN_0510_NP,VN_0510_PD,
             VN_0510_NDU,VN_0510_NDP,VN_0510_NDR,VN_0510_NDV,
             VN_0510_TrabalhaSabado

Release Procs VN_0510_SelecionaDados, VN_0510_AdicionaDados, VN_0510_GravaCsv,
              VN_0510_Verifica_Dias_Uteis
