/** * 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); }
/** * Devuelve un array de objetos recibos del proveedor * 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 = "IDProveedor='{$this->IDProveedor}'"; if ($idEstado != '') { $filtro .= " AND IDEstado='{$idEstado}'"; } $recibo = new RecibosProveedores(); $rows = $recibo->cargaCondicion("IDRecibo", $filtro, "Vencimiento DESC"); foreach ($rows as $row) { $recibos[] = new RecibosProveedores($row['IDRecibo']); } unset($recibo); return $recibos; }
public function RecibosProveedores() { $nItems = 0; $nErrores = 0; $dbLink = mysql_connect("localhost", "root", "albatronic"); $query = "TRUNCATE {$this->dbDestino}.ErpRecibosProveedores"; 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_proveedores AS r LEFT JOIN {$this->dbOrigen}.frecibidas_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_proveedores"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $c = new RecibosProveedores(); $c->setIDRecibo($row['IDRecibo']); $c->setRecibo($row['Recibo']); $c->setIDSucursal(1); $c->setIDFactura($correspondencia[$row['NumeroFactura']]); $c->setIDProveedor($row['IDProveedor']); $c->setFecha($row['Fecha']); $c->setVencimiento($row['Vencimiento']); $c->setImporte($row['Importe']); $c->setIban(Utils::iban($row['CBanco'])); $c->setMandato($row['IDProveedor']); $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 proveedores creados {$nItems}<br/>"; if (count($errores)) { echo "<pre>"; print_r($errores); echo "</pre>"; } }
/** * 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 RecibosProveedores(); $recibos->queryDelete("IDFactura='{$this->IDFactura}' and Asiento='0'"); $ok = count($recibos->getErrores()) == 0; unset($recibos); return $ok; }
/** * Cambia de estado al conjunto de recibos recibidos * * Actualiza su estado y la fecha de vencimiento * Además genera apunte de caja si procede * * @return array */ public function PagarAction() { if ($this->values['permisos']['permisosModulo']['UP']) { $formaPago = new FormasPago($this->request['idFP']); $anotarEnCaja = $formaPago->getAnotarEnCaja()->getIDTipo() == '1'; $caja = new CajaArqueos(); foreach ($this->request['RecibosProveedores'] as $recibo) { $objeto = new RecibosProveedores($recibo['IDRecibo']); $objeto->setVencimiento($this->request['fechaPago']); $objeto->setCContable($formaPago->getCContable()); $objeto->setIDEstado($formaPago->getEstadoRecibo()->getIDTipo()); if ($objeto->save() and $anotarEnCaja) { $caja->anotaEnCaja($objeto, $this->request['idFP']); } } unset($objeto); unset($formaPago); unset($caja); return $this->listAction(); } else { return array('template' => '_global/forbiden.html.twig'); } }
private function ApunteDetallePago($nAsiento, $fecha, array $cabecera) { $filtro = "IDProveedor='{$cabecera['IDProveedor']}' and Vencimiento='{$cabecera['Vencimiento']}' and IDRemesa='{$cabecera['IDRemesa']}' and IDEstado='{$cabecera['IDEstado']}'"; $recibo = new RecibosProveedores(); $recibos = $recibo->cargaCondicion("*", $filtro); unset($recibo); $proveedor = new Proveedores($cabecera['IDProveedor']); foreach ($recibos as $recibo) { $recibo = new RecibosProveedores($recibo['IDRecibo']); $apunte = new ContaPlusDiarioV10($nAsiento, $fecha); $apunte->setSubCta($proveedor->getCContable()); $apunte->setContra($recibo->getCContable()); $apunte->setConcepto("Pag Ftra Proveedor " . $proveedor->getRazonSocial()); $apunte->setDocumento($recibo->getIDFactura()->getSuFactura()); $apunte->setEuroDebe($recibo->getImporte()); $apuntes[] = $apunte; } unset($apunte); unset($recibo); return $apuntes; }