<?php
namespace App\Controller;
use App\Entity\Comercial;
use App\Entity\FullCalendarEvent;
use App\Entity\Modalidad;
use App\Entity\Producto;
use App\Entity\ProductoProveedor;
use App\Entity\TipoLectura;
use App\Entity\EstadoFinanciero;
use App\Repository\BancoRepository;
use App\Repository\CanalRepository;
use App\Repository\ContratoRepository;
use App\Repository\ComercialRepository;
use App\Repository\EstadoCompraFacturaRepository;
use App\Repository\EstadoRepository;
use App\Repository\EstadoFinancieroRepository;
use App\Repository\FacturaGenericaRepository;
use App\Repository\FacturaRepository;
use App\Repository\FullCalendarEventRepository;
use App\Repository\ImpuestoRepository;
use App\Repository\NotificacionRepository;
use App\Repository\ProductoProveedorRepository;
use App\Repository\ProductoRepository;
use App\Repository\ProveedorRepository;
use App\Repository\PuntuacionRepository;
use App\Repository\TarifaRepository;
use App\Repository\TipoImpuestoRepository;
use App\Repository\TipoIvaRepository;
use App\Repository\TipoTarifaRepository;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\NoResultException;
use Doctrine\ORM\Query\ResultSetMapping;
use Exception;
use Knp\Snappy\Pdf;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Doctrine\Persistence\ManagerRegistry;
use Psr\Cache\InvalidArgumentException;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
class ApiController extends AbstractController
{
/**
* @Route("/api/canal", name="api_canal")
*/
public function canal(Request $request, CanalRepository $canalRepository)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
if($request->isXmlHttpRequest()){
if( $request->isMethod('get') ){
try {
$array=$canalRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}catch (Exception $e){}
}
else{
$array=$canalRepository->findAll();
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/comercial", name="api_comercial")
*/
public function comercial(Request $request, ComercialRepository $comercialRepository)
{
$this->denyAccessUnlessGranted('ROLE_ALTACOMERCIALES');
$array=[];
if($request->isXmlHttpRequest()){
try {
$array=$comercialRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->__toString()
];
}
}catch (Exception $e){
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/contrato", name="api_contrato")
*/
public function contrato(Request $request, ContratoRepository $contratoRepository, ImpuestoRepository $impuestoRepository,
TipoImpuestoRepository $tipoImpuestoRepository, TarifaRepository $tarifaRepository,
ProductoRepository $productoRepository, EstadoRepository $estadoRepository,
EstadoFinancieroRepository $estadoFinancieroRepository, CanalRepository $canalRepository,
ProveedorRepository $proveedorRepository, ComercialRepository $comercialRepository,
ProductoProveedorRepository $productoProveedorRepository, EntityManagerInterface $entityManager,
ManagerRegistry $doctrine)
{
$this->denyAccessUnlessGranted('ROLE_FACTURACION');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
try{
$logger->info('Detected AJAX request in /api/contrato');
if( $request->isMethod('post') ){
$logger->debug('Detected method POST');
$logger->debug(var_export($_POST, 1));
if( ($_POST['action']??null)=='select' ){
$logger->info( 'Detected action SELECT' );
$values=($_POST['values']??null);
$logger->debug(var_export($values,1));
if( $values=='cuenta' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'cuenta'=>$contrato->getNumeroCuenta()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
if( $values=='observaciones' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'observaciones'=>$contrato->getObservaciones()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='potencias' ){
try {
$suministro=$contratoRepository->find( $_POST['id'] )->getSuministro();
$array=[
'p1'=>$suministro->getpotenciaP1(),
'p2'=>$suministro->getpotenciaP2(),
'p3'=>$suministro->getpotenciaP3(),
'p4'=>$suministro->getpotenciaP4(),
'p5'=>$suministro->getpotenciaP5(),
'p6'=>$suministro->getpotenciaP6(),
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='tarifa' ){
$logger->debug('Returning tarifa');
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$suministro=$contrato->getSuministro();
$array=[
'tarifa'=>$contrato->getProducto()->getTarifa()->getNombre(),
'p1'=>$suministro->getpotenciaP1(),
'p2'=>$suministro->getpotenciaP2(),
'p3'=>$suministro->getpotenciaP3(),
'p4'=>$suministro->getpotenciaP4(),
'p5'=>$suministro->getpotenciaP5(),
'p6'=>$suministro->getpotenciaP6(),
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='producto' ){
$logger->debug('Returning producto');
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$producto=$contrato->getProducto();
$array=[
'producto'=>$producto->getNombre(),
'precios'=>[
'potencia'=>[
'p1'=>$producto->getPrecioPotenciaP1(),
'p2'=>$producto->getPrecioPotenciaP2(),
'p3'=>$producto->getPrecioPotenciaP3(),
'p4'=>$producto->getPrecioPotenciaP4(),
'p5'=>$producto->getPrecioPotenciaP5(),
'p6'=>$producto->getPrecioPotenciaP6()
],
'energia'=>[
'p1'=>$producto->getPrecioEnergiaP1(),
'p2'=>$producto->getPrecioEnergiaP2(),
'p3'=>$producto->getPrecioEnergiaP3(),
'p4'=>$producto->getPrecioEnergiaP4(),
'p5'=>$producto->getPrecioEnergiaP5(),
'p6'=>$producto->getPrecioEnergiaP6()
]
]
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='productoProveedor' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$producto=$contrato->getProductoProveedor();
$suministro=$contrato->getSuministro();
$array=[
'proveedor'=>$producto->getProveedor()->getNombre(),
'proveedorId'=>$producto->getProveedor()->getId(),
'tarifa'=>$producto->getTarifa()->getNombre(),
'precios'=>[
'potencia'=>[
'p1'=>$producto->getPrecioPotenciaP1(),
'p2'=>$producto->getPrecioPotenciaP2(),
'p3'=>$producto->getPrecioPotenciaP3(),
'p4'=>$producto->getPrecioPotenciaP4(),
'p5'=>$producto->getPrecioPotenciaP5(),
'p6'=>$producto->getPrecioPotenciaP6()
],
'energia'=>[
'p1'=>$producto->getPrecioEnergiaP1(),
'p2'=>$producto->getPrecioEnergiaP2(),
'p3'=>$producto->getPrecioEnergiaP3(),
'p4'=>$producto->getPrecioEnergiaP4(),
'p5'=>$producto->getPrecioEnergiaP5(),
'p6'=>$producto->getPrecioEnergiaP6()
],
'alquilerContador'=>$suministro->getAlquilerContadorReal()
]
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='impuesto' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$nombreImpuesto=$contrato->getTipoImpuesto()->getNombre();
if($nombreImpuesto=='SÃ'){
$importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidad' ])->getImporte();
}elseif($nombreImpuesto=='Reducido'){
$importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidadReducido' ])->getImporte();
}else{
$importe=0;
}
$array=[
'nombre'=>$nombreImpuesto,
'importe'=>$importe
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='comercial' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'seller'=>($contrato->getSeller()??new Comercial())->__toString(),
'comercial'=>$contrato->getComercial()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='estado' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'estado'=>$contrato->getEstado()->getNombre()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='rentabilidad' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'estadoFinanciero'=>($contrato->getEstadoFinanciero() ?? new EstadoFinanciero)->getNombre(),
'fechaRentabilidad'=>$contrato->getFechaRentabilidad()? $contrato->getFechaRentabilidad()->format('d/m/Y') : null,
'observacionesRentabilidad'=>$contrato->getObservacionesRentabilidad()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='caducidad' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'caducidad'=>($contrato->getFechaCaducidad() ?? $contrato->getFechaFin())->format('Y-m-d'),
'canal'=>$contrato->getCanal()->getNombre(),
'proveedor'=>$contrato->getProveedor()->getNombre()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
elseif( $values=='canal' ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$array=[
'canal'=>$contrato->getCanal()->getNombre(),
'proveedor'=>$contrato->getProductoProveedor()->getNombre()
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
}
}
}
elseif( ($_POST['action']??null)=='update' ){
$logger->info( 'Detected action UPDATE' );
if( !empty($_POST['values']['observaciones']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
if($_POST['values']['observaciones']==='null'){
$contrato->setObservaciones(null);
}else{
$contrato->setObservaciones($_POST['values']['observaciones']);
}
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['cuenta']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$cuentaOld=$contrato->getNumeroCuenta();
$contrato->setNumeroCuenta($_POST['values']['cuenta']);
$contrato->setObservaciones('Número de cuenta anterior: '.$cuentaOld.'. '.$contrato->getObservaciones());
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['impuesto']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$tipoImpuesto=$tipoImpuestoRepository->find( $_POST['values']['impuesto'] );
$contrato->setTipoImpuesto($tipoImpuesto);
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['seller']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$seller=$comercialRepository->find( $_POST['values']['seller'] );
$contrato->setSeller($seller??null);
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['comercial']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
if($_POST['values']['comercial']==='null'){
$contrato->setComercial(null);
}else{
$contrato->setComercial($_POST['values']['comercial']);
}
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['estado']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$estado=$estadoRepository->find( $_POST['values']['estado'] );
$logger->alert( 'Found contrato and estado' );
if( $estado->getNombre()=='ACTIVO' ){
$logger->alert($_POST['values']['fechaActivacion']??'Couldn\'t find date');
if( $contrato->getFechaLectura()!==null ){
$contrato->setObservaciones('Fecha de activación anterior: '.$contrato->getFechaLectura()->format('d/m/Y').'. '.$contrato->getObservaciones());
}
if( ($_POST['values']['fechaActivacion']??null)==null ){
$contrato->setFechaLectura(date_create());
$contrato->setFechaFin(
date_add(
date_create(),
$contrato->getProducto()->getDuracion()??date_interval_create_from_date_string('1 year')
)
);
}else{
$contrato->setFechaLectura( date_create_from_format('Y-m-d', $_POST['values']['fechaActivacion']) );
$contrato->setFechaFin(
date_add(
date_create_from_format('Y-m-d', $_POST['values']['fechaActivacion']),
$contrato->getProducto()->getDuracion()??date_interval_create_from_date_string('1 year')
)
);
}
if( ($_POST['values']['lecturas']??'null')!=='null' ){
$contrato->setLecturaInicialP1($_POST['values']['lecturas']['p1']);
$contrato->setLecturaInicialP2($_POST['values']['lecturas']['p1']);
$contrato->setLecturaInicialP3($_POST['values']['lecturas']['p1']);
$contrato->setLecturaInicialP4($_POST['values']['lecturas']['p1']);
$contrato->setLecturaInicialP5($_POST['values']['lecturas']['p1']);
$contrato->setLecturaInicialP6($_POST['values']['lecturas']['p1']);
$contrato->setLecturaReactivaP1($_POST['values']['lecturas']['reactivas']['p1']);
$contrato->setLecturaReactivaP2($_POST['values']['lecturas']['reactivas']['p2']);
$contrato->setLecturaReactivaP3($_POST['values']['lecturas']['reactivas']['p3']);
$contrato->setLecturaReactivaP4($_POST['values']['lecturas']['reactivas']['p4']);
$contrato->setLecturaReactivaP5($_POST['values']['lecturas']['reactivas']['p5']);
$contrato->setLecturaReactivaP6($_POST['values']['lecturas']['reactivas']['p6']);
}
$contrato->setTipoLectura( $doctrine->getRepository(TipoLectura::class)->findOneBy(['nombre'=>'Real'])??null );
}
$contrato->setEstado($estado);
$entityManager->flush();
/*$contrato->setUltimaLectura($contratoRepository->findUltimaLectura($contrato)['fecha']);
$entityManager->flush();*/
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['estadoFinanciero']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$data=$_POST['values']['estadoFinanciero'];
if ($data!=='null'){
$estado=$estadoFinancieroRepository->find( $_POST['values']['estadoFinanciero'] );
}else{
$estado=null;
}
$contrato->setEstadoFinanciero($estado);
$entityManager->flush();
/*$contrato->setUltimaLectura($contratoRepository->findUltimaLectura($contrato)['fecha']);
$entityManager->flush();*/
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['observacionesRentabilidad']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
if($_POST['values']['observacionesRentabilidad']==='null'){
$contrato->setObservacionesRentabilidad(null);
}else{
$contrato->setObservacionesRentabilidad($_POST['values']['observacionesRentabilidad']);
}
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['fechaRentabilidad']) && $_POST['values']['fechaRentabilidad']!=='null' ){
try {
ob_start();
var_dump($_POST['values']);
$result = ob_get_clean();
$logger->info( $result );
$contrato=$contratoRepository->find( $_POST['id'] );
$contrato->setFechaRentabilidad( date_create_from_format('Y-m-d',$_POST['values']['fechaRentabilidad']) );
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['caducidad']) && $_POST['values']['caducidad']!=='null' ){
try {
ob_start();
var_dump($_POST['values']);
$result = ob_get_clean();
$logger->info( $result );
$contrato=$contratoRepository->find( $_POST['id'] );
$contrato->setFechaCaducidad( date_create_from_format('Y-m-d',$_POST['values']['caducidad']) );
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['canal']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$canal=$canalRepository->find( $_POST['values']['canal'] );
$contrato->setCanal($canal);
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['proveedor']) ){
try {
$contrato=$contratoRepository->find( $_POST['id'] );
$proveedor=$proveedorRepository->find( $_POST['values']['proveedor'] );
$productoProveedor=$contrato->getProductoProveedor();
$contrato->setProveedor($proveedor);
if($productoProveedor->getPersonalizado()){
$productoProveedor->setProveedor($proveedor);
}
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
if( !empty($_POST['values']['tarifaProveedor']) ){
$logger->info('Detected productoProveedor');
try {
$contrato=$contratoRepository->find( $_POST['values']['id'] );
if( ($_POST['values']['productoProveedor']??null)==null || $_POST['values']['productoProveedor']=='null' ){
$producto=new ProductoProveedor();
$suministro=$contrato->getSuministro();
$producto->setNombre('PERSONALIZADO');
$producto->setTarifa( $contrato->getProducto()->getTarifa() );
$producto->setProveedor( $contrato->getProveedor() );
$producto->setPrecioPotenciaP1($_POST['values']['precios']['potencia']['p1']);
$producto->setPrecioPotenciaP2($_POST['values']['precios']['potencia']['p2']);
$producto->setPrecioPotenciaP3($_POST['values']['precios']['potencia']['p3']);
$producto->setPrecioPotenciaP4($_POST['values']['precios']['potencia']['p4']);
$producto->setPrecioPotenciaP5($_POST['values']['precios']['potencia']['p5']);
$producto->setPrecioPotenciaP6($_POST['values']['precios']['potencia']['p6']);
$producto->setPrecioEnergiaP1($_POST['values']['precios']['energia']['p1']);
$producto->setPrecioEnergiaP2($_POST['values']['precios']['energia']['p2']);
$producto->setPrecioEnergiaP3($_POST['values']['precios']['energia']['p3']);
$producto->setPrecioEnergiaP4($_POST['values']['precios']['energia']['p4']);
$producto->setPrecioEnergiaP5($_POST['values']['precios']['energia']['p5']);
$producto->setPrecioEnergiaP6($_POST['values']['precios']['energia']['p6']);
$producto->setDuracion( date_interval_create_from_date_string('1 year') );
$producto->setPersonalizado(true);
$producto->setFacturaElectronica(true);
$suministro->setAlquilerContadorReal($_POST['values']['precios']['alquilerContador']);
$entityManager->persist($producto);
$contrato->setProductoProveedor($producto);
}
else{
$contrato->setProductoProveedor( $productoProveedorRepository->find($_POST['values']['producto']) );
}
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
elseif( !empty($_POST['values']['tarifa']) ){
$logger->debug('tarifa');
try {
//$contrato=$contratoRepository->find( $_POST['values']['id'] );
$contrato=$contratoRepository->find( $_POST['id'] );
$suministro=$contrato->getSuministro();
$tarifaOld=$contrato->getProducto()->getTarifa();
if( $_POST['values']['tarifa']=='update' ){
switch( $tarifaOld->getNombre() ){
case '2.0A':case '2.1A':case '2.0DHA':case '2.1DHA':case '2.0DHS':case '2.1DHS':
$suministro->setPotenciaP2( $suministro->getPotenciaP1() );
$array=[
'success'=>true
];
break;
case '3.0A':case '3.1A':
$potenciaP1=$suministro->getPotenciaP1();
$potenciaP2=$suministro->getPotenciaP2();
$potenciaP3=$suministro->getPotenciaP3();
if($potenciaP2<$potenciaP1){
$potenciaP2=$potenciaP1;
}
if($potenciaP3<$potenciaP2){
$potenciaP3=$potenciaP2;
}
$suministro
->setPotenciaP3( $potenciaP2 )
->setPotenciaP4( $potenciaP2 )
->setPotenciaP5( $potenciaP2 )
->setPotenciaP6( $potenciaP3 );
$array=[
'success'=>true
];
break;
default:
$array=[
'success'=>false
];
}
}
else{
$suministro->setPotenciaP1($_POST['values']['potencias']['p1']);
$suministro->setPotenciaP2($_POST['values']['potencias']['p2']);
$suministro->setPotenciaP3($_POST['values']['potencias']['p3']);
$suministro->setPotenciaP4($_POST['values']['potencias']['p4']);
$suministro->setPotenciaP5($_POST['values']['potencias']['p5']);
$suministro->setPotenciaP6($_POST['values']['potencias']['p6']);
if( ($_POST['values']['producto']??null)==null ){
ob_start();
var_dump($_POST['values']['precios']);
$result = ob_get_clean();
$logger->info($result);
$producto=new Producto();
$producto->setNombre('PERSONALIZADO');
$producto->setTarifa( $tarifaRepository->find($_POST['values']['tarifa']) );
$producto->setPrecioPotenciaP1($_POST['values']['precios']['potencia']['p1']);
$producto->setPrecioPotenciaP2($_POST['values']['precios']['potencia']['p2']);
$producto->setPrecioPotenciaP3($_POST['values']['precios']['potencia']['p3']);
$producto->setPrecioPotenciaP4($_POST['values']['precios']['potencia']['p4']);
$producto->setPrecioPotenciaP5($_POST['values']['precios']['potencia']['p5']);
$producto->setPrecioPotenciaP6($_POST['values']['precios']['potencia']['p6']);
$producto->setPrecioEnergiaP1($_POST['values']['precios']['energia']['p1']);
$producto->setPrecioEnergiaP2($_POST['values']['precios']['energia']['p2']);
$producto->setPrecioEnergiaP3($_POST['values']['precios']['energia']['p3']);
$producto->setPrecioEnergiaP4($_POST['values']['precios']['energia']['p4']);
$producto->setPrecioEnergiaP5($_POST['values']['precios']['energia']['p5']);
$producto->setPrecioEnergiaP6($_POST['values']['precios']['energia']['p6']);
$producto->setFacturaElectronica($_POST['values']['precios']['facturaElectronica']);
$producto->setModalidad($doctrine->getRepository(Modalidad::class)->find(1));
$producto->setDuracion( date_interval_create_from_date_string('1 year') );
$producto->setPersonalizado(true);
$entityManager->persist($producto);
$contrato->setProducto($producto);
}else{
$contrato->setProducto( $productoRepository->find($_POST['values']['producto']) );
}
$producto=$contrato->getProducto();
if( !empty( $contrato->getFacturas() ) ){
$tarifaNew=$producto->getTarifa();
$reactivasOld=(
$tarifaOld->getReactivaP1() ||
$tarifaOld->getReactivaP2() ||
$tarifaOld->getReactivaP3() ||
$tarifaOld->getReactivaP4() ||
$tarifaOld->getReactivaP5() ||
$tarifaOld->getReactivaP6()
);
$reactivasNew=(
$tarifaNew->getReactivaP1() ||
$tarifaNew->getReactivaP2() ||
$tarifaNew->getReactivaP3() ||
$tarifaNew->getReactivaP4() ||
$tarifaNew->getReactivaP5() ||
$tarifaNew->getReactivaP6()
);
if(
$tarifaNew->getEnergiaP1()!==$tarifaOld->getEnergiaP1() ||
$tarifaNew->getEnergiaP2()!==$tarifaOld->getEnergiaP2() ||
$tarifaNew->getEnergiaP3()!==$tarifaOld->getEnergiaP3() ||
$tarifaNew->getEnergiaP4()!==$tarifaOld->getEnergiaP4() ||
$tarifaNew->getEnergiaP5()!==$tarifaOld->getEnergiaP5() ||
$tarifaNew->getEnergiaP6()!==$tarifaOld->getEnergiaP6() ||
$tarifaNew->getMaximetro()!==$tarifaOld->getMaximetro() ||
$reactivasNew!==$reactivasOld
){
$contrato->setCambioTarifa(true);
}
}
if( !$suministro->getMaximetro() )
$suministro->setMaximetro( $producto->getTarifa()->getMaximetro() );
$entityManager->flush();
$array=[
'success'=>true
];
}
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
elseif( !empty($_POST['values']['potencias']) ){
$logger->debug('potencias');
try {
$suministro=$contratoRepository->find( $_POST['id'] )->getSuministro();
$suministro->setpotenciaP1($_POST['values']['potencias']['p1']);
$suministro->setpotenciaP2($_POST['values']['potencias']['p2']);
$suministro->setpotenciaP3($_POST['values']['potencias']['p3']);
$suministro->setpotenciaP4($_POST['values']['potencias']['p4']);
$suministro->setpotenciaP5($_POST['values']['potencias']['p5']);
$suministro->setpotenciaP6($_POST['values']['potencias']['p6']);
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
elseif( !empty($_POST['values']['producto']) ){
$logger->debug('producto');
try {
$contrato=$contratoRepository->find( $_POST['id'] );
if( ($_POST['values']['producto']??null)==null || $_POST['values']['producto']=='null' ){
$producto=new Producto();
$producto->setNombre('PERSONALIZADO');
$producto->setTarifa( $contrato->getProducto()->getTarifa() );
$producto->setPrecioPotenciaP1($_POST['values']['precios']['potencia']['p1']);
$producto->setPrecioPotenciaP2($_POST['values']['precios']['potencia']['p2']);
$producto->setPrecioPotenciaP3($_POST['values']['precios']['potencia']['p3']);
$producto->setPrecioPotenciaP4($_POST['values']['precios']['potencia']['p4']);
$producto->setPrecioPotenciaP5($_POST['values']['precios']['potencia']['p5']);
$producto->setPrecioPotenciaP6($_POST['values']['precios']['potencia']['p6']);
$producto->setPrecioEnergiaP1($_POST['values']['precios']['energia']['p1']);
$producto->setPrecioEnergiaP2($_POST['values']['precios']['energia']['p2']);
$producto->setPrecioEnergiaP3($_POST['values']['precios']['energia']['p3']);
$producto->setPrecioEnergiaP4($_POST['values']['precios']['energia']['p4']);
$producto->setPrecioEnergiaP5($_POST['values']['precios']['energia']['p5']);
$producto->setPrecioEnergiaP6($_POST['values']['precios']['energia']['p6']);
$producto->setFacturaElectronica($_POST['values']['precios']['facturaElectronica']);
$producto->setModalidad($doctrine->getRepository(Modalidad::class)->find(1));
$producto->setDuracion( date_interval_create_from_date_string('1 year') );
$producto->setPersonalizado(true);
$entityManager->persist($producto);
$contrato->setProducto($producto);
}
else{
$contrato->setProducto( $productoRepository->find($_POST['values']['producto']) );
}
$entityManager->flush();
$array=[
'success'=>true
];
}catch (Exception $e){
$logger->alert( $e->getMessage() );
$array=[
'success'=>false
];
}
}
else{
$logger->debug('No values detected');
}
$logger->debug('endif');
}
else{
try {
$array=$contratoRepository->findBy( [ 'cliente'=>$_POST['cliente'] ], ['fecha'=>'desc'] );
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'referencia'=>$item->getReferenciaContrato(),
'direccion'=>$item->getSuministro()->getDireccion(),
'cups'=>$item->getSuministro()->getCups(),
'tipo'=>$item->getReferenciaContrato(),
'fecha'=>$item->getFecha(),
'fechaFin'=>$item->getFechaFin(),
];
}
}catch (Exception $e){}
}
}
else{
//$cache=new FilesystemAdapter();
$logger->info('Detected method GET');
if( $this->isGranted('ROLE_FACTURACION') ){
//$contratos=$contratoRepository->findBy([ 'oculto'=>false ]);
$logger->debug( var_export($_GET,1) );
if ( !empty($_GET['list']) ){
$superadmin=$this->isGranted('ROLE_SUPERADMIN');
$qb=$contratoRepository->createQueryBuilder('c')
->leftJoin('c.cliente','cl')->leftJoin('c.suministro','s')
->leftJoin('c.estado','e')->leftJoin('c.estadoFinanciero','ef')
->leftJoin('c.producto','p')->leftJoin('p.tarifa','t');
$qb->andWhere('c.oculto!= :true')
->setParameter('true',true);
$index=[
'index'=>null,
'cliente'=>'CONCAT(cl.nombre, " ", cl.apellido, " ", cl.apellido2)',
'nif'=>'cl.nif',
'direccion'=>'s.direccionCompleta',
'poblacion'=>'s.poblacion',
'cups'=>'s.cups',
'tarifa'=>'t.nombre',
'estado'=>'e.nombre',
'estadoFinanciero'=>'ef.nombre',
'ultimaLectura'=>'c.ultimaLectura',
'caducidad'=>'c.fechaCaducidad',
'options'=>null
];
$indexN=array_values($index);
$qbCount = clone $qb;
$totalContratos = $qbCount->select('COUNT(c.id)')
->getQuery()
->getSingleScalarResult();
$dateFrom=($_GET['dateFrom']??null);
$dateTo=($_GET['dateTo']??null);
$lecturaFrom=($_GET['lecturaFrom']??null);
$lecturaTo=($_GET['lecturaTo']??null);
$caducidadFrom=($_GET['caducidadFrom']??null);
$caducidadTo=($_GET['caducidadTo']??null);
$search=trim($_GET['search']['value']??null);
$searchArray=array_merge(explode(' ',$search));
$order=($_GET['order']??[0 =>['column' => '7', 'dir' => 'asc',], 1 =>['column' => '9', 'dir' => 'asc',],]);
$pageSize=($_GET['length']??100);
$offset=$_GET['start']??0;
if($dateFrom!==null){
$qb->andWhere('c.fechaLectura>= :dateFrom')
->setParameter('dateFrom',$dateFrom);
}
if($dateTo!==null){
$qb->andWhere('c.fechaLectura<= :dateTo')
->setParameter('dateTo',$dateTo);
}
if($lecturaFrom!==null){
$qb->andWhere('c.ultimaLectura>= :lecturaFrom')
->setParameter('lecturaFrom',$lecturaFrom);
}
if($lecturaTo!==null){
$qb->andWhere('c.ultimaLectura<= :lecturaTo')
->setParameter('lecturaTo',$lecturaTo);
}
if ($superadmin){
if($caducidadFrom!==null){
$qb->andWhere('c.fechaCaducidad>= :caducidadFrom')
->setParameter('caducidadFrom',$caducidadFrom);
}
if($caducidadTo!==null){
$qb->andWhere('c.fechaCaducidad<= :caducidadTo')
->setParameter('caducidadTo',$caducidadTo);
}
}
if ($search != null) {
if ($superadmin){
$expressionA=$qb->expr()->orX(
$qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))', '?0'),
$qb->expr()->like('cl.nif', '?0'),
$qb->expr()->like('UPPER(s.direccionCompleta)', '?0'),
$qb->expr()->like('UPPER(s.poblacion)', '?0'),
$qb->expr()->like('UPPER(s.cups)', '?0'),
$qb->expr()->like('UPPER(t.nombre)', '?0'),
$qb->expr()->like('UPPER(e.nombre)', '?0'),
$qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')", '?0'),
$qb->expr()->like("DATE_FORMAT(c.fechaCaducidad, '%d/%m/%Y')", '?0')
);
}else{
$expressionA=$qb->expr()->orX(
$qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))', '?0'),
$qb->expr()->like('cl.nif', '?0'),
$qb->expr()->like('UPPER(s.direccionCompleta)', '?0'),
$qb->expr()->like('UPPER(s.poblacion)', '?0'),
$qb->expr()->like('UPPER(s.cups)', '?0'),
$qb->expr()->like('UPPER(t.nombre)', '?0'),
$qb->expr()->like('UPPER(e.nombre)', '?0'),
$qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')", '?0')
);
}
if( count($searchArray)>1 ){
$i=0;
$expressions=[];
foreach ($searchArray as $s){
$i++;
if ($superadmin){
$expressions[]=$qb->expr()->orX(
$qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))', '?'.$i),
$qb->expr()->like('cl.nif', '?'.$i),
$qb->expr()->like('UPPER(s.direccionCompleta)', '?'.$i),
$qb->expr()->like('UPPER(s.poblacion)', '?'.$i),
$qb->expr()->like('UPPER(s.cups)', '?'.$i),
$qb->expr()->like('UPPER(t.nombre)', '?'.$i),
$qb->expr()->like('UPPER(e.nombre)', '?'.$i),
$qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')", '?'.$i),
$qb->expr()->like("DATE_FORMAT(c.fechaCaducidad, '%d/%m/%Y')", '?'.$i)
);
}else{
$expressions[]=$qb->expr()->orX(
$qb->expr()->like('UPPER(CONCAT(cl.nombre, \' \', cl.apellido, \' \', cl.apellido2))', '?'.$i),
$qb->expr()->like('cl.nif', '?'.$i),
$qb->expr()->like('UPPER(s.direccionCompleta)', '?'.$i),
$qb->expr()->like('UPPER(s.poblacion)', '?'.$i),
$qb->expr()->like('UPPER(s.cups)', '?'.$i),
$qb->expr()->like('UPPER(t.nombre)', '?'.$i),
$qb->expr()->like('UPPER(e.nombre)', '?'.$i),
$qb->expr()->like("DATE_FORMAT(c.ultimaLectura, '%d/%m/%Y')", '?'.$i)
);
}
}
$qb->andWhere($qb->expr()->orX(
$expressionA,
$qb->expr()->andX(...$expressions)
));
$i=0;
foreach ($searchArray as $s){
$i++;
$qb->setParameter($i, "%".strtoupper($s)."%");
}
$qb->setParameter('0', "%".strtoupper($search)."%");
}else{
$qb->andWhere($expressionA)->setParameter('0', "%".strtoupper($search)."%");
}
$qbCount = clone $qb;
$result['recordsFiltered'] = $qbCount->select('COUNT(c.id)')
->getQuery()
->getSingleScalarResult();
}else{
$result['recordsFiltered']=$totalContratos;
}
$qb->setMaxResults($pageSize)->setFirstResult($offset);
foreach ($order as $param){
$qb->addOrderBy( $indexN[$param['column']],strtoupper($param['dir']) );
}
$contratos=$qb->getQuery()->getResult();
$result['recordsTotal']=$totalContratos;
$result['draw']=intval($_GET['draw']);
}
elseif ( !empty($_GET['estado']) ){
try {
$qb=$contratoRepository->createQueryBuilder('c')
->join('c.estado','e');
$qb->where($qb->expr()->eq('e.id', ':estado'))
->andWhere($qb->expr()->eq('c.oculto', ':false'))
->setParameter('estado', $_GET['estado'])
->setParameter('false', false);
$contratos=$qb->getQuery()->getResult();
}catch (Exception $exception){
$result=$exception->getMessage();
}
}else{
try {
$qb=$contratoRepository->createQueryBuilder('c')
->join('c.estado','e');
$qb->where($qb->expr()->neq('e.id', ':estado'))
->andWhere($qb->expr()->eq('c.oculto', ':false'))
->setParameter('estado', 2)
->setParameter('false', false);
$contratos=$qb->getQuery()->getResult();
}catch (Exception $exception){
$result=$exception->getMessage();
}
}
try{
if( $superadmin??$this->isGranted('ROLE_SUPERADMIN') ){
foreach ($contratos as $contrato){
$id=$contrato->getId();
$cliente=$contrato->getCliente();
$suministro=$contrato->getSuministro();
$estado=$contrato->getEstado()->getNombre();
$class='small';
if($estado=='BORRADOR')
$class.=' alert-dark';
elseif($estado=='BAJA')
$class.=' alert-danger';
elseif($estado=='PENDIENTE ACTIVACIÓN')
$class.=' alert-warning';
$tarifa=$contrato->getProducto()->getTarifa();
$tipoTarifa=$tarifa->getTipoTarifa();
$item=[
"DT_RowId"=>"row".$id,
"DT_RowClass"=>$class,
'cliente'=>$cliente->__toString(),
'nif'=>$cliente->getNif(),
'direccion'=>$suministro->getDireccion(),
'poblacion'=>$suministro->getPoblacion(),
'cups'=>$suministro->getCups(),
'tarifa'=>$tarifa->getNombre(),
'tarifaId'=>$tarifa->getId(),
'tarifaOculta'=>$tarifa->getOculto(),
'tipoTarifa'=>$tipoTarifa->getNombre(),
'tipoTarifaId'=>$tipoTarifa->getId(),
'estado'=>$estado,
'estadoFinanciero'=>($contrato->getEstadoFinanciero()??new EstadoFinanciero)->getNombre(),
'ultimaLectura'=>date_format(($contrato->getUltimaLectura()??date_create()),'Y-m-d'),
'caducidad'=>date_format( ( $contrato->getFechaCaducidad()??( $contrato->getFechaFin()??date_create() ) ),'Y-m-d' ),
'facturas'=>count($contrato->getFacturas())
];
if($tarifa->getOculto()){
$item['periodos']=[
'energia'=>[
'p1'=>$tarifa->getEnergiaP1(),
'p2'=>$tarifa->getEnergiaP2(),
'p3'=>$tarifa->getEnergiaP3(),
'p4'=>$tarifa->getEnergiaP4(),
'p5'=>$tarifa->getEnergiaP5(),
'p6'=>$tarifa->getEnergiaP6(),
],
'potencia'=>[
'p1'=>$tarifa->getPotenciaP1(),
'p2'=>$tarifa->getPotenciaP2(),
'p3'=>$tarifa->getPotenciaP3(),
'p4'=>$tarifa->getPotenciaP4(),
'p5'=>$tarifa->getPotenciaP5(),
'p6'=>$tarifa->getPotenciaP6(),
],
'reactiva'=>[
'p1'=>$tarifa->getReactivaP1(),
'p2'=>$tarifa->getReactivaP2(),
'p3'=>$tarifa->getReactivaP3(),
'p4'=>$tarifa->getReactivaP4(),
'p5'=>$tarifa->getReactivaP5(),
'p6'=>$tarifa->getReactivaP6(),
]
];
}
$array[]=$item;
}
}
else{
foreach ($contratos as $contrato){
$id=$contrato->getId();
$cliente=$contrato->getCliente();
$suministro=$contrato->getSuministro();
$estado=$contrato->getEstado()->getNombre();
$class='small';
if($estado=='BORRADOR')
$class.=' alert-dark';
elseif($estado=='BAJA')
$class.=' alert-danger';
elseif($estado=='PENDIENTE ACTIVACIÓN')
$class.=' alert-warning';
$tarifa=$contrato->getProducto()->getTarifa();
$tipoTarifa=$tarifa->getTipoTarifa();
$item=[
"DT_RowId"=>"row".$id,
"DT_RowClass"=>$class,
'cliente'=>$cliente->__toString(),
'nif'=>$cliente->getNif(),
'direccion'=>$suministro->getDireccion(),
'poblacion'=>$suministro->getPoblacion(),
'cups'=>$suministro->getCups(),
'tarifa'=>$tarifa->getNombre(),
'tarifaId'=>$tarifa->getId(),
'tarifaOculta'=>$tarifa->getOculto(),
'tipoTarifa'=>$tipoTarifa->getNombre(),
'tipoTarifaId'=>$tipoTarifa->getId(),
'estado'=>$estado,
'estadoFinanciero'=>($contrato->getEstadoFinanciero()??new EstadoFinanciero)->getNombre(),
'ultimaLectura'=>date_format(($contrato->getUltimaLectura()??date_create()),'Y-m-d'),
'facturas'=>count($contrato->getFacturas())
];
if($tarifa->getOculto()){
$item['periodos']=[
'energia'=>[
'p1'=>$tarifa->getEnergiaP1(),
'p2'=>$tarifa->getEnergiaP2(),
'p3'=>$tarifa->getEnergiaP3(),
'p4'=>$tarifa->getEnergiaP4(),
'p5'=>$tarifa->getEnergiaP5(),
'p6'=>$tarifa->getEnergiaP6(),
],
'potencia'=>[
'p1'=>$tarifa->getPotenciaP1(),
'p2'=>$tarifa->getPotenciaP2(),
'p3'=>$tarifa->getPotenciaP3(),
'p4'=>$tarifa->getPotenciaP4(),
'p5'=>$tarifa->getPotenciaP5(),
'p6'=>$tarifa->getPotenciaP6(),
],
'reactiva'=>[
'p1'=>$tarifa->getReactivaP1(),
'p2'=>$tarifa->getReactivaP2(),
'p3'=>$tarifa->getReactivaP3(),
'p4'=>$tarifa->getReactivaP4(),
'p5'=>$tarifa->getReactivaP5(),
'p6'=>$tarifa->getReactivaP6(),
]
];
}
$array[]=$item;
}
}
}catch (Exception $exception){
$logger->warning($exception->getMessage());
}
$result['data']=$array??[];
return $this->json($result??[]);
}
}
$logger->debug(var_export($array??[],1));
return $this->json($array??[]);
}catch(Exception $e){
$logger->warning($e->getMessage());
}
}
else{
return $this->createNotFoundException();
}
return null;
}
/**
* @Route("/api/estado", name="api_estado")
*/
public function estado(Request $request, EstadoRepository $estadoRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
if($request->isXmlHttpRequest()){
try {
$array=$estadoRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}catch (Exception $e){}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/estadoFinanciero", name="api_estadoFinanciero")
*/
public function estadoFinanciero(Request $request, EstadoFinancieroRepository $estadoFinancieroRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
if($request->isXmlHttpRequest()){
try {
$array=$estadoFinancieroRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}catch (Exception $e){}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/event", name="api_event")
*/
public function event(Request $request, FullCalendarEventRepository $eventRepository, EntityManagerInterface $entityManager): Response
{
$this->denyAccessUnlessGranted('ROLE_FACTURACION');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
$response=false;
if( $request->isMethod('post') ){
try {
if($_POST['action']=='update'){
$logger->debug(var_export($_POST,true));
$values=json_decode($_POST['values'],true);
$event=$eventRepository->find($values['id']);
if(isset($values['title']))
$event->setTitle($values['title']);
if(isset($values['start'])){
if( count(explode('T',$values['start']))>1 ){
$event->setStart( date_create_from_format('Y-m-d\TH:i', $values['start']) );
}else{
$event->setStart( date_create_from_format('Y-m-d', $values['start']) );
}
}
if(isset($values['end'])){
if( count(explode('T',$values['end']))>1 ){
$event->setEnd( date_create_from_format('Y-m-d\TH:i', $values['end']) );
}else{
$event->setEnd( date_create_from_format('Y-m-d', $values['end']) );
}
}
if(isset($values['allDay']))
$event->setAllDay($values['allDay']);
if(isset($values['startTime'])){
$startTime=explode(":", $values['startTime']);
$startTime=[
'milliseconds'=>( ($startTime[0]*3600000)+($startTime[1]*60000) )
];
$event->setStartTime($startTime);
}
if(isset($values['endTime'])){
$endTime=explode(":", $values['endTime']);
$endTime=[
'milliseconds'=>( ($endTime[0]*3600000)+($endTime[1]*60000) )
];
$event->setEndTime($endTime);
}
if(isset($values['startRecur']))
$event->setStartRecur( date_create_from_format('Y-m-d\TH:i', $values['startRecur']) );
if(isset($values['endRecur']))
$event->setEndRecur( date_create_from_format('Y-m-d\TH:i', $values['endRecur']) );
if(isset($values['daysOfWeek']))
$event->setDaysOfWeek($values['daysOfWeek']);
if(isset($values['mensaje']))
$event->setMensaje($values['mensaje']);
$logger->debug(var_export($event,true));
$entityManager->persist($event);
}
elseif ($_POST['action']=='delete'){
$values=json_decode($_POST['values'],true);
$event=$eventRepository->find($values['id']);
$entityManager->remove($event);
}
else{
$logger->debug(var_export($_POST,true));
$values=json_decode($_POST['values'],true);
$event=new FullCalendarEvent();
if(isset($values['title']))
$event->setTitle($values['title']);
if(isset($values['start'])){
if( count(explode('T',$values['start']))>1 ){
$event->setStart( date_create_from_format('Y-m-d\TH:i', $values['start']) );
}else{
$event->setStart( date_create_from_format('Y-m-d', $values['start']) );
}
}
if(isset($values['end'])){
if( count(explode('T',$values['end']))>1 ){
$event->setEnd( date_create_from_format('Y-m-d\TH:i', $values['end']) );
}else{
$event->setEnd( date_create_from_format('Y-m-d', $values['end']) );
}
}
if(isset($values['allDay']))
$event->setAllDay($values['allDay']);
if(isset($values['startTime'])){
$startTime=explode(":", $values['startTime']);
$startTime=[
'milliseconds'=>( ($startTime[0]*3600000)+($startTime[1]*60000) )
];
$event->setStartTime($startTime);
}
if(isset($values['endTime'])){
$endTime=explode(":", $values['endTime']);
$endTime=[
'milliseconds'=>( ($endTime[0]*3600000)+($endTime[1]*60000) )
];
$event->setEndTime($endTime);
}
if(isset($values['startRecur']))
$event->setStartRecur( date_create_from_format('Y-m-d\TH:i', $values['startRecur']) );
if(isset($values['endRecur']))
$event->setEndRecur( date_create_from_format('Y-m-d\TH:i', $values['endRecur']) );
if(isset($values['daysOfWeek']))
$event->setDaysOfWeek($values['daysOfWeek']);
if(isset($values['mensaje']))
$event->setMensaje($values['mensaje']);
$logger->debug(var_export($event,true));
$entityManager->persist($event);
}
$entityManager->flush();
$response=true;
}catch (\Exception $exception){
$logger->error($exception->getMessage());
}
}
elseif ( $request->isMethod('get') ){
$events=$eventRepository->findAll();
$response=[];
foreach ($events as $event){
$response[]=[
'id'=>$event->getId(),
'allDay'=>$event->isAllDay(),
'start'=>$event->getStart(),
'end'=>$event->getEnd(),
'daysOfWeek'=>$event->getDaysOfWeek(),
'startTime'=>$event->getStartTime(),
'endTime'=>$event->getEndTime(),
'startRecur'=>$event->getStartRecur(),
'endRecur'=>$event->getEndRecur(),
'title'=>$event->getTitle(),
'extendedProps'=>[
'mensaje'=>$event->getMensaje(),
'daysOfWeek'=>$event->getDaysOfWeek(),
'startTime'=>$event->getStartTime(),
'endTime'=>$event->getEndTime(),
'startRecur'=>$event->getStartRecur(),
'endRecur'=>$event->getEndRecur()
]
];
}
}
}else{
$events=$eventRepository->findAll();
$response=[];
foreach ($events as $event){
$start=null;
$end=null;
if ( !is_null($event->getStart()) )
$start=$event->getStart()->format('c');
if ( !is_null($event->getEnd()) )
$end=$event->getEnd()->format('c');
if ( !is_null($event->getDaysOfWeek()) ){
if(empty($event->getDaysOfWeek())){
$daysOfWeek=null;
}
else{
$daysOfWeek=$event->getDaysOfWeek();
}
}
$response[]=[
'id'=>$event->getId(),
'allDay'=>$event->isAllDay(),
'start'=>$start??null,
'end'=>$end??null,
'daysOfWeek'=>$daysOfWeek,
'startTime'=>$event->getStartTime(),
'endTime'=>$event->getEndTime(),
'startRecur'=>$event->getStartRecur(),
'endRecur'=>$event->getEndRecur(),
'title'=>$event->getTitle(),
'extendedProps'=>[
'mensaje'=>$event->getMensaje(),
'daysOfWeek'=>$event->getDaysOfWeek(),
'startTime'=>$event->getStartTime(),
'endTime'=>$event->getEndTime(),
'startRecur'=>$event->getStartRecur(),
'endRecur'=>$event->getEndRecur()
]
];
}
/*return $this->render('api/index.html.twig', [
'controller_name' => 'ApiController',
]);*/
}
$logger->debug(var_export($response, true));
return $this->json($response??[]);
}
/**
* @Route("/api/factura", name="api_factura")
*/
public function factura(Request $request, FacturaRepository $facturaRepository, FacturaGenericaRepository $facturaGenericaRepository,
EstadoCompraFacturaRepository $estadoCompraFacturaRepository, BancoRepository $bancoRepository,
Pdf $pdf, MailerInterface $mailer, EntityManagerInterface $entityManager)
{
$this->denyAccessUnlessGranted('ROLE_FACTURACION');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
$logger->info('Entered factura API');
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('get') ){
$logger->info('Detected method GET');
$values=($_GET['values']??null);
$list=$request->get('list');
$response['success']=true;
if ( $list=='paged' ){
$logger->debug('entered factura paged list API');
$superadmin=$this->isGranted('ROLE_SUPERADMIN');
$qb=$facturaRepository->createQueryBuilder('f')
->leftJoin('f.contrato','c')->leftJoin('c.cliente','cl')
->leftJoin('c.suministro','s')->leftJoin('c.producto', 'p')
->leftJoin('p.tarifa','t')->leftJoin('t.tipoTarifa','tt')
->leftJoin('c.seller', 'cm');
$logger->debug('reached index');
$index=[
'index'=>null,
'cliente'=>'f.nombreCliente',
'nifCliente'=>'f.nifCliente',
'codigoCliente'=>'cl.codigoContable',
'referenciaContrato'=>'c.referenciaContrato',
'cups'=>'s.cups',
'codigoArticulo'=>'s.codigoContable',
'numero'=>'f.numeroFactura',
'fechaLectura'=>'f.fechaLectura',
'fechaEmision'=>'f.fechaEmision',
//'fechaDevolucion'=>'f.fechaDevolucion',
'suministro'=>'s.direccionCompleta',
'comercial'=>'c.comercial',
'tipo'=>'tt.nombre',
'tarifa'=>"t.nombre",
'baseImponible'=>'f.totalFactura/(1+(f.iva/100))',
'iva'=>'f.iva',
'importe'=>'f.totalFactura',
'fechaEmisionCompra'=>'f.fechaEmisionCompra',
'fechaCobroCompra'=>'f.fechaCobroCompra',
'importeCompra'=>'f.totalCompraFactura',
'estadoCompra'=>'f.estadoCompra',
'devuelta'=>'f.devuelta'
];
$indexN=array_values($index);
$qbCount = clone $qb;
try {
$totalFacturas = $qbCount->select('COUNT(t.id)')
->getQuery()
->getSingleScalarResult();
} catch (NoResultException|NonUniqueResultException $e) {
$totalFacturas=0;
}
$emisionFrom=($_GET['emisionFrom']??null);
$emisionTo=($_GET['emisionTo']??null);
$lecturaFrom=($_GET['lecturaFrom']??null);
$lecturaTo=($_GET['lecturaTo']??null);
$search=trim($_GET['search']['value']??null);
$searchArray=array_merge(explode(' ',$search));
$order=($_GET['order']??[0 =>['column' => '7', 'dir' => 'asc',], 1 =>['column' => '9', 'dir' => 'asc',],]);
$logger->debug('Request: '.var_export($_GET,1));
$pageSize=($_GET['length']??100);
$offset=$_GET['start']??0;
if($emisionFrom!==null){
$qb->andWhere('f.fechaEmision>= :emisionFrom')
->setParameter('emisionFrom',$emisionFrom);
}
if($emisionTo!==null){
$qb->andWhere('f.fechaEmision<= :emisionTo')
->setParameter('emisionTo',$emisionTo);
}
if($lecturaFrom!==null){
$qb->andWhere('f.fechaLectura>= :lecturaFrom')
->setParameter('lecturaFrom',$lecturaFrom);
}
if($lecturaTo!==null){
$qb->andWhere('f.fechaLectura<= :lecturaTo')
->setParameter('lecturaTo',$lecturaTo);
}
if ($search != null) {
if ($superadmin){
$expressionA=$qb->expr()->orX(
$qb->expr()->like('UPPER('.$index['cliente'].')', '?0'),
$qb->expr()->like($index['nifCliente'], '?0'),
$qb->expr()->like($index['codigoCliente'], '?0'),
$qb->expr()->like($index['referenciaContrato'], '?0'),
$qb->expr()->like($index['cups'], '?0'),
$qb->expr()->like($index['codigoArticulo'], '?0'),
$qb->expr()->like($index['numero'], '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like('UPPER('.$index['suministro'].')', '?0'),
$qb->expr()->like('UPPER('.$index['comercial'].')', '?0'),
$qb->expr()->like('UPPER('.$index['tipo'].')', '?0'),
$qb->expr()->like('UPPER('.$index['tarifa'].')', '?0'),
$qb->expr()->like('UPPER('.$index['iva'].')', '?0'),
$qb->expr()->like('UPPER('.$index['importe'].')', '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmisionCompra'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaCobroCompra'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like('UPPER('.$index['importeCompra'].')', '?0')
);
}else{
$expressionA=$qb->expr()->orX(
$qb->expr()->like('UPPER('.$index['cliente'].')', '?0'),
$qb->expr()->like($index['nifCliente'], '?0'),
$qb->expr()->like($index['codigoCliente'], '?0'),
$qb->expr()->like($index['referenciaContrato'], '?0'),
$qb->expr()->like($index['cups'], '?0'),
$qb->expr()->like($index['codigoArticulo'], '?0'),
$qb->expr()->like($index['numero'], '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like('UPPER('.$index['suministro'].')', '?0'),
$qb->expr()->like('UPPER('.$index['comercial'].')', '?0'),
$qb->expr()->like('UPPER('.$index['tipo'].')', '?0'),
$qb->expr()->like('UPPER('.$index['tarifa'].')', '?0'),
$qb->expr()->like('UPPER('.$index['iva'].')', '?0'),
$qb->expr()->like('UPPER('.$index['importe'].')', '?0')
);
}
if( count($searchArray)>1 ){
$i=0;
$expressions=[];
foreach ($searchArray as $s){
$i++;
if ($superadmin){
$expressions[]=$qb->expr()->orX(
$qb->expr()->like('UPPER('.$index['cliente'].')', '?'.$i),
$qb->expr()->like($index['nifCliente'], '?'.$i),
$qb->expr()->like($index['codigoCliente'], '?'.$i),
$qb->expr()->like($index['referenciaContrato'], '?'.$i),
$qb->expr()->like($index['cups'], '?'.$i),
$qb->expr()->like($index['codigoArticulo'], '?'.$i),
$qb->expr()->like($index['numero'], '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like('UPPER('.$index['suministro'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['comercial'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['tipo'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['tarifa'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['iva'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['importe'].')', '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmisionCompra'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaCobroCompra'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like('UPPER('.$index['importeCompra'].')', '?'.$i)
);
}else{
$expressions[]=$qb->expr()->orX(
$qb->expr()->like('UPPER('.$index['cliente'].')', '?'.$i),
$qb->expr()->like($index['nifCliente'], '?'.$i),
$qb->expr()->like($index['codigoCliente'], '?'.$i),
$qb->expr()->like($index['referenciaContrato'], '?'.$i),
$qb->expr()->like($index['cups'], '?'.$i),
$qb->expr()->like($index['codigoArticulo'], '?'.$i),
$qb->expr()->like($index['numero'], '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaLectura'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like('UPPER('.$index['suministro'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['comercial'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['tipo'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['tarifa'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['iva'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['importe'].')', '?'.$i)
);
}
}
$qb->andWhere($qb->expr()->orX(
$expressionA,
$qb->expr()->andX(...$expressions)
));
$i=0;
foreach ($searchArray as $s){
$i++;
$qb->setParameter($i, "%".strtoupper($s)."%");
}
$qb->setParameter('0', "%".strtoupper($search)."%");
}else{
$qb->andWhere($expressionA)->setParameter('0', "%".strtoupper($search)."%");
}
$qbCount = clone $qb;
$result['recordsFiltered'] = $qbCount->select('COUNT(c.id)')
->getQuery()
->getSingleScalarResult();
}else{
$result['recordsFiltered']=$totalFacturas;
}
$qb->setMaxResults($pageSize)->setFirstResult($offset);
foreach ($order as $param){
$qb->addOrderBy( $indexN[$param['column']],strtoupper($param['dir']) );
}
$facturas=$qb->getQuery()->getResult();
$result['recordsTotal']=$totalFacturas;
$result['draw']=intval($_GET['draw']);
foreach ($facturas as $factura){
try {
$contrato=$factura->getContrato();
$tarifa=$contrato->getProducto()->getTarifa();
$class='';
if( $factura->getDevuelta() ){
$class='alert-warning';
}
$fechaDevolucion=$factura->getFechaDevolucion();
if( !empty($fechaDevolucion) ){
$fechaDevolucion=$fechaDevolucion->format('Y-m-d');
}
$item=[
"DT_RowId"=>"row".$factura->getId(), //Definitely not unique IDs
"DT_RowClass"=>$class,
'cliente'=>$factura->getNombreCliente(),
'numero'=>$factura->getNumeroFactura(),
'fechaEmision'=>$factura->getfechaEmision()->format('Y-m-d'),
'fechaDevolucion'=>$fechaDevolucion,
'suministro'=>$factura->getContrato()->getSuministro()->getDireccion(),
'tipo'=>$tarifa->getTipoTarifa()->getNombre(),
'tarifa'=>$tarifa->getNombre(),
'devuelta'=>$factura->getDevuelta(),
'importe'=>$factura->getTotalFactura(),
'nifCliente'=>$factura->getNifCliente(),
'nombreContacto'=>( $contrato->getCliente()->getNombreRepresentante()??$contrato->getCliente()->__toString() ),
'telefono'=>$contrato->getCliente()->getTelefono(),
'email'=>$contrato->getCliente()->getEmail(),
'referenciaContrato'=>$contrato->getReferenciaContrato(),
'cups'=>$contrato->getSuministro()->getCups(),
'baseImponible'=>( $factura->getTotalFactura()/(1+($factura->getIva()/100)) ),
'iva'=>$factura->getIva(),
'codigoCliente'=>$contrato->getCliente()->getCodigoContable(),
'codigoArticulo'=>$contrato->getSuministro()->getCodigoContable(),
'comercial'=>$contrato->getComercial()
];
if($factura->getClassName()=='Factura'){
$estadoCompra=$factura->getEstadoCompra();
$item['fechaLectura']=$factura->getFechaLectura()->format('Y-m-d');
$item['estadoCompra']=( $estadoCompra ? $estadoCompra->getNombre() : null );
$item['importeCompra']=$factura->getTotalCompra();
$item['fechaCobroCompra']=$factura->getFechaCobroCompra()? $factura->getFechaCobroCompra()->format('Y-m-d') : null;
$item['fechaEmisionCompra']=$factura->getFechaEmisionCompra()? $factura->getFechaEmisionCompra()->format('Y-m-d') : null;
$item['generica']=false;
}else{
$item['fechaLectura']='otros conceptos';
$item['generica']=true;
}
$array[]=$item;
}catch (Exception $e){
$logger->warning($e->getMessage());
ob_start();
var_dump($factura);
$result = ob_get_clean();
$logger->warning($result);
}
}
$result['data']=$array??[];
$response=$result;
}
elseif( $list ){
$logger->info('Detected list=true');
$devuelta=($_GET['devuelta']??null);
if ($devuelta=='false')
$devuelta=true;
elseif ($devuelta=='true')
$devuelta=false;
else
$devuelta=null;
$dateFrom=date_create_from_format('Y-m-d',($_GET['dateFrom']??null));
if (!$dateFrom)
$dateFrom=null;
$dateTo=date_create_from_format('Y-m-d',($_GET['dateTo']??null));
if (!$dateTo)
$dateTo=null;
$dateLecturaFrom=date_create_from_format('Y-m-d',($_GET['dateLecturaFrom']??null));
if (!$dateLecturaFrom)
$dateLecturaFrom=null;
$dateLecturaTo=date_create_from_format('Y-m-d',($_GET['dateLecturaTo']??null));
if (!$dateLecturaTo)
$dateLecturaTo=null;
$tipoFactura=($_GET['tipoFactura']??null);
$tipoTarifa=($_GET['tipoTarifa']??null);
$genericas=(($tipoFactura=='todas'||$tipoFactura=='otros') && $dateLecturaFrom==null && $dateLecturaTo==null);
$logger->debug('devuelta='.var_export($devuelta,1));
$logger->debug('dateFrom='.var_export($dateFrom,1));
$logger->debug('dateTo='.var_export($dateTo,1));
try{
if($tipoFactura=='todas'||$tipoFactura=='suministro'){
$facturas=$facturaRepository->findByFilter(
$dateFrom,
$dateTo,
$dateLecturaFrom,
$dateLecturaTo,
null,
null,
$devuelta,
null
);
}
if ($genericas){
$facturasGenericas=$facturaGenericaRepository->findByFilter(
$dateFrom,
$dateTo,
$devuelta
);
}
$facturas=array_merge($facturas??[], $facturasGenericas??[]);
foreach ($facturas as $factura){
try {
$contrato=$factura->getContrato();
$cliente=$contrato->getCliente();
$tarifa=$contrato->getProducto()->getTarifa();
$class='';
if( $factura->getDevuelta() ){
$class='alert-warning';
}
$fechaDevolucion=$factura->getFechaDevolucion();
if( !empty($fechaDevolucion) ){
$fechaDevolucion=$fechaDevolucion->format('Y-m-d');
}
$item=[
"DT_RowId"=>"row".$factura->getId(), //Definitely not unique IDs
"DT_RowClass"=>$class,
'cliente'=>$factura->getNombreCliente(),
'numero'=>$factura->getNumeroFactura(),
'fechaEmision'=>$factura->getfechaEmision()->format('Y-m-d'),
'fechaDevolucion'=>$fechaDevolucion,
'fechaCargo'=>date_modify($factura->getFechaEmision(),'+5 day')->format('Y-m-d'),
'suministro'=>$factura->getContrato()->getSuministro()->getDireccion(),
'tipo'=>$tarifa->getTipoTarifa()->getNombre(),
'tarifa'=>$tarifa->getNombre(),
'devuelta'=>$factura->getDevuelta(),
'importe'=>$factura->getTotalFactura(),
'nifCliente'=>$factura->getNifCliente(),
'nombreContacto'=>( $cliente->getNombreRepresentante()??$cliente->__toString() ),
'email'=>$cliente->getEmail(),
'telefono'=>$cliente->getTelefono(),
'referenciaContrato'=>$contrato->getReferenciaContrato(),
'cups'=>$contrato->getSuministro()->getCups(),
'baseImponible'=>( $factura->getTotalFactura()/(1+($factura->getIva()/100)) ),
'iva'=>$factura->getIva(),
'codigoCliente'=>$contrato->getCliente()->getCodigoContable(),
'codigoArticulo'=>$contrato->getSuministro()->getCodigoContable(),
'comercial'=>$contrato->getComercial(),
'iban'=>$contrato->getNumeroCuenta(),
'direccionCliente'=>$factura->getDireccionCliente(),
'cpCliente'=>$factura->getCpCliente(),
'poblacionCliente'=>$factura->getPoblacionCliente(),
'provinciaCliente'=>$factura->getProvinciaCliente(),
'proveedor'=>$contrato->getProveedor()->getNombre()??$contrato->getProductoProveedor()->getNombre(),
];
if($factura->getClassName()=='Factura'){
$estadoCompra=$factura->getEstadoCompra();
$item['inicioPeriodo']=date_modify($factura->getFechaLecturaAnterior(),'+1 day')->format('Y-m-d');
$item['fechaLectura']=$factura->getFechaLectura()->format('Y-m-d');
$item['estadoCompra']=( $estadoCompra ? $estadoCompra->getNombre() : null );
$item['importeCompra']=$factura->getTotalCompra();
$item['fechaCobroCompra']=$factura->getFechaCobroCompra()? $factura->getFechaCobroCompra()->format('Y-m-d') : null;
$item['fechaEmisionCompra']=$factura->getFechaEmisionCompra()? $factura->getFechaEmisionCompra()->format('Y-m-d') : null;
$item['generica']=false;
}else{
$item['fechaLectura']='otros conceptos';
$item['generica']=true;
}
$array[]=$item;
}catch (Exception $e){
$logger->warning($e->getMessage());
ob_start();
var_dump($factura);
$result = ob_get_clean();
$logger->warning($result);
}
}
$response=$array??null;
}catch (Exception $e){
$logger->warning($e->getMessage());
}
}
elseif( $values!==null ){
if( array_search('average',$values)!==false ){
try{
$factura=$facturaRepository->find( $_GET['id'] );
$facturas=array_slice( $facturaRepository->findOlderThan($factura),0,12 );
if(count($facturas)!==0){
foreach ($facturas as $actual){
$fechaInicial=$actual->getFechaLecturaAnterior();
$fechaFinal=$actual->getFechaLectura();
break;
}
$importeEnergia=0;
$importeConsumo=0;
$importeReactiva=0;
foreach ($facturas as $actual){
$importeEnergia+=$actual->getImporteEnergia();
$importeConsumo+=$actual->getImporteConsumo();
$importeReactiva+=$actual->getImporteReactiva();
if($actual->getFechaLectura()>$fechaFinal){
$fechaFinal=clone $actual->getFechaLectura();
}
if($actual->getFechaLecturaAnterior()<$fechaInicial){
$fechaInicial=clone $actual->getFechaLecturaAnterior();
}
}
$periodo=date_diff($fechaInicial,$fechaFinal)->days;
$importeEnergia/=$periodo;
$importeConsumo/=$periodo;
$importeReactiva/=$periodo;
$response['success']=true;
$response['values']['average']['importeEnergia']=$importeEnergia;
$response['values']['average']['importeConsumo']=$importeConsumo;
$response['values']['average']['importeReactiva']=$importeReactiva;
$response['values']['fechaIncial']=date_format($fechaInicial,'Y-m-d');
$response['values']['fechaFinal']=date_format($fechaFinal,'Y-m-d');
$response['values']['periodo']=date_diff($fechaInicial,$fechaFinal)->days;
}else{
$response['success']=true;
$response['values']['average']=0;
$response['values']['fechaIncial']=0;
$response['values']['fechaFinal']=0;
$response['values']['periodo']=0;
}
}catch (Exception $exception){
$logger->alert( $exception->getMessage() );
$response['success']=false;
}
}
if( array_search('devuelta',$values)!==false ){
try{
$factura=$facturaRepository->find( $_GET['id'] );
$response['devuelta']=$factura->getDevuelta();
}catch (Exception $exception){
$logger->alert( $exception->getMessage() );
$response['success']=false;
}
}
}
}
elseif( $request->isMethod('post') ){
if($_POST['action']=='update'){
$values=($_POST['values']??null);
if( array_key_exists('devuelta',$values)!==false ){
try{
if(is_array($_POST['id'])){
$status=[];
foreach ($_POST['id'] as $rowId){
$successful=false;
if(str_starts_with($rowId, 'facturaGenerica')){
$id=str_replace('facturaGenerica','', $rowId);
$factura=$facturaGenericaRepository->find( $id );
$successful=true;
}
elseif(str_starts_with($rowId, 'factura')){
$id=str_replace('factura','', $rowId);
$factura=$facturaGenericaRepository->find( $id );
$successful=true;
}
if($successful){
$env=$_SERVER['APP_ENV']??'finkaluz';
$factura->setDevuelta(true);
$factura->setFechaDevolucion(date_create());
$factura->getContrato()->setFacturaDevuelta(true);
//Notificación email
try {
switch ($env){
case 'finkaluz':case 'emfra':
$from = 'finkaluz@finkaluz.com';
$body=$this->renderView('email/finkaluz.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'onda':
$from = 'facturacion@ondaenergia.es';
$body=$this->renderView('email/onda.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'digitel':
$from = 'facturacionluz@itdigitel.es';
$body=$this->renderView('email/digitel.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'apolo':
$from = 'clientes@vibraenergies.es';
$body=$this->renderView('email/apolo.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'e3':
$from = 'e3powerenergy@e3powerenergy.com';
$body=$this->renderView('email/e3/facturaDevuelta.html.twig',['factura'=>$factura]);
break;
default:
$from = 'contacto@energaze.com';
$body=$this->renderView('email/facturaDevuelta.html.twig',['factura'=>$factura]);
break;
}
$message = (new Email())
->subject('FACTURA DEVUELTA')
->from($from)
->to($factura->getContrato()->getCliente()->getEmail())
->html($body);
$mailer->send($message);
$status[]='success';
}catch (\Exception $exception){
$logger->info($exception->getMessage());
$status[]='error';
}
$entityManager->flush();
}
}
$response['success']=in_array('success', $status);
}else{
$factura=$facturaRepository->find( $_POST['id'] );
$env=$_SERVER['APP_ENV']??'finkaluz';
if( $values['devuelta']==='true' || $values['devuelta']===true ){
$factura->setDevuelta(true);
$factura->setFechaDevolucion(date_create());
$factura->getContrato()->setFacturaDevuelta(true);
//Notificación email
try {
switch ($env){
case 'finkaluz':case 'emfra':
$from = 'finkaluz@finkaluz.com';
$body=$this->renderView('email/finkaluz.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'onda':
$from = 'facturacion@ondaenergia.es';
$body=$this->renderView('email/onda.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'digitel':
$from = 'facturacionluz@itdigitel.es';
$body=$this->renderView('email/digitel.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'apolo':
$from = 'clientes@vibraenergies.es';
$body=$this->renderView('email/apolo.facturaDevuelta.html.twig',['factura'=>$factura]);
break;
case 'e3':
$from = 'e3powerenergy@e3powerenergy.com';
$body=$this->renderView('email/e3/facturaDevuelta.html.twig',['factura'=>$factura]);
break;
default:
$from = 'contacto@energaze.com';
$body=$this->renderView('email/facturaDevuelta.html.twig',['factura'=>$factura]);
break;
}
$message = (new Email())
->subject('FACTURA DEVUELTA')
->from($from)
->to($factura->getContrato()->getCliente()->getEmail())
->html($body);
$mailer->send($message);
}catch (\Exception $exception){
$logger->info($exception->getMessage());
}
}elseif ( $values['devuelta']=='false' || $values['devuelta']===false ){
$factura->setDevuelta(false);
//Notificación email
try {
switch ($env){
case 'finkaluz':case 'emfra':
$from = 'finkaluz@finkaluz.com';
$body=$this->renderView('email/finkaluz.facturaPagada.html.twig',['factura'=>$factura]);
break;
case 'onda':
$from = 'facturacion@ondaenergia.es';
$body=$this->renderView('email/onda.facturaPagada.html.twig',['factura'=>$factura]);
break;
case 'digitel':
$from = 'facturacionluz@itdigitel.es';
$body=$this->renderView('email/digitel.facturaPagada.html.twig',['factura'=>$factura]);
break;
case 'apolo':
$from = 'clientes@vibraenergies.es';
$body=$this->renderView('email/apolo.facturaPagada.html.twig',['factura'=>$factura]);
break;
case 'e3':
$from = 'e3powerenergy@e3powerenergy.com';
$body=$this->renderView('email/e3/facturaPagada.html.twig',['factura'=>$factura]);
break;
default:
$from = 'contacto@energaze.com';
$body=$this->renderView('email/facturaPagada.html.twig',['factura'=>$factura]);
break;
}
$message = (new Email())
->subject('FACTURA PAGADA')
->from($from)
->to($factura->getContrato()->getCliente()->getEmail())
->html($body);
$mailer->send($message);
}catch (\Exception $exception){
$logger->info($exception->getMessage());
}
}else{
throw new Exception('Invalid value given. Only values taken are boolean and "true" or "false" string.');
}
$entityManager->flush();
$response['success']=true;
}
}catch (Exception $exception){
$logger->alert( $exception->getMessage() );
$response['success']=false;
}
}
if( array_key_exists('compraPagada',$values)!==false ){
if(is_array($_POST['id'])){
$status=[];
foreach ($_POST['id'] as $rowId){
$successful=false;
if(!str_starts_with($rowId, 'facturaGenerica') && str_starts_with($rowId, 'factura')){
$id=str_replace('factura','', $rowId);
$factura=$facturaRepository->find( $id );
$successful=true;
}
if($successful){
$factura->setEstadoCompra($estadoCompraFacturaRepository->findOneBy(['nombre'=>'Pagada']));
$status[]='success';
$entityManager->flush();
}
}
$response['success']=in_array('success', $status);
}
}
}
elseif($_POST['action']=='send'){
if(is_array($_POST['id'])){
$logger = new Logger('factura_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/email.log', Logger::DEBUG));
$status=[];
foreach ($_POST['id'] as $rowId){
if(str_starts_with($rowId, 'facturaGenerica')){
$logger->info($rowId);
$id=str_replace('facturaGenerica','', $rowId);
$factura=$facturaGenericaRepository->find( $id );
$entidad = $bancoRepository->findByCuenta($factura->getCcc());
$tarifa = $factura->getTarifa();
if ($tarifa->getTipoTarifa() == 'Electricidad') {
$subject = 'FACTURA ELECTRICIDAD';
$tipo='electricidad';
}
else {
$subject = 'FACTURA GAS';
$tipo='gas';
}
$importeTotal=0;
foreach ($factura->getConceptos() as $concepto){
$importeTotal+=$concepto->getImporte();
}
$importeIva=round($factura->getIva()*$importeTotal/100,2);
$totalFactura=round($importeTotal+$importeIva,2);
if( $totalFactura!==$factura->getTotalFactura() ) {
$factura->setTotalFactura($totalFactura);
$entityManager->flush();
}
$params=[
'factura' => $factura,
'entidad'=>$entidad,
'importeTotal'=>$importeTotal,
'importeIva'=>$importeIva,
'totalFactura'=>$totalFactura,
];
switch ($_SERVER['APP_ENV']??'finkaluz'){
case 'finkaluz':
$html=$this->renderView('factura_generica/finkaluz.factura.pdf.twig', $params);
break;
case 'emfra':
$html=$this->renderView('factura_generica/emfra.factura.pdf.twig', $params);
break;
case 'onda':
$html=$this->renderView('factura_generica/onda.factura.pdf.twig', $params);
break;
case 'digitel':
$html=$this->renderView('factura_generica/digitel.factura.pdf.twig', $params);
break;
case 'apolo':
$html=$this->renderView('factura_generica/apolo.factura.pdf.twig', $params);
break;
case 'e3':
$html=$this->renderView('factura_generica/e3/factura.pdf.twig', $params);
break;
default:
$html=$this->renderView('factura_generica/factura.pdf.twig', $params);
break;
}
try {
unlink(__DIR__ . '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
} catch (\Exception $exception) {
}
$pdf->generateFromHtml(
$html,
__DIR__ . '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf'
);
try {
switch ($_SERVER['APP_ENV']??'finkaluz'){
case 'finkaluz':
$body=$this->renderView('email/finkaluz.factura.html.twig',['tipo'=>$tipo]);
$from='finkaluz@finkaluz.com';
break;
case 'emfra':
$body=$this->renderView('email/emfra.factura.html.twig',['tipo'=>$tipo]);
$from='finkaluz@finkaluz.com';
break;
case 'onda':
$body=$this->renderView('email/onda.factura.html.twig',['tipo'=>$tipo]);
$from='facturacion@ondaenergia.es';
break;
case 'digitel':
$body=$this->renderView('email/digitel.factura.html.twig',['tipo'=>$tipo]);
$from='facturacionluz@itdigitel.es';
break;
case 'apolo':
$body=$this->renderView('email/apolo.factura.html.twig',['tipo'=>$tipo]);
$from='clientes@vibraenergies.es';
break;
case 'e3':
$body=$this->renderView('email/e3/factura.html.twig',['tipo'=>$tipo]);
$from='e3powerenergy@e3powerenergy.com';
break;
default:
$body=$this->renderView('email/factura.html.twig',['tipo'=>$tipo]);
$from='contacto@energaze.com';
break;
}
$message = (new Email())
->subject($subject)
->from($from)
->to($factura->getContrato()->getCliente()->getEmail())
->html($body)
->attachFromPath(__DIR__ . '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
$mailer->send($message);
$status[]='success';
}catch (\Exception $exception){
$status[]='error';
$logger->info($exception->getMessage());
}
}
elseif(str_starts_with($rowId, 'factura')){
$logger->info($rowId);
$id=str_replace('factura','', $rowId);
$logger->info($id);
$factura=$facturaRepository->find( $id );
$logger->info($factura->getNumeroFactura());
$urlImagen = $request->request->get("urlImagen");
$facturas = $facturaRepository->findBy(['contrato' => $factura->getContrato()], ['fechaLectura' => 'ASC']);
$tarifa = $factura->getTarifa();
$entidad = $bancoRepository->findByCuenta($factura->getCcc());
$consumoAcumulado = '0';
$consumoMedio = '0';
if($tarifa->getTipoTarifa()=='Electricidad'){
$subject = 'FACTURA ELECTRICIDAD';
$tipo='electricidad';
if($tarifa=='3.0A' || $tarifa=='3.1A'){
$periodoFacturacion=date_diff( $factura->getFechaLecturaAnterior(), $factura->getFechaLectura() )->days;
$consumoP1Facturado=$factura->getConsumoP1()+$factura->getConsumoP4();
$consumoP2Facturado=$factura->getConsumoP2()+$factura->getConsumoP5();
$consumoP3Facturado=$factura->getConsumoP3()+$factura->getConsumoP6();
$potenciaP1Facturada=$factura->getPotenciaFacturada('P1');
$potenciaP2Facturada=$factura->getPotenciaFacturada('P2');
$potenciaP3Facturada=$factura->getPotenciaFacturada('P3');
$totalPotenciaP1=round($potenciaP1Facturada*$factura->getPrecioPotenciaP1()*$periodoFacturacion,2);
$totalPotenciaP2=round($potenciaP2Facturada*$factura->getPrecioPotenciaP2()*$periodoFacturacion,2);
$totalPotenciaP3=round($potenciaP3Facturada*$factura->getPrecioPotenciaP3()*$periodoFacturacion,2);
$totalPotencia=$totalPotenciaP1+$totalPotenciaP2+$totalPotenciaP3;
$totalEnergiaP1=round($consumoP1Facturado*$factura->getPrecioEnergiaP1(),2);
$totalEnergiaP2=round($consumoP2Facturado*$factura->getPrecioEnergiaP2(),2);
$totalEnergiaP3=round($consumoP3Facturado*$factura->getPrecioEnergiaP3(),2);
$totalEnergia=$totalEnergiaP1+$totalEnergiaP2+$totalEnergiaP3;
$reactivaP1=$factura->getReactivaP1()+$factura->getReactivaP4();
$reactivaP2=$factura->getReactivaP2()+$factura->getReactivaP5();
$excesoReactivaP1=$reactivaP1-0.33*$consumoP1Facturado;
$excesoReactivaP2=$reactivaP2-0.33*$consumoP2Facturado;
if($excesoReactivaP1<0)
$excesoReactivaP1=0;
if($excesoReactivaP2<0)
$excesoReactivaP2=0;
$importeReactivaP1=round($excesoReactivaP1*$factura->getPrecioReactivaP1(),2);
$importeReactivaP2=round($excesoReactivaP2*$factura->getPrecioReactivaP2(),2);
$totalReactiva=$importeReactivaP1+$importeReactivaP2;
$subtotal=round($totalEnergia+$totalPotencia+$totalReactiva,2);
$importeImpuesto=round($factura->getImpuesto()*$subtotal/100,2);
$importeAlquiler=round($periodoFacturacion*$factura->getAlquilerEquipos(),2);
$otrosConceptos=0;
foreach ($factura->getConceptos() as $concepto){
$otrosConceptos+=round($concepto->getImporte(),2);
}
$importeTotal=round($subtotal+$importeAlquiler+$importeImpuesto+$otrosConceptos,2);
$importeIva=round($factura->getIva()*$importeTotal/100,2);
$totalFactura=round($importeTotal+$importeIva,2);
if( $totalFactura!==$factura->getTotalFactura() ){
$factura->setTotalFactura($totalFactura);
$entityManager->flush();
}
}
else{
$periodoFacturacion=date_diff( $factura->getFechaLecturaAnterior(), $factura->getFechaLectura() )->days;
$consumoP1Facturado=$factura->getConsumoP1();
$consumoP2Facturado=$factura->getConsumoP2();
$consumoP3Facturado=$factura->getConsumoP3();
$consumoP4Facturado=$factura->getConsumoP4();
$consumoP5Facturado=$factura->getConsumoP5();
$consumoP6Facturado=$factura->getConsumoP6();
$potenciaP1Facturada=$factura->getPotenciaFacturada('P1');
$potenciaP2Facturada=$factura->getPotenciaFacturada('P2');
$potenciaP3Facturada=$factura->getPotenciaFacturada('P3');
$potenciaP4Facturada=$factura->getPotenciaFacturada('P4');
$potenciaP5Facturada=$factura->getPotenciaFacturada('P5');
$potenciaP6Facturada=$factura->getPotenciaFacturada('P6');
$totalPotenciaP1=round($potenciaP1Facturada*$factura->getPrecioPotenciaP1()*$periodoFacturacion,2);
$totalPotenciaP2=round($potenciaP2Facturada*$factura->getPrecioPotenciaP2()*$periodoFacturacion,2);
$totalPotenciaP3=round($potenciaP3Facturada*$factura->getPrecioPotenciaP3()*$periodoFacturacion,2);
$totalPotenciaP4=round($potenciaP4Facturada*$factura->getPrecioPotenciaP4()*$periodoFacturacion,2);
$totalPotenciaP5=round($potenciaP5Facturada*$factura->getPrecioPotenciaP5()*$periodoFacturacion,2);
$totalPotenciaP6=round($potenciaP6Facturada*$factura->getPrecioPotenciaP6()*$periodoFacturacion,2);
$totalPotencia=$totalPotenciaP1+$totalPotenciaP2+$totalPotenciaP3+$totalPotenciaP4+$totalPotenciaP5+$totalPotenciaP6;
$totalEnergiaP1=round($consumoP1Facturado*$factura->getPrecioEnergiaP1(),2);
$totalEnergiaP2=round($consumoP2Facturado*$factura->getPrecioEnergiaP2(),2);
$totalEnergiaP3=round($consumoP3Facturado*$factura->getPrecioEnergiaP3(),2);
$totalEnergiaP4=round($consumoP4Facturado*$factura->getPrecioEnergiaP4(),2);
$totalEnergiaP5=round($consumoP5Facturado*$factura->getPrecioEnergiaP5(),2);
$totalEnergiaP6=round($consumoP6Facturado*$factura->getPrecioEnergiaP6(),2);
$totalEnergia=$totalEnergiaP1+$totalEnergiaP2+$totalEnergiaP3+$totalEnergiaP4+$totalEnergiaP5+$totalEnergiaP6;
$reactivaP1=$factura->getReactivaP1();
$reactivaP2=$factura->getReactivaP2();
$reactivaP3=$factura->getReactivaP3();
$reactivaP4=$factura->getReactivaP4();
$reactivaP5=$factura->getReactivaP5();
$reactivaP6=$factura->getReactivaP6();
$excesoReactivaP1=$reactivaP1-0.33*$consumoP1Facturado;
$excesoReactivaP2=$reactivaP2-0.33*$consumoP2Facturado;
$excesoReactivaP3=$reactivaP3-0.33*$consumoP3Facturado;
$excesoReactivaP4=$reactivaP4-0.33*$consumoP4Facturado;
$excesoReactivaP5=$reactivaP5-0.33*$consumoP5Facturado;
$excesoReactivaP6=$reactivaP6-0.33*$consumoP6Facturado;
if($excesoReactivaP1<0)
$excesoReactivaP1=0;
if($excesoReactivaP2<0)
$excesoReactivaP2=0;
if($excesoReactivaP3<0)
$excesoReactivaP3=0;
if($excesoReactivaP4<0)
$excesoReactivaP4=0;
if($excesoReactivaP5<0)
$excesoReactivaP5=0;
if($excesoReactivaP6<0)
$excesoReactivaP6=0;
$importeReactivaP1=round($excesoReactivaP1*$factura->getPrecioReactivaP1(),2);
$importeReactivaP2=round($excesoReactivaP2*$factura->getPrecioReactivaP2(),2);
$importeReactivaP3=round($excesoReactivaP3*$factura->getPrecioReactivaP3(),2);
$importeReactivaP4=round($excesoReactivaP4*$factura->getPrecioReactivaP4(),2);
$importeReactivaP5=round($excesoReactivaP5*$factura->getPrecioReactivaP5(),2);
$importeReactivaP6=round($excesoReactivaP6*$factura->getPrecioReactivaP6(),2);
$totalReactiva=$importeReactivaP1+$importeReactivaP2+$importeReactivaP3+$importeReactivaP4+$importeReactivaP5+$importeReactivaP6;
$subtotal=round($totalEnergia+$totalPotencia+$totalReactiva,2);
$importeImpuesto=round($factura->getImpuesto()*$subtotal/100,2);
$importeAlquiler=round($periodoFacturacion*$factura->getAlquilerEquipos(),2);
$otrosConceptos=0;
foreach ($factura->getConceptos() as $concepto){
$otrosConceptos+=round($concepto->getImporte(),2);
}
$importeTotal=round($subtotal+$importeAlquiler+$importeImpuesto+$otrosConceptos,2);
$importeIva=round($factura->getIva()*$importeTotal/100,2);
$totalFactura=round($importeTotal+$importeIva,2);
if( $totalFactura!==$factura->getTotalFactura() ){
$factura->setTotalFactura($totalFactura);
$entityManager->flush();
}
//throw $this->createNotFoundException('No se ha encontrado la factura');
}
//Grafica
$indiceFactura=array_search($factura, $facturas);
$arrayP=[false,false,false,false,false,false];
if($indiceFactura<12){
for($i=0;$i<=$indiceFactura && $i<12;$i++){
$consumoMedio+=$facturas[$i]->getTotalFactura();
$consumoAcumulado+=$facturas[$i]->getConsumo();
$tarifaI=$facturas[$i]->getTarifa();
$arrayPI=[
$tarifaI->getEnergiaP1(),
$tarifaI->getEnergiaP2(),
$tarifaI->getEnergiaP3(),
$tarifaI->getEnergiaP4(),
$tarifaI->getEnergiaP5(),
$tarifaI->getEnergiaP6()
];
if(!$arrayP[0])
$arrayP[0]=$arrayPI[0];
if(!$arrayP[1])
$arrayP[1]=$arrayPI[1];
if(!$arrayP[2])
$arrayP[2]=$arrayPI[2];
if(!$arrayP[3])
$arrayP[3]=$arrayPI[3];
if(!$arrayP[4])
$arrayP[4]=$arrayPI[4];
if(!$arrayP[5])
$arrayP[5]=$arrayPI[5];
/*if ( $tarifaI=='2.0A' || $tarifaI=='2.1A' ){
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
$facturas[$i]->getConsumoP1(),
0,
0
];
if ( 1>($numeroP??0) ){
$numeroP=1;
}
}elseif ( $tarifaI=='2.0DHA' || $tarifaI=='2.1DHA' ){
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
$facturas[$i]->getConsumoP1(),
0,
$facturas[$i]->getConsumoP3()
];
if ( 2>($numeroP??0) ){
$numeroP=2;
}
}else*/
switch( $tarifaI->getNombre() ){
case '3.0A': case '3.1A':
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
$facturas[$i]->getConsumoP1()+$facturas[$i]->getConsumoP4(),
$facturas[$i]->getConsumoP2()+$facturas[$i]->getConsumoP5(),
$facturas[$i]->getConsumoP3()+$facturas[$i]->getConsumoP6(),
0,
0,
0
];
break;
default:
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$i]->getFechaLectura()->getTimestamp()) )),
$facturas[$i]->getConsumoP1()??0,
$facturas[$i]->getConsumoP2()??0,
$facturas[$i]->getConsumoP3()??0,
$facturas[$i]->getConsumoP4()??0,
$facturas[$i]->getConsumoP5()??0,
$facturas[$i]->getConsumoP6()??0,
];
break;
}
}
$consumoMedio=$consumoMedio/($indiceFactura+1);
$numeroP=count( array_filter($arrayP) );
}
else{
for($i=11;$i>=0;$i--){
$n=$indiceFactura-$i;
$consumoMedio+=$facturas[$n]->getTotalFactura();
$consumoAcumulado+=$facturas[$n]->getConsumo();
$tarifaI=$facturas[$n]->getTarifa();
$arrayPI=[
$tarifaI->getEnergiaP1(),
$tarifaI->getEnergiaP2(),
$tarifaI->getEnergiaP3(),
$tarifaI->getEnergiaP4(),
$tarifaI->getEnergiaP5(),
$tarifaI->getEnergiaP6()
];
if(!$arrayP[0])
$arrayP[0]=$arrayPI[0];
if(!$arrayP[1])
$arrayP[1]=$arrayPI[1];
if(!$arrayP[2])
$arrayP[2]=$arrayPI[2];
if(!$arrayP[3])
$arrayP[3]=$arrayPI[3];
if(!$arrayP[4])
$arrayP[4]=$arrayPI[4];
if(!$arrayP[5])
$arrayP[5]=$arrayPI[5];
/*if ( $tarifaI=='2.0A' || $tarifaI=='2.1A' ){
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$n]->getFechaLectura()->getTimestamp()) )),
$facturas[$n]->getConsumoP1(),
0,
0
];
if ( 1>($numeroP??0) ){
$numeroP=1;
}
}elseif ( $tarifaI=='2.0DHA' || $tarifaI=='2.1DHA' ){
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$n]->getFechaLectura()->getTimestamp()) )),
$facturas[$n]->getConsumoP1(),
0,
$facturas[$n]->getConsumoP3()
];
if ( 2>($numeroP??0) ){
$numeroP=2;
}
}elseif( $tarifaI=='3.0A' || $tarifaI=='3.1A' ){
$datosGrafica[]=[
str_replace('.','',strtolower( strftime('%h-%y',$facturas[$n]->getFechaLectura()->getTimestamp()) )),
$facturas[$n]->getConsumoP1()+$facturas[$n]->getConsumoP4(),
$facturas[$n]->getConsumoP2()+$facturas[$n]->getConsumoP5(),
$facturas[$n]->getConsumoP3()+$facturas[$n]->getConsumoP6(),
];
}*/
}
$consumoMedio=$consumoMedio/12;;
$numeroP=count( array_filter($arrayP) );
}
$params=[
'factura' => $factura,
'entidad'=>$entidad,
'consumoMedio'=>$consumoMedio,
'consumoAcumulado'=>$consumoAcumulado,
'periodoFacturacion'=>$periodoFacturacion,
'potenciaP1Facturada'=>$potenciaP1Facturada??null,
'potenciaP2Facturada'=>$potenciaP2Facturada??null,
'potenciaP3Facturada'=>$potenciaP3Facturada??null,
'potenciaP4Facturada'=>$potenciaP4Facturada??null,
'potenciaP5Facturada'=>$potenciaP5Facturada??null,
'potenciaP6Facturada'=>$potenciaP6Facturada??null,
'totalPotenciaP1'=>$totalPotenciaP1,
'totalPotenciaP2'=>$totalPotenciaP2??null,
'totalPotenciaP3'=>$totalPotenciaP3??null,
'totalPotenciaP4'=>$totalPotenciaP4??null,
'totalPotenciaP5'=>$totalPotenciaP5??null,
'totalPotenciaP6'=>$totalPotenciaP6??null,
'totalPotencia'=>$totalPotencia,
'totalEnergiaP1'=>$totalEnergiaP1,
'totalEnergiaP2'=>$totalEnergiaP2??null,
'totalEnergiaP3'=>$totalEnergiaP3??null,
'totalEnergiaP4'=>$totalEnergiaP4??null,
'totalEnergiaP5'=>$totalEnergiaP5??null,
'totalEnergiaP6'=>$totalEnergiaP6??null,
'totalEnergia'=>$totalEnergia,
'reactivaP1'=>$reactivaP1??null,
'reactivaP2'=>$reactivaP2??null,
'reactivaP3'=>$reactivaP3??null,
'reactivaP4'=>$reactivaP4??null,
'reactivaP5'=>$reactivaP5??null,
'reactivaP6'=>$reactivaP6??null,
'excesoReactivaP1'=>$excesoReactivaP1??null,
'excesoReactivaP2'=>$excesoReactivaP2??null,
'excesoReactivaP3'=>$excesoReactivaP3??null,
'excesoReactivaP4'=>$excesoReactivaP4??null,
'excesoReactivaP5'=>$excesoReactivaP5??null,
'excesoReactivaP6'=>$excesoReactivaP6??null,
'importeReactivaP1'=>$importeReactivaP1??null,
'importeReactivaP2'=>$importeReactivaP2??null,
'importeReactivaP3'=>$importeReactivaP3??null,
'importeReactivaP4'=>$importeReactivaP4??null,
'importeReactivaP5'=>$importeReactivaP5??null,
'importeReactivaP6'=>$importeReactivaP6??null,
'totalReactiva'=>$totalReactiva??null,
'subtotal'=>$subtotal,
'importeImpuesto'=>$importeImpuesto,
'importeAlquiler'=>$importeAlquiler,
'otrosConceptos'=>$otrosConceptos??0,
'importeTotal'=>$importeTotal,
'importeIva'=>$importeIva,
'totalFactura'=>$totalFactura,
'consumoP1Facturado'=>$consumoP1Facturado??null,
'consumoP2Facturado'=>$consumoP2Facturado??null,
'consumoP3Facturado'=>$consumoP3Facturado??null,
'consumoP4Facturado'=>$consumoP4Facturado??null,
'consumoP5Facturado'=>$consumoP5Facturado??null,
'consumoP6Facturado'=>$consumoP6Facturado??null,
'arrayP'=>$arrayP??[true,false,false,false,false,false],
'numeroP'=>$numeroP??1,
'urlImagen'=>$urlImagen
];
switch ($_SERVER['APP_ENV']??'finkaluz'){
case 'finkaluz':
$html=$this->renderView('factura/finkaluz.factura.pdf.twig', $params);
break;
case 'emfra':
$html=$this->renderView('factura/emfra.factura.pdf.twig', $params);
break;
case 'onda':
$html=$this->renderView('factura/onda.factura.pdf.twig', $params);
break;
case 'digitel':
$html=$this->renderView('factura/digitel.factura.pdf.twig', $params);
break;
case 'apolo':
$html=$this->renderView('factura/apolo.factura.pdf.twig', $params);
break;
case 'e3':
$html=$this->renderView('factura/e3/factura.pdf.twig', $params);
break;
default:
$html=$this->renderView('factura/factura.pdf.twig', $params);
break;
}
}
else {
$subject = 'FACTURA GAS';
$tipo='gas';
$periodoFacturacion = date_diff($factura->getFechaLecturaAnterior(), $factura->getFechaLectura())->days;
$totalPotenciaP1 = round($factura->getPrecioPotenciaP1() * $periodoFacturacion, 2);
$totalPotencia = $totalPotenciaP1;
$totalEnergiaP1 = round($factura->getConsumoConvertidoP1() * $factura->getPrecioEnergiaP1(), 2);
$totalEnergia = $totalEnergiaP1;
$subtotal = round($totalEnergia + $totalPotencia, 2);
$importeImpuesto = round($factura->getImpuesto() * $factura->getConsumoConvertidoP1(), 2);
$importeAlquiler = round($periodoFacturacion * $factura->getAlquilerEquipos(), 2);
$otrosConceptos=0;
foreach ($factura->getConceptos() as $concepto){
$otrosConceptos+=round($concepto->getImporte(),2);
}
$importeTotal=round($subtotal+$importeAlquiler+$importeImpuesto+$otrosConceptos,2);
$importeIva = round($factura->getIva() * $importeTotal / 100, 2);
$totalFactura = round($importeTotal + $importeIva, 2);
if ($totalFactura !== $factura->getTotalFactura()) {
$factura->setTotalFactura($totalFactura);
$entityManager->flush();
}
//Grafica
if ($factura === $facturas[0]) {
$consumoMedio = $factura->getTotalFactura();
$consumoAcumulado = $factura->getConsumoConvertidoP1();
} else {
$indiceFactura = array_search($factura, $facturas);
if ($indiceFactura < 12) {
for ($i = 0; $i <= $indiceFactura && $i < 12; $i++) {
$consumoMedio += $facturas[$i]->getTotalFactura();
$consumoAcumulado += $facturas[$i]->getConsumoConvertidoP1();
}
$consumoMedio = $consumoMedio / ($indiceFactura + 1);
} else {
for ($i = 11; $i >= 0; $i--) {
$n = $indiceFactura - $i;
$consumoMedio += $facturas[$n]->getTotalFactura();
$consumoAcumulado += $factura->getConsumoConvertidoP1();
}
$consumoMedio = $consumoMedio / 12;
}
}
$params=[
'factura' => $factura,
'entidad' => $entidad,
'consumoMedio' => $consumoMedio,
'consumoAcumulado' => $consumoAcumulado,
'periodoFacturacion' => $periodoFacturacion,
'totalPotenciaP1' => $totalPotenciaP1,
'totalPotencia' => $totalPotencia,
'totalEnergiaP1' => $totalEnergiaP1,
'totalEnergia' => $totalEnergia,
'subtotal' => $subtotal,
'importeImpuesto' => $importeImpuesto,
'importeAlquiler' => $importeAlquiler,
'otrosConceptos'=>$otrosConceptos,
'importeTotal' => $importeTotal,
'importeIva' => $importeIva,
'totalFactura' => $totalFactura,
'urlImagen' => $urlImagen
];
switch ($_SERVER['APP_ENV']??'finkaluz'){
case 'finkaluz':
$html=$this->renderView('factura/finkaluz.factura.pdf.twig', $params);
break;
case 'emfra':
$html=$this->renderView('factura/emfra.factura.pdf.twig', $params);
break;
case 'onda':
$html=$this->renderView('factura/onda.factura.pdf.twig', $params);
break;
case 'digitel':
$html=$this->renderView('factura/digitel.factura.pdf.twig', $params);
break;
case 'apolo':
$html=$this->renderView('factura/apolo.factura.pdf.twig', $params);
break;
case 'e3':
$html=$this->renderView('factura/e3/factura.pdf.twig', $params);
break;
default:
$html=$this->renderView('factura/factura.pdf.twig', $params);
break;
}
}
try {
unlink(__DIR__ . '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
} catch (\Exception $exception) {
}
$pdf->generateFromHtml(
$html,
__DIR__ . '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf'
);
try {
switch ($_SERVER['APP_ENV']??'finkaluz'){
case 'finkaluz':
$body=$this->renderView('email/finkaluz.factura.html.twig',['tipo'=>$tipo]);
$from='finkaluz@finkaluz.com';
break;
case 'emfra':
$body=$this->renderView('email/emfra.factura.html.twig',['tipo'=>$tipo]);
$from='finkaluz@finkaluz.com';
break;
case 'onda':
$body=$this->renderView('email/onda.factura.html.twig',['tipo'=>$tipo]);
$from='facturacion@ondaenergia.es';
break;
case 'digitel':
$body=$this->renderView('email/digitel.factura.html.twig',['tipo'=>$tipo]);
$from='facturacionluz@itdigitel.es';
break;
case 'apolo':
$body=$this->renderView('email/apolo.factura.html.twig',['tipo'=>$tipo]);
$from='clientes@vibraenergies.es';
break;
case 'e3':
$body=$this->renderView('email/e3/factura.html.twig',['tipo'=>$tipo]);
$from='e3powerenergy@e3powerenergy.com';
break;
default:
$body=$this->renderView('email/factura.html.twig',['tipo'=>$tipo]);
$from='contacto@energaze.com';
break;
}
$message = (new Email())
->subject($subject)
->from($from)
->to($factura->getContrato()->getCliente()->getEmail())
->html($body)
->attachFromPath(__DIR__ . '/../../temp/' . ($factura->getNumeroFactura() ?? 'factura_sin_número') . '.pdf');
$mailer->send($message);
$status[]=('success');
$logger->info('sent');
} catch (\Exception $exception){
$status[]='error';
$logger->info('error');
$logger->info($exception->getMessage());
}
}
}
$response['success']=in_array('success', $status);
}
}
}
return $this->json($response??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/facturaGenerica", name="api_facturaGenerica")
*/
public function facturaGenerica(Request $request, FacturaGenericaRepository $facturaRepository,
MailerInterface $mailer, EntityManagerInterface $entityManager)
{
$this->denyAccessUnlessGranted('ROLE_FACTURACION');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('get') ){
$values=($_GET['values']??null);
$list=$request->get('list');
$response['success']=true;
if ( $list=='paged' ){
$logger->debug('entered factura paged list API');
$superadmin=$this->isGranted('ROLE_SUPERADMIN');
$qb=$facturaRepository->createQueryBuilder('f')
->leftJoin('f.contrato','c')->leftJoin('c.cliente','cl')
->leftJoin('c.suministro','s')->leftJoin('c.producto', 'p')
->leftJoin('p.tarifa','t')->leftJoin('t.tipoTarifa','tt')
->leftJoin('c.seller', 'cm');
$logger->debug('reached index');
$index=[
'index'=>null,
'cliente'=>'f.nombreCliente',
'nifCliente'=>'f.nifCliente',
'codigoCliente'=>'cl.codigoContable',
'referenciaContrato'=>'c.referenciaContrato',
'cups'=>'s.cups',
'codigoArticulo'=>'s.codigoContable',
'numero'=>'f.numeroFactura',
'fechaEmision'=>'f.fechaEmision',
//'fechaDevolucion'=>'f.fechaDevolucion',
'suministro'=>'s.direccionCompleta',
'comercial'=>'c.comercial',
'tipo'=>'tt.nombre',
'tarifa'=>"t.nombre",
'baseImponible'=>'f.totalFactura/(1+(f.iva/100))',
'iva'=>'f.iva',
'importe'=>'f.totalFactura',
'devuelta'=>'f.devuelta'
];
$indexN=array_values($index);
$qbCount = clone $qb;
try {
$totalFacturas = $qbCount->select('COUNT(t.id)')
->getQuery()
->getSingleScalarResult();
} catch (NoResultException|NonUniqueResultException $e) {
$totalFacturas=0;
}
$emisionFrom=($_GET['emisionFrom']??null);
$emisionTo=($_GET['emisionTo']??null);
$search=trim($_GET['search']['value']??null);
$searchArray=array_merge(explode(' ',$search));
$order=($_GET['order']??[0 =>['column' => '7', 'dir' => 'asc',], 1 =>['column' => '9', 'dir' => 'asc',],]);
$logger->debug('Request: '.var_export($_GET,1));
$pageSize=($_GET['length']??100);
$offset=$_GET['start']??0;
if($emisionFrom!==null){
$qb->andWhere('f.fechaEmision>= :emisionFrom')
->setParameter('emisionFrom',$emisionFrom);
}
if($emisionTo!==null){
$qb->andWhere('f.fechaEmision<= :emisionTo')
->setParameter('emisionTo',$emisionTo);
}
if ($search != null) {
$expressionA=$qb->expr()->orX(
$qb->expr()->like('UPPER('.$index['cliente'].')', '?0'),
$qb->expr()->like($index['nifCliente'], '?0'),
$qb->expr()->like($index['codigoCliente'], '?0'),
$qb->expr()->like($index['referenciaContrato'], '?0'),
$qb->expr()->like($index['cups'], '?0'),
$qb->expr()->like($index['codigoArticulo'], '?0'),
$qb->expr()->like($index['numero'], '?0'),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')", '?0'),
$qb->expr()->like('UPPER('.$index['suministro'].')', '?0'),
$qb->expr()->like('UPPER('.$index['comercial'].')', '?0'),
$qb->expr()->like('UPPER('.$index['tipo'].')', '?0'),
$qb->expr()->like('UPPER('.$index['tarifa'].')', '?0'),
$qb->expr()->like('UPPER('.$index['iva'].')', '?0'),
$qb->expr()->like('UPPER('.$index['importe'].')', '?0')
);
if( count($searchArray)>1 ){
$i=0;
$expressions=[];
foreach ($searchArray as $s){
$i++;
$expressions[]=$qb->expr()->orX(
$qb->expr()->like('UPPER('.$index['cliente'].')', '?'.$i),
$qb->expr()->like($index['nifCliente'], '?'.$i),
$qb->expr()->like($index['codigoCliente'], '?'.$i),
$qb->expr()->like($index['referenciaContrato'], '?'.$i),
$qb->expr()->like($index['cups'], '?'.$i),
$qb->expr()->like($index['codigoArticulo'], '?'.$i),
$qb->expr()->like($index['numero'], '?'.$i),
$qb->expr()->like("DATE_FORMAT(".$index['fechaEmision'].", '%d/%m/%Y')", '?'.$i),
$qb->expr()->like('UPPER('.$index['suministro'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['comercial'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['tipo'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['tarifa'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['iva'].')', '?'.$i),
$qb->expr()->like('UPPER('.$index['importe'].')', '?'.$i)
);
}
$qb->andWhere($qb->expr()->orX(
$expressionA,
$qb->expr()->andX(...$expressions)
));
$i=0;
foreach ($searchArray as $s){
$i++;
$qb->setParameter($i, "%".strtoupper($s)."%");
}
$qb->setParameter('0', "%".strtoupper($search)."%");
}else{
$qb->andWhere($expressionA)->setParameter('0', "%".strtoupper($search)."%");
}
$qbCount = clone $qb;
$result['recordsFiltered'] = $qbCount->select('COUNT(c.id)')
->getQuery()
->getSingleScalarResult();
}else{
$result['recordsFiltered']=$totalFacturas;
}
$qb->setMaxResults($pageSize)->setFirstResult($offset);
foreach ($order as $param){
$qb->addOrderBy( $indexN[$param['column']],strtoupper($param['dir']) );
}
$facturas=$qb->getQuery()->getResult();
$result['recordsTotal']=$totalFacturas;
$result['draw']=intval($_GET['draw']);
foreach ($facturas as $factura){
try {
$contrato=$factura->getContrato();
$tarifa=$contrato->getProducto()->getTarifa();
$class='';
if( $factura->getDevuelta() ){
$class='alert-warning';
}
$fechaDevolucion=$factura->getFechaDevolucion();
if( !empty($fechaDevolucion) ){
$fechaDevolucion=$fechaDevolucion->format('Y-m-d');
}
$item=[
"DT_RowId"=>"row".$factura->getId(), //Definitely not unique IDs
"DT_RowClass"=>$class,
'cliente'=>$factura->getNombreCliente(),
'numero'=>$factura->getNumeroFactura(),
'fechaEmision'=>$factura->getfechaEmision()->format('Y-m-d'),
'fechaDevolucion'=>$fechaDevolucion,
'suministro'=>$factura->getContrato()->getSuministro()->getDireccion(),
'tipo'=>$tarifa->getTipoTarifa()->getNombre(),
'tarifa'=>$tarifa->getNombre(),
'devuelta'=>$factura->getDevuelta(),
'importe'=>$factura->getTotalFactura(),
'nifCliente'=>$factura->getNifCliente(),
'referenciaContrato'=>$contrato->getReferenciaContrato(),
'cups'=>$contrato->getSuministro()->getCups(),
'baseImponible'=>( $factura->getTotalFactura()/(1+($factura->getIva()/100)) ),
'iva'=>$factura->getIva(),
'codigoCliente'=>$contrato->getCliente()->getCodigoContable(),
'codigoArticulo'=>$contrato->getSuministro()->getCodigoContable(),
'comercial'=>$contrato->getComercial()
];
if($factura->getClassName()=='Factura'){
$estadoCompra=$factura->getEstadoCompra();
$item['fechaLectura']=$factura->getFechaLectura()->format('Y-m-d');
$item['estadoCompra']=( $estadoCompra ? $estadoCompra->getNombre() : null );
$item['importeCompra']=$factura->getTotalCompra();
$item['fechaCobroCompra']=$factura->getFechaCobroCompra()? $factura->getFechaCobroCompra()->format('Y-m-d') : null;
$item['fechaEmisionCompra']=$factura->getFechaEmisionCompra()? $factura->getFechaEmisionCompra()->format('Y-m-d') : null;
$item['generica']=false;
}else{
$item['fechaLectura']='otros conceptos';
$item['generica']=true;
}
$array[]=$item;
}catch (Exception $e){
$logger->warning($e->getMessage());
ob_start();
var_dump($factura);
$result = ob_get_clean();
$logger->warning($result);
}
}
$result['data']=$array??[];
$response=$result;
}
if(in_array('devuelta', $values??[])){
try{
$factura=$facturaRepository->find( $_GET['id'] );
$response['devuelta']=$factura->getDevuelta();
}catch (Exception $exception){
$logger->alert( $exception->getMessage() );
$response['success']=false;
}
}
}
elseif( $request->isMethod('post') ){
if($_POST['action']=='update'){
$values=($_POST['values']??null);
if( array_key_exists('devuelta',$values)!==false ){
try{
$factura=$facturaRepository->find( $_POST['id'] );
if( $values['devuelta']==='true' || $values['devuelta']===true ){
$factura->setDevuelta(true);
$factura->setFechaDevolucion(date_create());
$factura->getContrato()->setFacturaDevuelta(true);
//Notificación email
try {
$message = (new Email())
->subject('FACTURA DEVUELTA')
->from('contacto@energaze.com')
->to($factura->getContrato()->getCliente()->getEmail())
->html($this->renderView('email/facturaDevuelta.html.twig',['factura'=>$factura]));
$mailer->send($message);
}catch (\Exception $exception){
$logger->info($exception->getMessage());
}
}elseif ( $values['devuelta']=='false' || $values['devuelta']===false ){
$factura->setDevuelta(false);
//Notificación email
try {
$message = (new Email())
->subject('FACTURA PAGADA')
->from('contacto@energaze.com')
->to($factura->getContrato()->getCliente()->getEmail())
->html($this->renderView('email/facturaPagada.html.twig',['factura'=>$factura]));
$mailer->send($message);
}catch (\Exception $exception){
$logger->info($exception->getMessage());
}
}else{
throw new Exception('Invalid value given. Only values taken are boolean and "true" or "false" string.');
}
$entityManager->flush();
$response['success']=true;
}catch (Exception $exception){
$logger->alert( $exception->getMessage() );
$response['success']=false;
}
}
}
}
return $this->json($response??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/impuesto", name="api_impuesto")
*/
public function impuesto(Request $request, TipoImpuestoRepository $tipoImpuestoRepository,
ImpuestoRepository $impuestoRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('post') ){
try {
$impuestos=$tipoImpuestoRepository->findAll();
foreach ($impuestos as $impuesto){
if( $impuesto->getNombre()=='SÃ' ){
$importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidad' ])->getImporte();
}
elseif ($impuesto->getNombre()=='Reducido'){
$importe=$impuestoRepository->findOneBy([ 'nombre'=>'electricidadReducido' ])->getImporte();
}else{
$importe=0;
}
$array[]=[
'id'=>$impuesto->getId(),
'nombre'=>$impuesto->getNombre(),
'importe'=>$importe
];
}
}catch (Exception $e){}
}
elseif( $request->isMethod('post') ){}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/notificacion", name="api_notificacion")
*/
public function notificacion(Request $request, NotificacionRepository $notificacionRepository,
EntityManagerInterface $entityManager)
{
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('post') ){
try {
$notificacion=$notificacionRepository->find($_POST['id']);
if( $notificacion->getUser()->getUsername()??false == $this->getUser()->getUsername() ){
$notificacion->setVista(true);
$entityManager->flush();
}
}catch (Exception $e){}
}
return $this->json($notificacion->getVista()??false);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/productos", name="api_productos")
*/
public function productos(Request $request, ProductoRepository $productoRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('post') ){
try {
$array=$productoRepository->findBy( [ 'tarifa'=>$_POST['tarifa'], 'personalizado'=>false ], ['nombre'=>'ASC'] );
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}catch (Exception $e){}
}
else{
$array=$productoRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/productoProveedor", name="api_productoProveedor")
*/
public function productoProveedor(Request $request, ProductoProveedorRepository $productoRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('get') ){
try {
$array=$productoRepository->findBy( [ 'tarifa'=>$_GET['tarifa'], 'proveedor'=>$_GET['proveedor'], 'personalizado'=>false ], ['nombre'=>'ASC'] );
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}catch (Exception $e){}
}
else{
$array=$productoRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/proveedor", name="api_proveedor")
*/
public function proveedor(Request $request, ProveedorRepository $proveedorRepository)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN');
if($request->isXmlHttpRequest()){
if( $request->isMethod('get') ){
try {
$array=$proveedorRepository->findAll();
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre()
];
}
}catch (Exception $e){}
}
else{
$array=$proveedorRepository->findAll();
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/puntuacion", name="api_tarifas")
*/
public function puntuacion(Request $request, PuntuacionRepository $puntuacionRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
if($request->isXmlHttpRequest()){
if( $request->isMethod('post') ){
try {
if( ($_POST['action']??null)=='reset' ){
if( ($_POST['target']??null)=='all' ){
}
}
}catch (Exception $e){}
}
else{
$array=null;
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/tarifas", name="api_tarifas")
*/
public function tarifas(Request $request, TarifaRepository $tarifaRepository )
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if($request->isXmlHttpRequest()){
if( $request->isMethod('POST') ){
if( ($_POST['tipo']??null)!=null ){
try {
$logger->info(($_POST['hidden']??null));
if( ($_POST['hidden']??null)==true ){
$array=$tarifaRepository->findBy( [ 'tipoTarifa'=>$_POST['tipo'] ], ['nombre'=>'ASC'] );
} else{
$array=$tarifaRepository->findBy( [ 'tipoTarifa'=>$_POST['tipo'], 'oculto'=>false ], ['nombre'=>'ASC'] );
}
foreach($array as &$item){
$item=[
'id'=>$item->getId(),
'nombre'=>$item->getNombre(),
'periodo'=>[
'potenciaP1'=>$item->getPotenciaP1(),
'potenciaP2'=>$item->getPotenciaP2(),
'potenciaP3'=>$item->getPotenciaP3(),
'potenciaP4'=>$item->getPotenciaP4(),
'potenciaP5'=>$item->getPotenciaP5(),
'potenciaP6'=>$item->getPotenciaP6(),
'energiaP1'=>$item->getEnergiaP1(),
'energiaP2'=>$item->getEnergiaP2(),
'energiaP3'=>$item->getEnergiaP3(),
'energiaP4'=>$item->getEnergiaP4(),
'energiaP5'=>$item->getEnergiaP5(),
'energiaP6'=>$item->getEnergiaP6(),
'reactivaP1'=>$item->getReactivaP1(),
'reactivaP2'=>$item->getReactivaP2(),
'reactivaP3'=>$item->getReactivaP3(),
'reactivaP4'=>$item->getReactivaP4(),
'reactivaP5'=>$item->getReactivaP5(),
'reactivaP6'=>$item->getReactivaP6(),
],
];
}
}catch (Exception $e){}
}
elseif( ($_POST['id']??null)!=null ){
try {
$tarifa=$tarifaRepository->find( $_POST['id'] );
$array=[
'id'=>$tarifa->getId(),
'nombre'=>$tarifa->getNombre(),
'periodo'=>[
'potenciaP1'=>$tarifa->getPotenciaP1(),
'potenciaP2'=>$tarifa->getPotenciaP2(),
'potenciaP3'=>$tarifa->getPotenciaP3(),
'potenciaP4'=>$tarifa->getPotenciaP4(),
'potenciaP5'=>$tarifa->getPotenciaP5(),
'potenciaP6'=>$tarifa->getPotenciaP6(),
'energiaP1'=>$tarifa->getEnergiaP1(),
'energiaP2'=>$tarifa->getEnergiaP2(),
'energiaP3'=>$tarifa->getEnergiaP3(),
'energiaP4'=>$tarifa->getEnergiaP4(),
'energiaP5'=>$tarifa->getEnergiaP5(),
'energiaP6'=>$tarifa->getEnergiaP6(),
'reactivaP1'=>$tarifa->getReactivaP1(),
'reactivaP2'=>$tarifa->getReactivaP2(),
'reactivaP3'=>$tarifa->getReactivaP3(),
'reactivaP4'=>$tarifa->getReactivaP4(),
'reactivaP5'=>$tarifa->getReactivaP5(),
'reactivaP6'=>$tarifa->getReactivaP6(),
]
];
}catch (Exception $e){}
}
elseif( ($_POST['update']??null)!=null ){
try {
$tarifaOld=$tarifaRepository->find( $_POST['update'] );
switch ( $tarifaOld->getNombre() ){
case '2.0A':case '2.1A':case '2.0DHA':case '2.1DHA':case '2.0DHS':case '2.1DHS':
$tarifa=$tarifaRepository->findOneBy( ['nombre'=>'2.0TD'] );
break;
}
$array=[
'id'=>$tarifa->getId(),
'nombre'=>$tarifa->getNombre(),
'periodo'=>[
'potenciaP1'=>$tarifa->getPotenciaP1(),
'potenciaP2'=>$tarifa->getPotenciaP2(),
'potenciaP3'=>$tarifa->getPotenciaP3(),
'potenciaP4'=>$tarifa->getPotenciaP4(),
'potenciaP5'=>$tarifa->getPotenciaP5(),
'potenciaP6'=>$tarifa->getPotenciaP6(),
'energiaP1'=>$tarifa->getEnergiaP1(),
'energiaP2'=>$tarifa->getEnergiaP2(),
'energiaP3'=>$tarifa->getEnergiaP3(),
'energiaP4'=>$tarifa->getEnergiaP4(),
'energiaP5'=>$tarifa->getEnergiaP5(),
'energiaP6'=>$tarifa->getEnergiaP6(),
'reactivaP1'=>$tarifa->getReactivaP1(),
'reactivaP2'=>$tarifa->getReactivaP2(),
'reactivaP3'=>$tarifa->getReactivaP3(),
'reactivaP4'=>$tarifa->getReactivaP4(),
'reactivaP5'=>$tarifa->getReactivaP5(),
'reactivaP6'=>$tarifa->getReactivaP6(),
]
];
}catch (Exception $e){}
}
}
else{
$array=$tarifaRepository->findAll();
foreach($array as &$item) {
$item = [
'id' => $item->getId(),
'nombre' => $item->getNombre(),
'preiodo'=>json_encode([
'potenciaP1'=>$item->getPotenciaP1(),
'potenciaP2'=>$item->getPotenciaP2(),
'potenciaP3'=>$item->getPotenciaP3(),
'potenciaP4'=>$item->getPotenciaP4(),
'potenciaP5'=>$item->getPotenciaP5(),
'potenciaP6'=>$item->getPotenciaP6(),
'energiaP1'=>$item->getEnergiaP1(),
'energiaP2'=>$item->getEnergiaP2(),
'energiaP3'=>$item->getEnergiaP3(),
'energiaP4'=>$item->getEnergiaP4(),
'energiaP5'=>$item->getEnergiaP5(),
'energiaP6'=>$item->getEnergiaP6(),
'reactivaP1'=>$item->getReactivaP1(),
'reactivaP2'=>$item->getReactivaP2(),
'reactivaP3'=>$item->getReactivaP3(),
'reactivaP4'=>$item->getReactivaP4(),
'reactivaP5'=>$item->getReactivaP5(),
'reactivaP6'=>$item->getReactivaP6(),
]),
];
}
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/impuesto", name="api_impuesto")
*/
public function tipoImpuesto(Request $request, TipoImpuestoRepository $tipoImpuestoRepository,
TipoTarifaRepository $tipoTarifaRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('get') ){
if( !empty($_GET['tipoTarifa']) ){
try {
$tipoTarifa=$tipoTarifaRepository->find($_GET['tipoTarifa']);
$tiposImpuesto=array_merge($tipoImpuestoRepository->findBy(['tipoTarifa'=>$tipoTarifa]), $tipoImpuestoRepository->findBy(['tipoTarifa'=>null]));
foreach ($tiposImpuesto as $tipoImpuesto){
$array[]=[
'id'=>$tipoImpuesto->getId(),
'nombre'=>$tipoImpuesto->getNombre()
];
}
}catch (Exception $e){}
}else{
try {
$tiposImpuesto=$tipoImpuestoRepository->findAll();
foreach ($tiposImpuesto as $tipoImpuesto){
$array[]=[
'id'=>$tipoImpuesto->getId(),
'nombre'=>$tipoImpuesto->getNombre()
];
}
}catch (Exception $e){}
}
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
/**
* @Route("/api/iva", name="api_iva")
*/
public function tipoIva(Request $request, TipoIvaRepository $tipoIvaRepository,
TipoTarifaRepository $tipoTarifaRepository)
{
$this->denyAccessUnlessGranted('ROLE_COMERCIAL');
$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler(__DIR__.'/../../logs/pruebaApi.log', Logger::DEBUG));
if( $request->isXmlHttpRequest() ){
if( $request->isMethod('get') ){
if( !empty($_GET['tipoTarifa']) ){
try {
$tipoTarifa=$tipoTarifaRepository->find($_GET['tipoTarifa']);
$tiposImpuesto=array_merge($tipoIvaRepository->findBy(['tipoTarifa'=>$tipoTarifa]), $tipoIvaRepository->findBy(['tipoTarifa'=>null]));
foreach ($tiposImpuesto as $tipoImpuesto){
$array[]=[
'id'=>$tipoImpuesto->getId(),
'nombre'=>$tipoImpuesto->getNombre()
];
}
}catch (Exception $e){}
}else{
try {
$tiposImpuesto=$tipoIvaRepository->findAll();
foreach ($tiposImpuesto as $tipoImpuesto){
$array[]=[
'id'=>$tipoImpuesto->getId(),
'nombre'=>$tipoImpuesto->getNombre()
];
}
}catch (Exception $e){}
}
}
return $this->json($array??[]);
}
else{
return $this->createNotFoundException();
}
}
}