/**
  * Envia por email la factura en formato PDF
  * @return <type>
  */
 public function enviarAction()
 {
     switch ($this->request['accion']) {
         case 'Enviar':
             $para = $this->request['Para'];
             $de = $this->request['De'];
             $deNombre = $this->request['DeNombre'];
             $conCopia = $this->request['Cc'];
             $conCopiaOculta = $this->request['Cco'];
             $asunto = $this->request['Asunto'];
             $mensaje = $this->request['Mensaje'];
             $adjuntos = array($this->request['Adjunto']);
             $envio = new Mail();
             $ok = $envio->send($para, $de, $deNombre, $conCopia, $conCopiaOculta, $asunto, $mensaje, $adjuntos);
             if ($ok) {
                 $entidad = new $this->entity($this->request['FemitidasCab']['IDFactura']);
                 $entidad->auditaEmail();
                 unset($entidad);
                 $this->values['resultadoEnvio'][] = "Envío con éxito";
             } else {
                 $this->values['resultadoEnvio'] = $envio->getMensaje();
             }
             unset($envio);
             break;
         case 'CambioFormato':
             $datos = new FemitidasCab($this->request['FemitidasCab']['IDFactura']);
             $formatos = DocumentoPdf::getFormatos($this->entity);
             $formato = $this->request['Formato'];
             if ($formato == '') {
                 $formato = 0;
             }
             $this->values['archivo'] = $this->generaPdf($this->entity, array('0' => $datos->getIDFactura()), $formato);
             $this->values['email'] = array('Para' => $this->request['Para'], 'De' => $this->request['De'], 'DeNombre' => $this->request['DeNombre'], 'Cc' => $this->request['Cc'], 'Cco' => $this->request['Cco'], 'Asunto' => $this->request['Asunto'], 'Formatos' => $formatos, 'Formato' => $formato, 'Mensaje' => $this->request['Mensaje'], 'idFactura' => $datos->getIDFactura());
             break;
         case '':
             $datos = new FemitidasCab($this->request['FemitidasCab']['IDFactura']);
             $formatos = DocumentoPdf::getFormatos($this->entity);
             $formato = $this->request['Formato'];
             if ($formato == '') {
                 $formato = 0;
             }
             $this->values['archivo'] = $this->generaPdf($this->entity, array('0' => $datos->getIDFactura()), $formato);
             $this->values['email'] = array('Para' => $datos->getIDCliente()->getEMail(), 'De' => $_SESSION['usuarioPortal']['email'], 'DeNombre' => $datos->getIDComercial()->getNombre(), 'Cco' => $_SESSION['usuarioPortal']['email'], 'Asunto' => 'Factura N. ' . $datos->getNumeroFactura(), 'Formatos' => $formatos, 'Formato' => $formato, 'Mensaje' => 'Le adjunto la factura ' . $datos->getNumeroFactura() . "\n\nUn saludo.", 'idFactura' => $datos->getIDFactura());
             break;
     }
     return parent::enviarAction();
 }
 /**
  * Proceso de facturacion.
  * Puede ser facturación separada: Una factura por cada albarán
  * o facturación agrupada: Una factura con todos los albaranes, con las siguientes salvedades:
  *
  * Se agrupan las facturas en base a la forma de pago, comercial y al flag "Facturación agrupada"
  * de la ficha del cliente.
  *
  * @return <type>
  */
 public function facturarAction()
 {
     $facturados = array();
     $filtro = $this->request['filtro'];
     $fecha = new Fecha($filtro['desdeFecha']);
     $desdeFecha = $fecha->getaaaammdd();
     $fecha = new Fecha($filtro['hastaFecha']);
     $hastaFecha = $fecha->getaaaammdd();
     unset($fecha);
     switch ($this->request['tipo']) {
         case '0':
             // Facturación individual. Se genera una factura por cada albarán
             $filter = "IDFactura='0' and IDEstado='2' and IDCliente='{$filtro['idCliente']}' and FechaEntrega>='{$desdeFecha}' and FechaEntrega<'{$hastaFecha}' and FlagFacturar='1'";
             $albaran = new AlbaranesCab();
             $rows = $albaran->cargaCondicion("IDAlbaran", $filter, "FechaEntrega ASC");
             foreach ($rows as $row) {
                 $albaran = new AlbaranesCab($row['IDAlbaran']);
                 $idFactura = $albaran->facturar(new Contadores($this->request['idContador']), $this->request['fecha']);
                 if (count($albaran->getErrores()) != 0) {
                     $this->values['errores'] = $albaran->getErrores();
                     break;
                 } else {
                     $facturados[] = $idFactura;
                 }
             }
             unset($albaran);
             break;
         case '1':
             // Agrupada. Se agrupan los albaranes por forma de pago, comercial
             $filter = "c.IDFactura='0' and c.IDEstado='2' and c.IDCliente='{$filtro['idCliente']}' and c.FechaEntrega>='{$desdeFecha}' and c.FechaEntrega<'{$hastaFecha}' and c.FlagFacturar='1'";
             //COMPRUEBO QUE NO HAYA MAS DE TRES TIPOS DE IVA ENTRE TODOS LOS ALBARANES A FACTURAR
             $albaran = new AlbaranesCab();
             $albaranTabla = $albaran->getDataBaseName() . "." . $albaran->getTableName();
             $lineas = new AlbaranesLineas();
             $lineasTabla = $lineas->getDataBaseName() . "." . $lineas->getTableName();
             $em = new EntityManager($albaran->getConectionName());
             if (!$em->getDbLink()) {
                 $this->values['errores'] = $em->getError();
                 return $this->listAction();
             }
             $query = "select l.Iva from {$lineasTabla} as l, {$albaranTabla} as c\n                        where {$filter} and c.IDAlbaran=l.IDAlbaran\n                        group by l.Iva";
             $em->query($query);
             $rows = $em->fetchResult();
             $em->desConecta();
             if (count($rows) > 3) {
                 $this->values['alertas'] = "Hay más de tres tipos de iva distintos. No se puede agrupar";
                 return $this->listAction();
             }
             $contador = new Contadores($this->request['idContador']);
             // Buscar la cuenta contable de ventas para la sucursal
             $sucursal = new Sucursales($filtro['idSucursal']);
             $ctaVentas = $sucursal->getCtaContableVentas();
             unset($sucursal);
             $cliente = new Clientes($filtro['idCliente']);
             $agruparDireccionEntrega = $cliente->getFacturacionAgrupada()->getIDTipo() == '1';
             unset($cliente);
             $query = $agruparDireccionEntrega ? "select c.IDFP,c.IDComercial, sum(c.Importe) as Importe, sum(Descuento) as Descuento from {$albaranTabla} c where {$filter} GROUP BY c.IDFP, c.IDComercial;" : "select c.IDFP,c.IDComercial, c.IDDirec, sum(c.Importe) as Importe, sum(Descuento) as Descuento from {$albaranTabla} c where {$filter} GROUP BY c.IDFP, c.IDComercial, c.IDDirec;";
             unset($cliente);
             //AGRUPO LOS ALBARANES POR FORMA DE PAGO, COMERCIAL Y (si procede) DIRECCION DE ENTREGA.
             $em = new EntityManager($albaran->getConectionName());
             $em->query($query);
             $rows = $em->fetchResult();
             $em->desConecta();
             foreach ($rows as $row) {
                 $numeroFactura = $contador->asignaContador();
                 $factura = new FemitidasCab();
                 $factura->setIDSucursal($filtro['idSucursal']);
                 $factura->setIDContador($this->request['idContador']);
                 $factura->setNumeroFactura($numeroFactura);
                 $factura->setIDAgente($_SESSION['usuarioPortal']['Id']);
                 $factura->setIDComercial($row['IDComercial']);
                 $factura->setFecha($this->request['fecha']);
                 $factura->setIDCliente($filtro['idCliente']);
                 $factura->setCuentaVentas($ctaVentas);
                 $factura->setDescuento($row['Descuento']);
                 $factura->setImporte($row['Importe']);
                 $factura->setIDFP($row['IDFP']);
                 $idFactura = $factura->create();
                 // Guardo en un array los id's de facturas generadas
                 $facturados[] = $idFactura;
                 if ($idFactura != 0) {
                     // Crear las lineas de factura
                     // No incluyo las lineas de albaran cuyas unidades sean 0
                     $em = new EntityManager($albaran->getConectionName());
                     $query = $agruparDireccionEntrega ? "select l.* from {$lineasTabla} l, {$albaranTabla} c where (c.IDAlbaran=l.IDAlbaran) and (c.IDFP='{$row['IDFP']}') and (l.Unidades<>0) and {$filter}" : "select l.* from {$lineasTabla} l, {$albaranTabla} c where (c.IDAlbaran=l.IDAlbaran) and (c.IDFP='{$row['IDFP']}') and (c.IDDirec='{$row['IDDirec']}') and (l.Unidades<>0) and {$filter}";
                     $em->query($query);
                     $lineas = $em->fetchResult();
                     $em->desConecta();
                     foreach ($lineas as $linea) {
                         $linFactura = new FemitidasLineas();
                         $linFactura->setIDFactura($idFactura);
                         $linFactura->setIDArticulo($linea['IDArticulo']);
                         $linFactura->setDescripcion($linea['Descripcion']);
                         $linFactura->setUnidades($linea['Unidades']);
                         $linFactura->setPrecio($linea['Precio']);
                         $linFactura->setDescuento($linea['Descuento']);
                         $linFactura->setImporte($linea['Importe']);
                         $linFactura->setImporteCosto($linea['ImporteCosto']);
                         $linFactura->setIDAlbaran($linea['IDAlbaran']);
                         $linFactura->setIDLineaAlbaran($linea['IDLinea']);
                         $linFactura->setIva($linea['Iva']);
                         $linFactura->setRecargo($linea['Recargo']);
                         $linFactura->setIDVenta($linea['IDVenta']);
                         $linFactura->setComisionAgente($linea['ComisionAgente']);
                         $linFactura->setComisionMontador($linea['ComisionMontador']);
                         $linFactura->setComisionar($linea['Comisionar']);
                         $linFactura->setIDAgente($_SESSION['usuarioPortal']['Id']);
                         $linFactura->setIDComercial($linea['IDComercial']);
                         $linFactura->setIDPromocion($linea['IDPromocion']);
                         $linFactura->setAltoAl($linea['AltoAl']);
                         $linFactura->setAnchoAl($linea['AnchoAl']);
                         $linFactura->setMtsAl($linea['MtsAl']);
                         $linFactura->setAltoFa($linea['AltoFa']);
                         $linFactura->setAnchoFa($linea['AnchoFa']);
                         $linFactura->setMtsFa($linea['MtsFa']);
                         if ($linFactura->create()) {
                             // Pongo el estado de la linea de albaran a "Facturado"
                             $lineaAlbaran = new AlbaranesLineas($linea['IDLinea']);
                             $lineaAlbaran->setIDEstado(3);
                             $lineaAlbaran->save();
                         } else {
                             print_r($linFactura->getErrores());
                         }
                         unset($linFactura);
                     }
                     // Totalizar la factura
                     $factura->recalcula();
                     // Crear vencimientos
                     $factura->creaVctos();
                     // Anotar en caja sin procede
                     $factura->anotaEnCaja();
                     // Actualiza las cabecera del grupo de albaranes
                     $em = new EntityManager($albaran->getConectionName());
                     $query = $agruparDireccionEntrega ? "update {$albaranTabla} c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and ({$filter})" : "update {$albaranTabla} c set c.IDFactura='{$idFactura}', c.IDEstado='3' where (c.IDFP='{$row['IDFP']}') and (c.IDDirec='{$row['IDDirec']}') and ({$filter})";
                     $em->query($query);
                     $em->desConecta();
                     unset($factura);
                 } else {
                     $this->values['errores'] = $factura->getErrores();
                 }
             }
             break;
     }
     if ($this->request['imprimir'] == 'on' and count($facturados) > 0) {
         $this->values['archivo'] = $this->generaPdf('FemitidasCab', $facturados);
     }
     if (count($facturados) > 0) {
         $this->values['alertas'][] = "Se han generado las siguientes facturas:";
         foreach ($facturados as $item) {
             $this->values['alertas'][] = $item;
         }
     }
     return $this->listAction();
 }
 public function FemitidasCab()
 {
     $nItems = 0;
     $nErrores = 0;
     $dbLink = mysql_connect("localhost", "root", "albatronic");
     $query = "TRUNCATE {$this->dbDestino}.ErpFemitidasCab";
     mysql_query($query);
     $query = "select * from {$this->dbOrigen}.femitidas_cab";
     $result = mysql_query($query, $dbLink);
     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
         $c = new FemitidasCab();
         $c->setIDFactura($row['IDFactura']);
         $c->setIDContador(2);
         $c->setNumeroFactura($row['NumeroFactura']);
         $c->setIDSucursal($row['IDSucursal']);
         $c->setIDAgente(2);
         $c->setIDComercial(2);
         $c->setFecha($row['Fecha']);
         $c->setIDCliente($row['IDCliente']);
         $c->setImporte($row['Importe']);
         $c->setDescuento($row['Descuento']);
         $c->setBaseImponible1($row['BaseImponible1']);
         $c->setIva1($row['Iva1']);
         $c->setCuotaIva1($row['CuotaIva1']);
         $c->setRecargo1($row['Recargo1']);
         $c->setCuotaRecargo1($row['CuotaRecargo1']);
         $c->setBaseImponible2($row['BaseImponible2']);
         $c->setIva2($row['Iva2']);
         $c->setCuotaIva2($row['CuotaIva2']);
         $c->setRecargo2($row['Recargo2']);
         $c->setCuotaRecargo2($row['CuotaRecargo2']);
         $c->setBaseImponible3($row['BaseImponible3']);
         $c->setIva3($row['Iva3']);
         $c->setCuotaIva3($row['CuotaIva3']);
         $c->setRecargo3($row['Recargo3']);
         $c->setCuotaRecargo3($row['CuotaRecargo3']);
         $c->setTotalBases($row['TotalBases']);
         $c->setTotalIva($row['TotalIva']);
         $c->setTotalRecargo($row['TotalRecargo']);
         $c->setTotal($row['Total']);
         $c->setCuentaVentas($row['CuentaVentas']);
         $c->setObservaciones($row['Observaciones']);
         $c->setPeso($row['Peso']);
         $c->setVolumen($row['Volumen']);
         $c->setBultos($row['Bultos']);
         $c->setExpedicion($row['Expedicion']);
         $c->setIDAgencia($row['IDAgencia']);
         $c->setIDFP($row['IDFP']);
         $c->setPrimaryKeyMD5(md5($row['IDFactura']));
         if (!$c->create()) {
             $errores[] = $c->getErrores();
             $nErrores++;
         } else {
             $nItems++;
         }
     }
     //mysql_close($dbLink);
     echo "Facturas emitidas creadas {$nItems}<br/>";
     if (count($errores)) {
         echo "<pre>";
         print_r($errores);
         echo "</pre>";
     }
 }
 /**
  * Carga facturas emitidas desde un archivo de texto externo
  * Las columnas deben venir separadas por tabuladores
  * Las facturas se cargan en la sucursal en curso
  *
  * @param string $fileName El path completo del archivo a importar
  */
 private function importarArchivo($fileName)
 {
     $archivo = new Archivo($fileName);
     if ($archivo->open("r")) {
         set_time_limit(0);
         // Lee contador
         $contador = new Contadores();
         $contador = $contador->dameContador($_SESSION['suc'], 2);
         $idContador = $contador->getIDContador();
         // Buscar la cuenta contable de ventas para la sucursal
         $sucursal = new Sucursales($_SESSION['suc']);
         $ctaVentas = $sucursal->getCtaContableVentas();
         unset($sucursal);
         while (($linea = $archivo->readLine()) !== FALSE) {
             $fecha = explode("-", $linea[2]);
             $cliente = new Clientes();
             $cliente = $cliente->find('CContable', $linea[3]);
             if ($cliente->getIDCliente() != '') {
                 // Pongo los valores a cero en caso de que no venga nada
                 for ($i = 6; $i <= 11; $i++) {
                     if ($linea[$i] == '') {
                         $linea[$i] = 0;
                     }
                 }
                 $b1 = $linea[6];
                 $i1 = $linea[7];
                 $ci1 = round($b1 * $i1 / 100, 2);
                 $r1 = $linea[8];
                 $cr1 = round($b1 * $r1 / 100, 2);
                 $b2 = $linea[9];
                 $i2 = $linea[10];
                 $ci2 = round($b2 * $i2 / 100, 2);
                 $r2 = $linea[11];
                 $cr2 = round($b2 * $r2 / 100, 2);
                 $factura = new FemitidasCab();
                 $factura->setIDContador($idContador);
                 if ($this->request['RespectarNumerosFactura'] == 'on') {
                     $numeroFactura = $contador->getSerie() . (1200000 + $linea[1]);
                 } else {
                     $numeroFactura = $contador->asignaContador();
                 }
                 $factura->setNumeroFactura($numeroFactura);
                 $factura->setIDSucursal($_SESSION['suc']);
                 $factura->setIDAgente($_SESSION['usuarioPortal']['Id']);
                 $factura->setIDComercial(1);
                 $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]);
                 $factura->setIDCliente($cliente->getIDCliente());
                 $factura->setImporte($b1 + $b2);
                 $factura->setBaseImponible1($b1);
                 $factura->setIva1($i1);
                 $factura->setCuotaIva1($ci1);
                 $factura->setRecargo1($r1);
                 $factura->setCuotaRecargo1($cr1);
                 $factura->setBaseImponible2($b2);
                 $factura->setIva2($i2);
                 $factura->setCuotaIva2($ci2);
                 $factura->setRecargo2($r2);
                 $factura->setCuotaRecargo2($cr2);
                 $factura->setTotalBases($b1 + $b2);
                 $factura->setTotalIva($ci1 + $ci2);
                 $factura->setTotalRecargo($cr1 + $cr2);
                 $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2);
                 $factura->setIDFP($this->request['IDFP']);
                 $factura->setAsiento(9999);
                 $factura->setCuentaVentas($ctaVentas);
                 if ($factura->create()) {
                     $factura->creaVctos();
                 } else {
                     $this->values['errores'] = $factura->getErrores();
                 }
             } else {
                 $this->values['errores'][] = "No existe el cliente " . $linea[3] . " " . $linea[5] . ". No se carga la factura " . $linea[1];
             }
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     unset($archivo);
 }
 /**
  * Guarda todos los recibos que le vienen en el request y
  * comprueba el cuadre entre el importe total de todos los
  * recibos de cada factura y el importe total de la factura
  *
  * @return array
  */
 public function guardarAction()
 {
     if ($this->values['permisos']['permisosModulo']['UP']) {
         $arrayFacturas = array();
         foreach ($this->request['RecibosClientes'] as $recibo) {
             $objeto = new RecibosClientes($recibo['IDRecibo']);
             $objeto->setVencimiento($recibo['Vencimiento']);
             $objeto->setImporte($recibo['Importe']);
             $objeto->setIban($recibo['Iban']);
             $objeto->setConcepto($recibo['Concepto']);
             $objeto->setIDRemesa($recibo['IDRemesa']);
             $objeto->setIDEstado($recibo['IDEstado']);
             $objeto->save();
             // Guardo temporalmente todas las facturas afectadas
             $arrayFacturas[] = $objeto->getIDFactura()->getIDFactura();
         }
         unset($objeto);
         // Comprobar cuadre recibos-factura
         $arrayFacturas = array_unique($arrayFacturas);
         foreach ($arrayFacturas as $idFactura) {
             $factura = new FemitidasCab($idFactura);
             $totalFactura = $factura->getTotal();
             $sumaRecibos = $factura->getSumaRecibos();
             if ($totalFactura != $sumaRecibos) {
                 $diferencia = $totalFactura - $sumaRecibos;
                 $this->values['errores'][] = "Descuadre en factura {$factura->getNumeroFactura()} -> Total Factura: {$totalFactura} Suma Recibos {$sumaRecibos}. Diferencia {$diferencia}";
             }
         }
         unset($factura);
         return $this->listAction();
     } else {
         return array('template' => '_global/forbiden.html.twig');
     }
 }
 /**
  * Crea los recibos de la factura en curso en base a la forma de pago.
  * Si el n. de vctos de la forma de pago es 0, no se crea ningún vencimiento.
  */
 public function creaVctos()
 {
     if ($this->Total == 0) {
         return;
     }
     $factura = new FemitidasCab($this->IDFactura);
     //SI LA FACTURA ES SIN IVA, EN CASO DE CREAR RECIBOS SE MARCARÁN
     //CON N. DE ASIENTO 999999 PARA QUE NO SE TRASPASEN A CONTABILIDAD.
     $tieneiva = $factura->getIva1() + $factura->getIva2() + $factura->getIva3() != 0;
     if ($tieneiva) {
         $asiento = 0;
     } else {
         $asiento = 999999;
     }
     $formaPago = $factura->getIDFP();
     $nvctos = $formaPago->getNumeroVctos();
     $fecha = new Fecha($factura->getFecha());
     $mes = $fecha->getmm();
     $dia = $fecha->getdd();
     $anio = $fecha->getaaaa();
     unset($fecha);
     if ($factura->getIDCliente()->getDiaDePago() > 0) {
         //SI TIENE UN DIA DE PAGO ESTABLECIDO, LOS VENCIMIENTOS SE CALCULAN
         //A PARTIR DE ESE DIA PERO DEL MES SIGUIENTE
         $mes = $mes + 1;
         if ($mes > 12) {
             $mes = 1;
             $anio = $anio + 1;
         }
         $dia = $factura->getIDCliente()->getDiaDePago();
     }
     if ($nvctos > 0) {
         $importe = ROUND($factura->getTotal() / $nvctos, 2);
         $diferencia = $factura->getTotal() - $importe * $nvctos;
         $i = 0;
         while ($i < $nvctos) {
             $i = $i + 1;
             if ($i == 1) {
                 $intervalo = $formaPago->getDiaPrimerVcto();
                 $importeRecibo = $importe + $diferencia;
             } else {
                 $intervalo = $intervalo + $formaPago->getDiasIntervalo();
                 $importeRecibo = $importe;
             }
             $numRecibo = str_pad($i, 2, "0", STR_PAD_LEFT) . str_pad($nvctos, 2, "0", STR_PAD_LEFT);
             $fVcto = date('Y-m-d', mktime(0, 0, 0, $mes, $dia + $intervalo, $anio));
             $recibo = new RecibosClientes();
             $recibo->setRecibo($numRecibo);
             $recibo->setIDSucursal($factura->getIDSucursal()->getIDSucursal());
             $recibo->setIDFactura($factura->getIDFactura());
             $recibo->setIDCliente($factura->getIDCliente()->getIDCliente());
             $recibo->setIDComercial($factura->getIDComercial()->getIDAgente());
             $recibo->setFecha($factura->getFecha());
             $recibo->setVencimiento($fVcto);
             $recibo->setImporte($importeRecibo);
             $recibo->setIban($factura->getIDCliente()->getIban());
             $recibo->setBic($factura->getIDCliente()->getBic());
             $recibo->setMandato($factura->getIDCliente()->getMandato());
             $recibo->setFechaMandato($factura->getIDCliente()->getFechaMandato());
             $recibo->setConcepto("Cobro Factura");
             $recibo->setAsiento($asiento);
             $recibo->setIDEstado($formaPago->getEstadoRecibo()->getIDTipo());
             // Si el recibo se crea cobrado, se pone la fecha de vencimiento en la remesa
             if ($formaPago->getEstadoRecibo()->getIDTipo() == '6') {
                 $recibo->setIDRemesa(str_replace("-", "", $fVcto));
             } else {
                 $recibo->setIDRemesa('');
             }
             $recibo->setRemesar(1);
             $recibo->setCContable($formaPago->getCContable());
             $recibo->create();
             unset($recibo);
         }
     }
     unset($factura);
     unset($formaPago);
 }
