/** * Devuelve un array con los recibos de clientes pendientes de cobro * y los recibos de proveedoes pendientes de pago en el periodo indicado * * @param integer $diasAtras El número de días hacia atrás de la fecha actual * @param integer $diasADelante El número de días hacia a delante de la fecha actual * @return array detalle, resumen */ static function getTesoreriaComprometido($diasAtras = 180, $diasADelante = 180) { $hoy = new Fecha(); $desde = $hoy->sumaDias(-$diasAtras); $hasta = $hoy->sumaDias($diasADelante); $filtroFecha = "Vencimiento>='{$desde}' and Vencimiento<='{$hasta}'"; $detalle = array(); $resumen = array(); $recClientes = new RecibosClientes(); $rows = $recClientes->cargaCondicion("DATE_FORMAT(Vencimiento,'%Y-%m') as Mes,sum(Importe) as Importe", "IDEstado='0' AND ({$filtroFecha}) GROUP BY DATE_FORMAT(Vencimiento,'%Y-%m')", "Vencimiento ASC"); foreach ($rows as $row) { $detalle[$row['Mes']]['cobros'] = $row['Importe']; } unset($recClientes); $recProveedores = new RecibosProveedores(); $rows = $recProveedores->cargaCondicion("DATE_FORMAT(Vencimiento,'%Y-%m') as Mes,sum(Importe) as Importe", "IDEstado='0' AND ({$filtroFecha}) GROUP BY DATE_FORMAT(Vencimiento,'%Y-%m')", "Vencimiento ASC"); foreach ($rows as $row) { $detalle[$row['Mes']]['pagos'] = $row['Importe']; } foreach ($detalle as $value) { $resumen['cobros'] += $value['cobros']; $resumen['pagos'] += $value['pagos']; } return array('detalle' => $detalle, 'resumen' => $resumen); }
public function RecibosClientes() { $nItems = 0; $nErrores = 0; $dbLink = mysql_connect("localhost", "root", "albatronic"); $query = "TRUNCATE {$this->dbDestino}.ErpRecibosClientes"; mysql_query($query); // Correspondencia entre número de factura e id de factura $query = "SELECT r.NumeroFactura as Numero, f.IDFactura as Id FROM {$this->dbOrigen}.recibos_clientes AS r LEFT JOIN {$this->dbOrigen}.femitidas_cab AS f ON r.NumeroFactura = f.NumeroFactura"; $result = mysql_query($query, $dbLink); while ($row1 = mysql_fetch_array($result, MYSQL_ASSOC)) { $correspondencia[$row1['Numero']] = $row1['Id']; } $query = "select * from {$this->dbOrigen}.recibos_clientes"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $c = new RecibosClientes(); $c->setIDRecibo($row['IDRecibo']); $c->setRecibo($row['Recibo']); $c->setIDSucursal(1); $c->setIDFactura($correspondencia[$row['NumeroFactura']]); $c->setIDCliente($row['IDCliente']); $c->setIDComercial(8); $c->setFecha($row['Fecha']); $c->setVencimiento($row['Vencimiento']); $c->setImporte($row['Importe']); $c->setIban(Utils::iban($row['CBanco'])); $c->setMandato($row['IDCliente']); $c->setFechaMandato('2013-01-01'); $c->setIDRemesa($row['IDRemesa']); $c->setCContable($row['CContable']); $c->setAsiento($row['Asiento']); $c->setConcepto($row['Concepto']); if ($row['Estado'] == 'C') { $c->setIDEstado(6); } else { $c->setIDEstado(0); } $c->setPrimaryKeyMD5(md5($row['IDRecibo'])); if (!$c->create()) { $errores[] = $c->getErrores(); $nErrores++; } else { $nItems++; } } //mysql_close($dbLink); echo "Recibos clientes creados {$nItems}<br/>"; if (count($errores)) { echo "<pre>"; print_r($errores); echo "</pre>"; } }
/** * Cambia de estado al conjunto de recibos recibidos * * Actualiza su estado, la fecha de vencimiento y la cuenta contable * Además genera apunte de caja si procede * * @return array */ public function CobrarAction() { if ($this->values['permisos']['permisosModulo']['UP']) { $formaPago = new FormasPago($this->request['idFP']); $anotarEnCaja = $formaPago->getAnotarEnCaja()->getIDTipo() == '1'; $estadoRecibo = $formaPago->getEstadoRecibo()->getIDTipo(); $cContable = $formaPago->getCContable(); $caja = new CajaArqueos(); foreach ($this->request['RecibosClientes'] as $recibo) { $objeto = new RecibosClientes($recibo['IDRecibo']); $objeto->setVencimiento($this->request['fechaCobro']); $objeto->setIDEstado($estadoRecibo); $objeto->setCContable($cContable); if ($objeto->save() and $anotarEnCaja) { $caja->anotaEnCaja($objeto, $this->request['idFP']); } if (count($objeto->getErrores) > 0) { print_r($objeto->getErrores()); } } unset($objeto); unset($formaPago); unset($caja); return $this->listAction(); } else { return array('template' => '_global/forbiden.html.twig'); } }
/** * Borrar los vencimientos de la factura * siempre y cuando no este traspasado a contabilidad (Asiento=0) * * Por lo tanto, borra los que no están traspasados; y los que si lo están * los deja. * * @return boolean */ public function borraVctos() { $recibos = new RecibosClientes(); $recibos->queryDelete("IDFactura='{$this->IDFactura}' and Asiento='0'"); $ok = count($recibos->getErrores()) == 0; unset($recibos); return $ok; }
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); }
public function ListAction() { $filtro = $this->request['filtro']; $desde = new Fecha($filtro['desdeFecha']); $hasta = new Fecha($filtro['hastaFecha']); $filtroSucursal = $filtro['idSucursal'] ? "IDSucursal='{$filtro['idSucursal']}'" : "1"; $filtroEstado = $filtro['idEstado'] != '' ? "IDEstado='{$filtro['idEstado']}'" : "1"; $filtroQuery = "(Vencimiento>='{$desde->getaaaammdd()}') and (Vencimiento<='{$hasta->getaaaammdd()}') and ({$filtroSucursal}) and ({$filtroEstado})"; // and (Iban<>0)"; $recibos = new RecibosClientes(); $rows = $recibos->cargaCondicion("IDRecibo", $filtroQuery, "Vencimiento ASC"); unset($recibos); $array = array(); foreach ($rows as $row) { $recibo = new RecibosClientes($row['IDRecibo']); $array[] = array('IDRecibo' => $recibo->getIDRecibo(), 'NumeroFactura' => $recibo->getIDFactura()->getNumeroFactura(), 'RazonSocial' => $recibo->getIDCliente()->getRazonSocial(), 'Fecha' => $recibo->getFecha(), 'Vencimiento' => $recibo->getVencimiento(), 'Importe' => $recibo->getImporte(), 'Remesa' => $recibo->getIDRemesa(), 'Iban' => $recibo->getIban(), 'Estado' => $recibo->getIDEstado()->getDescripcion()); } unset($recibo); $this->values['datos'] = $array; return array('values' => $this->values, 'template' => $this->entity . '/list.html.twig'); }
/** * Devuelve un array de objetos recibos del cliente * que están en el estado $idEstado. Por defecto todos * * La ordenación es descendente repecto a la fecha de Vencimiento * * @param integer $idEstado El estado de los recibos (opcional) * @return array Objetos recibos de la factura */ public function getRecibos($idEstado = '') { $recibos = array(); $filtro = "IDCliente='{$this->IDCliente}'"; if ($idEstado != '') { $filtro .= " AND IDEstado='{$idEstado}'"; } $recibo = new RecibosClientes(); $rows = $recibo->cargaCondicion("IDRecibo", $filtro, "Vencimiento DESC"); foreach ($rows as $row) { $recibos[] = new RecibosClientes($row['IDRecibo']); } unset($recibo); return $recibos; }
/** * 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."; } }
public function RecibosAgrupados($filtro) { //$aux = substr(self::$parametros['fechaCobro'], 0, 4) . '20' . substr(self::$parametros['fechaCobro'], -2); $fecha = new Fecha(self::$parametros['fechaCobro']); $fCargo = $fecha->getaaaammdd(); unset($fecha); $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) as Importe,r.Iban,c.RazonSocial from {$tablaRecibos} as r\n left join {$tablaClientes} as c on r.IDCliente=c.IDCliente\n where {$filtro}\n group by r.IDCliente,r.Iban,c.RazonSocial \n having sum(r.Importe)>0\n order by c.RazonSocial,r.Vencimiento ASC"; $em->query($query); $rows = $em->fetchResult(); echo $query; } unset($em); unset($clientes); 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("Facturas", 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 los recibos con el ID de la remesa $filtro = str_replace("r.", "", $filtro); $recibos->queryUpdate(array('IDRemesa' => self::$idRemesa, 'Vencimiento' => $fCargo, 'IDEstado' => self::$parametros['idEstado']), "IDCliente='{$recibo['IDCliente']}' and {$filtro}"); } }
private function ApunteDetalleCobro($nAsiento, $fecha, array $cabecera) { $filtro = "IDCliente='{$cabecera['IDCliente']}' and Vencimiento='{$cabecera['Vencimiento']}' and IDRemesa='{$cabecera['IDRemesa']}' and IDEstado='{$cabecera['IDEstado']}'"; $recibo = new RecibosClientes(); $recibos = $recibo->cargaCondicion("*", $filtro); unset($recibo); $cliente = new Clientes($cabecera['IDCliente']); foreach ($recibos as $recibo) { $recibo = new RecibosClientes($recibo['IDRecibo']); $apunte = new ContaPlusDiario($nAsiento, $fecha); $apunte->setSubCta($cliente->getCContable()); $apunte->setContra($recibo->getCContable()); $apunte->setConcepto("Cob Ftra Cliente " . $cliente->getRazonSocial()); $apunte->setDocumento($recibo->getIDFactura()->getNumeroFactura()); $apunte->setEuroHaber($recibo->getImporte()); $apuntes[] = $apunte; } unset($apunte); unset($recibo); return $apuntes; }