Ejemplo n.º 1
0
 /**
  * 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);
 }
Ejemplo n.º 2
0
 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');
     }
 }
Ejemplo n.º 4
0
 /**
  * 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;
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
0
 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');
 }
Ejemplo n.º 7
0
 /**
  * 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.";
     }
 }
Ejemplo n.º 9
0
 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;
 }