Exemple #7
0
//----------------------------------------------------------------
// ACTIVAR EL MOTOR DE GRAFICOS DE BARRAS
//----------------------------------------------------------------
if (is_array($config['config']['graph'])) {
    foreach ($config['config']['graph'] as $value) {
        $file = "../" . $value;
        if (file_exists($file)) {
            include_once $file;
        } else {
            die("NO SE PUEDE ENCONTRAR EL MOTOR DE GRAFICOS");
        }
    }
}
// Se define el array de datos
$datosy = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
$femitidas = new FemitidasCab();
$rows = $femitidas->cargaCondicion("DATE_FORMAT(Fecha,'%m') as mes,sum(TotalBases) as base", "IDSucursal='{$_SESSION['suc']}' GROUP BY mes", "mes ASC");
unset($femitidas);
foreach ($rows as $value) {
    $datosy[$value['mes'] - 1] = $value['base'];
}
// Creamos el grafico
$grafico = new Graph(450, 250);
$grafico->SetScale('textlin');
// Ajustamos los margenes del grafico-----    (left,right,top,bottom)
$grafico->SetMargin(40, 30, 30, 40);
// Creamos barras de datos a partir del array de datos
$bplot = new BarPlot($datosy);
// Configuramos color de las barras
$bplot->SetFillColor('#479CC9');
//Añadimos barra de datos al grafico
 /**
  * Realiza el cambio de cliente en la factura, albaranes y recibos
  */
 private function cambiarCliente()
 {
     $ok = false;
     // Cambiar factura
     $femitidas = new FemitidasCab();
     $filtro = "NumeroFactura='{$this->request['numeroFactura']}' AND IDCliente='{$this->request['idClienteAnterior']}'";
     $okFactura = $femitidas->queryUpdate(array("IDCliente" => $this->request['idClienteNuevo']), $filtro);
     $this->values['errores'] = $femitidas->getErrores();
     if ($okFactura) {
         $this->values['mensaje'][] = "Se ha cambiado " . $okFactura . " factura.";
         // Cambiar albaran/es
         $albaranes = new AlbaranesCab();
         $filtro = "IDFactura='{$this->request['idFactura']}' AND IDCliente='{$this->request['idClienteAnterior']}'";
         $nAlbaranes = $albaranes->queryUpdate(array("IDCliente" => $this->request['idClienteNuevo']), $filtro);
         $this->values['errores'] = $albaranes->getErrores();
         $this->values['mensaje'][] = "Se han cambiado " . $nAlbaranes . " albaranes.";
         // Cambiar recibos
         $recibos = new RecibosClientes();
         $filtro = "IDFactura='{$this->request['idFactura']}' AND IDCliente='{$this->request['idClienteAnterior']}'";
         $nRecibos = $recibos->queryUpdate(array("IDCliente" => $this->request['idClienteNuevo']), $filtro);
         $this->values['errores'] = $recibos->getErrores();
         $this->values['mensaje'][] = "Se han cambiado " . $nRecibos . " recibos.";
     }
 }
 /**
  * GENERA UN RECIBO BANCARIO POR CADA RECIBO DE CLIENTE    
  */
 static function RecibosIndividuales($filtro)
 {
     $fecha = new Fecha(self::$parametros['fechaCobro']);
     $fCargo = $fecha->getaaaammdd();
     unset($fecha);
     $recibos = new RecibosClientes();
     $clientes = new Clientes();
     $facturas = new FemitidasCab();
     $tablaRecibos = $recibos->getDataBaseName() . "." . $recibos->getTableName();
     $tablaClientes = $clientes->getDataBaseName() . "." . $clientes->getTableName();
     $tablaFacturas = $facturas->getDataBaseName() . "." . $facturas->getTableName();
     $em = new EntityManager($recibos->getConectionName());
     if ($em->getDbLink()) {
         $filtro .= " and (Remesar='1') and (CHAR_LENGTH(r.Iban)>23) and (r.Iban<>'ES8200000000000000000000') and (r.Importe>0)";
         $query = "select r.*,c.RazonSocial,f.NumeroFactura from {$tablaRecibos} as r\n            left join {$tablaClientes} as c on r.IDCliente=c.IDCliente\n            left join {$tablaFacturas} as f on r.IDFactura=f.IDFactura\n            where {$filtro}\n            order by c.RazonSocial,r.Vencimiento ASC";
         $em->query($query);
         //echo $query;
         $rows = $em->fetchResult();
     }
     unset($em);
     unset($clientes);
     unset($facturas);
     foreach ($rows as $recibo) {
         $codclie = self::Rellena($recibo['IDCliente'], 12);
         $titular = self::Rellena($recibo['RazonSocial'], 40);
         $importe = self::Ceros(str_replace(".", "", $recibo['Importe']), 10);
         $concepto = self::Rellena("Factura " . $recibo['NumeroFactura'] . "/" . $recibo['Recibo'], 40);
         $reg = "5680" . self::$ordenante['Cif'] . self::$ordenante['SufijoRemesas'] . $codclie . $titular . substr($recibo['Iban'], 4, strlen($recibo['Iban'])) . $importe . self::Vacio(16) . $concepto . self::Vacio(8);
         self::Escribe(self::$fp, $reg);
         self::$nRegistrosOrdenante += 1;
         self::$totalOrdenante += $recibo['Importe'];
         self::$nDomiciliacionesOrdenante += 1;
         //Marcar el recibo con el ID de la remesa y el Vencimiento con la fecha de Cargo de la Remesa
         $recibos->queryUpdate(array('IDRemesa' => self::$idRemesa, 'Vencimiento' => $fCargo, 'IDEstado' => self::$parametros['idEstado']), "IDRecibo='{$recibo['IDRecibo']}'");
     }
 }
 /**
  * Travasa las facturas emitidas
  */
 private function FacturasEmitidas($idSucursal)
 {
     $filtro = "";
     if ($idSucursal != "") {
         $filtro = "IDSucursal='{$idSucursal}' and";
     }
     $filtro = $filtro . " Fecha>='{$this->desdeFecha}' and Fecha<='{$this->hastaFecha}'";
     $factura = new FemitidasCab();
     $facturas = $factura->cargaCondicion("*", $filtro, "Fecha ASC");
     unset($factura);
     foreach ($facturas as $factura) {
         $this->nAsiento++;
         $this->nEmitidas++;
         $asiento = array();
         $cliente = new Clientes($factura['IDCliente']);
         $fecha = str_replace("-", "", $factura['Fecha']);
         // Apunte de Ventas
         $asiento[] = $this->ApunteVentas($this->nAsiento, $fecha, $factura, $cliente);
         // Apunte(s) de IVA
         $apuntes = $this->ApunteIvaEmitidas($this->nAsiento, $fecha, $factura, $cliente);
         foreach ($apuntes as $apunte) {
             $asiento[] = $apunte;
         }
         // Apunte de Cliente
         $asiento[] = $this->ApunteCliente($this->nAsiento, $fecha, $factura, $cliente);
         // Escribir en el fichero el asiento
         foreach ($asiento as $apunte) {
             fwrite($this->fpDiario, $apunte);
         }
         // Guardar la subcuenta del cliente
         if (!isset($this->arraySubcuentas[$factura['IDCliente']])) {
             $this->arraySubcuentas[$factura['IDCliente']] = $this->SubcuentaCliente($cliente);
         }
     }
 }
