/** * GENERA LOS ALBARANES Y FACTURAS DE MANTENIMIENTOS * EN BASE A LOS INDICADO EN EL ARCHIVO CSV * * @param string $fileCsv */ public function mantenimientosAction($fileCsv = '') { if ($fileCsv == '') { $fileCsv = 'tmp/mantenimientos.csv'; } $archivo = new Archivo($fileCsv); $archivo->setColumnsDelimiter(";"); if ($archivo->open()) { while (($linea = $archivo->readLine()) !== FALSE) { $idSucursal = $linea[0]; $idAlmacen = $linea[1]; $idComercial = $linea[2]; $idCliente = $linea[3]; $codigoArticulo = $linea[4]; $unidades = $linea[5]; $precio = $linea[6]; $cliente = new Clientes($idCliente); $direccionesEntrega = $cliente->getDireccionesEntrega(); $direcEntrega = $direccionesEntrega[0]; $albaran = new AlbaranesCab(); $albaran->setIDCliente($cliente->getIDCliente()); $albaran->setIDSucursal($idSucursal); $albaran->setFecha(date("d-m-Y")); $albaran->setIDDirec($direcEntrega->getIDDirec()); $albaran->setIDAlmacen($idAlmacen); $albaran->setIDComercial($idComercial); $albaran->setIDContador(2); $albaran->setIDEstado(0); $albaran->setIDFP($cliente->getIDFP()->getIDFP()); $idAlbaran = $albaran->create(); if ($idAlbaran) { $articulo = new Articulos(); $articulo = $articulo->find("Codigo", $codigoArticulo); $lineas = new AlbaranesLineas(); $lineas->setIDAlbaran($idAlbaran); $lineas->setIDArticulo($articulo->getIDArticulo()); $lineas->setDescripcion($articulo->getDescripcion() . " Mes " . date("m Y")); $lineas->setUnidades($unidades); $lineas->setPrecio($precio); $lineas->setDescuento(0); $lineas->setIva($articulo->getIDIva()->getIva()); $lineas->setImporte($unidades * $precio); $ok = $lineas->create(); if ($ok) { $albaran = new AlbaranesCab($idAlbaran); $albaran->confirma(); if ($albaran->expide()) { $albaran = new AlbaranesCab($idAlbaran); $contador = new Contadores(); $contador = $contador->dameContador($idSucursal, 2); $albaran->facturar($contador); } } else { print_r($lineas->getErrores()); exit; } } else { $this->values['errores'][] = "No se ha podido crear el albarán para " . $cliente->getRazonSocial(); } } } else { $this->values['errores'][] = "El fichero de importación " . $fileCsv . " no existe"; } }
/** * Devuelve las ventas de un cliente en el periodo por firmas * * @param int $idCliente * @param int $periodo 0=todo, 1=últimos 12 meses * @return array */ static function getVentasClienteFirmas($idCliente, $periodo = 0) { $cliente = new Clientes($idCliente); $razonSocial = $cliente->getRazonSocial(); unset($cliente); $firma = new Firmas(); $firmaTabla = $firma->getDataBaseName() . "." . $firma->getTableName(); $pedidos = new PedidosCab(); $pedidosTabla = $pedidos->getDataBaseName() . "." . $pedidos->getTableName(); unset($pedidos); switch ($periodo) { case '0': $tituloPeriodo = "Todos los años"; $query = "select f.RazonSocial name, sum(p.TotalBases) y " . "from {$pedidosTabla} p, {$firmaTabla} f " . "where p.IdCliente='{$idCliente}' and f.Id=p.IdFirma " . "group by f.RazonSocial " . "order by sum(p.TotalBases) DESC"; break; case '1': $tituloPeriodo = "Últimos 12 meses"; $fecha = new Fecha(); $desdeFecha = $fecha->sumaDias(-365); unset($fecha); $query = "select f.RazonSocial name, sum(p.TotalBases) y " . "from {$pedidosTabla} p, {$firmaTabla} f " . "where p.IdCliente='{$idCliente}' and f.Id=p.IdFirma and p.Fecha>'{$desdeFecha}' " . "group by f.RazonSocial " . "order by sum(p.TotalBases) DESC"; break; default: } $em = new EntityManager($firma->getConectionName()); if ($em->getDbLink()) { $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); } unset($firma); return array('title' => "Ventas del cliente {$razonSocial} desglosadas por firmas. {$tituloPeriodo}", 'serieName' => "Ventas", 'serie' => $rows, 'query' => $query); }
static function RecibosAgrupados($filtro) { $recibos = new RecibosClientes(); $clientes = new Clientes(); $tablaRecibos = $recibos->getDataBaseName() . "." . $recibos->getTableName(); $tablaClientes = $clientes->getDataBaseName() . "." . $clientes->getTableName(); $em = new EntityManager($recibos->getConectionName()); if ($em->getDbLink()) { $filtro .= " and (Remesar='1') and (CHAR_LENGTH(r.Iban)>23) and (r.Iban<>'ES8200000000000000000000')"; $query = "select r.IDCliente," . "sum(r.Importe) importe," . "r.Iban iban, " . "r.Bic bic, " . "r.Mandato idMandato, " . "r.FechaMandato fechaMandato " . "from {$tablaRecibos} as r " . "left join {$tablaClientes} as c on r.IDCliente=c.IDCliente " . "where {$filtro} " . "group by r.IDCliente,r.Iban " . "having sum(r.Importe)>0 " . "order by c.RazonSocial,r.Vencimiento ASC"; $em->query($query); $rows = $em->fetchResult(); } unset($em); unset($recibos); unset($clientes); $total = 0; foreach ($rows as $row) { $cliente = new Clientes($row['IDCliente']); $total += $row['importe']; $recibos[] = array('numeroFactura' => 'Varias', 'importe' => $row['importe'], 'idMandato' => $row['idMandato'], 'fechaMandato' => $row['fechaMandato'], 'bic' => $row['bic'] == '' ? "BBBBESPP" : $row['bic'], 'iban' => $row['iban'], 'razonSocial' => $cliente->getRazonSocial(), 'direccion1' => $cliente->getDireccion(), 'direccion2' => $cliente->getIDPoblacion()->getMunicipio() . " " . $cliente->getCodigoPostal() . " " . $cliente->getIDProvincia()->getProvincia(), 'pais' => $cliente->getIDPais()->getCodigo(), 'texto' => "Varias Facturas"); } unset($cliente); return array('nRecibos' => count($rows), 'importeTotal' => $total, 'recibos' => $recibos); }
/** * Devuelve un array de objetos Apunte, * con los apuntes de iva y recargo de equivalencia * * @param integer $nAsiento * @param date $fecha * @param array $factura * @param Clientes $cliente * @return ContaPlusDiario */ private function ApunteIvaEmitidas($nAsiento, $fecha, array $factura, Clientes $cliente) { $apuntes = array(); $j = 0; while ($j < 3) { $j++; if ($factura['BaseImponible' . $j] != 0) { if ($factura['TotalRecargo'] != 0) { $sufijo = $this->SufijoRecargo($factura['Iva' . $j], $factura['Recargo' . $j]); } else { $sufijo = $this->SufijoIva($factura['Iva' . $j]); } $subcuenta = str_pad('477', $this->DIGCC - 4, '0') . $sufijo; $apunte = new ContaPlusDiario($nAsiento, $fecha); $apunte->setSubCta($subcuenta); $apunte->setContra($cliente->getCContable()); $apunte->setConcepto("Ntra. Factura " . $factura['NumeroFactura']); $apunte->setFactura(substr($factura['NumeroFactura'], 1, strlen($factura['NumeroFactura']) - 1)); $apunte->setSerie(substr($factura['NumeroFactura'], 0, 1)); $apunte->setIVA($factura['Iva' . $j]); $apunte->setRecequiv($factura['Recargo' . $j]); $apunte->setDocumento($factura['NumeroFactura']); $apunte->setEuroHaber($factura['CuotaIva' . $j]); $apunte->setBaseEuro($factura['BaseImponible' . $j]); $apunte->setFecha_OP($fecha); $apunte->setFecha_EX($fecha); $apunte->setTerIdNif('1'); $apunte->setTerNif($cliente->getCif()); $apunte->setTerNom($cliente->getRazonSocial()); $apunte->setTipoFac('E'); $apunte->setTipoIVA('G'); $apunte->setL340('T'); $apuntes[] = $apunte; if ($factura['CuotaRecargo' . $j] != 0) { $subcuenta = str_pad('475', $this->DIGCC - 4, '0') . $sufijo; $apunte = new ContaPlusDiario($nAsiento, $fecha); $apunte->setSubCta($subcuenta); $apunte->setContra($cliente->getCContable()); $apunte->setConcepto("Ntra. Factura " . $factura['NumeroFactura']); $apunte->setFactura(substr($factura['NumeroFactura'], 1, strlen($factura['NumeroFactura']) - 1)); $apunte->setSerie(substr($factura['NumeroFactura'], 0, 1)); $apunte->setRecequiv($factura['Recargo' . $j]); $apunte->setDocumento($factura['NumeroFactura']); $apunte->setEuroHaber($factura['CuotaRecargo' . $j]); $apunte->setBaseEuro($factura['BaseImponible' . $j]); $apunte->setFecha_OP($fecha); $apunte->setFecha_EX($fecha); $apunte->setTerIdNif('1'); $apunte->setTerNif($cliente->getCif()); $apunte->setTerNom($cliente->getRazonSocial()); $apunte->setTipoFac('E'); $apunte->setTipoIVA('G'); $apunte->setL340('T'); $apuntes[] = $apunte; } } } return $apuntes; }