/** * 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); }
//---------------------------------------------------------------- // 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); } } }
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; }