Exemple #11
0
 static function getTopNComerciales($n = 10, $diasAtras = 365)
 {
     $femi = new FemitidasCab();
     $tablaFacturas = $femi->getDataBaseName() . "." . $femi->getTableName();
     $idRol = $_SESSION['usuarioPortal']['IdRol'];
     if ($idRol != '0' and $idRol != '9') {
         $filtro = "(f.IDComercial='{$_SESSION['usuarioPortal']['Id']}')";
     } else {
         $filtro = "(1)";
     }
     $hoy = new Fecha();
     $desde = $hoy->sumaDias(-$diasAtras);
     $filtro .= " AND (Fecha>='{$desde}')";
     $em = new EntityManager($femi->getConectionName());
     if ($em->getDbLink()) {
         $query = "select IDComercial,sum(TotalBases) as Total \n                from {$tablaFacturas}\n                where {$filtro}\n                group by IDComercial\n                order by sum(TotalBases) DESC\n                limit 0,{$n}";
         $em->query($query);
         $rows = $em->fetchResult();
     }
     foreach ($rows as $key => $row) {
         $comercial = new Agentes($row['IDComercial']);
         $rows[$key]['Nombre'] = $comercial->getNombreApellidos();
     }
     unset($comercial);
     unset($em);
     unset($femi);
     return $rows;
 }