<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use App\Entity\Products;
use App\Entity\Clientes;
use App\Form\ClientesType;
use App\Entity\Ventas;
use App\Entity\VentaProducts;
/**
* Description of CierreCajaController
*
* @author joseangelparra
*/
class CierreCajaController extends AbstractController{
private $params;
public function __construct(ParameterBagInterface $params){
$this->session = new Session();
$this->params = $params;
}
public function index(Request $request){
$em = $this->getDoctrine()->getManager();
$date = ($request->get("fecha")) ? new \DateTime($request->get("fecha")) : new \Datetime();
$d_start = new \DateTime($date->format("d-m-Y"));
$d_start->setTime(0, 0);
$d_end = new \DateTime($date->format("d-m-Y"));
$d_end->modify("+1 day");
$d_end->setTime(0, 0);
$ventas = $em->createQueryBuilder()->select("v")
->from('App\Entity\Ventas',"v")
->where('v.status <> 3 AND v.date BETWEEN :ds_start AND :ds_end')
->setParameter("ds_start",$d_start)
->setParameter("ds_end",$d_end)
->getQuery()
->getResult();
$total_ventas = 0;
$total_venta_real = 0;
$total_efectivo = 0;
$total_tarjeta = 0;
$total_transferencia = 0;
foreach($ventas as $v){
$total_ventas += $v->getPayed();
$total_venta_real += $v->getTotal();
if($v->getPaymentMethod() == 1){
$total_efectivo += $v->getPayed();
}else if($v->getPaymentMethod() == 2){
$total_tarjeta += $v->getPayed();
}else if($v->getPaymentMethod() == 3){
$total_transferencia += $v->getPayed();
}else if($v->getPaymentMethod() == 4){
$vent = json_decode($v->getExtraInfo(),true);
if(array_key_exists("extra_pago_info",$vent)){
$mps = $vent["extra_pago_info"];
if($mps["m_pago1"] == 1){
$total_efectivo += $mps["pagado_p_1"];
}else if($mps["m_pago1"] == 2){
$total_tarjeta += $mps["pagado_p_1"];
}else if($mps["m_pago1"] == 3){
$total_transferencia += $mps["pagado_p_1"];
}
if($mps["m_pago2"] == 1){
$total_efectivo += $mps["pagado_p_2"];
}else if($mps["m_pago2"] == 2){
$total_tarjeta += $mps["pagado_p_2"];
}else if($mps["m_pago2"] == 3){
$total_transferencia += $mps["pagado_p_2"];
}
}
}
}
if(count($ventas)>0){
$ticket_medio = $total_venta_real / count($ventas);
}else{
$ticket_medio = 0;
}
$date->setTime(0, 0);
$caja_open = $em->getRepository(\App\Entity\CierreCaja::class)->findOneBy(array("fecha"=>$date));
return $this->render('tpv/cierre_caja/index.html.twig',array(
'fecha'=>$date->format("d-m-Y"),
'ventas'=>$ventas,
"total_ventas"=>$total_ventas,
"total_venta_real"=>$total_venta_real,
"ticket_medio"=>$ticket_medio,
"efectivo"=>$total_efectivo,
"tarjeta"=>$total_tarjeta,
"transferencia"=>$total_transferencia,
'caja_open'=>$caja_open
));
}
public function openCaja(Request $request){
$em = $this->getDoctrine()->getManager();
$open = $request->request->get("open");
$fecha = new \DateTime();
$fecha->setTime(0, 0);
$caja = new \App\Entity\CierreCaja();
$caja->setTotalApertura($open);
$caja->setFecha($fecha);
$em->persist($caja);
$em->flush();
return new JsonResponse(array("ok"=>true));
}
public function ventasDelDia(Request $request){
$em = $this->getDoctrine()->getManager();
$fecha = ($request->get("dia")) ? new \DateTime($request->get("dia")) : new \Datetime();
$d_start = new \DateTime($fecha->format("d-m-Y"));
$d_start->setTime(0, 0);
$d_end = new \DateTime($fecha->format("d-m-Y"));
$d_end->modify("+1 day");
$d_end->setTime(0, 0);
$ventas = $em->createQueryBuilder()->select("v")
->from('App\Entity\Ventas',"v")
->where('v.status < 3 AND v.date BETWEEN :ds_start AND :ds_end')
->setParameter("ds_start",$d_start)
->setParameter("ds_end",$d_end)
->getQuery()
->getResult();
$list_end = array();
foreach($ventas as $venta){
$prods = $em->getRepository(VentaProducts::class)->findBy(array("ventaId"=>$venta->getId()));
$list_end[] = array(
'venta'=>$venta,
'productos'=>$prods
);
}
return $this->render('tpv/cierre_caja/ventasdeldia.html.twig',array(
'fecha'=>$fecha->format("d-m-Y"),
'ventas'=>$list_end
));
}
}