setDBO(VoxelCareDB::getDatabase()); }//function function SetId($id) { $this->_id = (int)$id; $this->_item = null; } function store(&$data) { $table =& $this->getTable('giro'); $db =& $this->_db; $table->reset(); $id = (int)$data['id']; $table->load($id); if (!$table->bind($data)) return false; if (!$table->check()) return false; if (!$table->store(true)) return false; $this->SetId($table->id); $data['id'] = $this->_id; return true; } function storeLine(&$data) { $table =& $this->getTable('giroinvoice'); $db =& $this->_db; $table->reset(); $id = (int)$data['id']; $table->load($id); if (!$table->bind($data)) return false; if (!$table->check()) return false; if (!$table->store(true)) return false; $this->SetId($table->id); $data['id'] = $this->_id; return true; } function getNorma58(&$norma58S) { $invoices =& $this->getInvoices(); $norma58 = array(); $norma58[] = $this->_getCabeceraPresentador(); $norma58[] = $this->_getCabeceraOrdenante(); $this->_sumaImportes = 0; $this->_sumaRegistros = 0; foreach($invoices as $invoice) { $norma58[] = $this->_getRegistroIndividual($invoice); $this->_sumaImportes += $invoice->total; $this->_sumaRegistros++; } $norma58[] = $this->_getTotalOrdenante(); $norma58[] = $this->_getTotalGeneral(); $norma58S = implode('',$norma58); } function getInvoices() { $db =& $this->_db; $sql = "SELECT gl.ccc ccc, gl.dias_vencimiento dias_vencimiento, i.total total, i.reference reference, u.name username FROM #__vxc_giroinvoice gl LEFT JOIN #__vxc_invoice i ON i.id = gl.invoice LEFT JOIN #__vxc_batch b ON b.id = i.batch LEFT JOIN #__vxc_user u ON u.id = b.payment_user WHERE gl.giro = ". $this->_id; $this->_db->setQuery($sql); return $this->_db->loadObjectList(); } function getData() { if (empty($this->_item)) { $db =& $this->_db; $sql = "SELECT g.id id, g.nif_emisor nif_emisor, g.sufijo_emisor sufijo_emisor, g.fecha_emision fecha_emision, g.codigoINE codigoINE, g.ordenante ordenante, g.entidad_emisor entidad_emisor, g.oficina_emisor oficina_emisor, g.ccontrol_emisor ccontrol_emisor, g.cuenta_emisor cuenta_emisor FROM #__vxc_giro g WHERE g.id = ".$this->_id; $db->setQuery($sql); $row = $db->loadObject(); if (!$row) { $row = new stdClass(); $row->id = 0; } $this->_item = $row; } return $this->_item; } function _getCabeceraPresentador() { $giro =& $this->getData(); $codigoRegistro = 51; $codigoDato = 70; $codigoPresentador = $giro->nif_emisor; $sufijoPresentador = $giro->sufijo_emisor; $date = new JDate($giro->fecha_emision); $fechaSoporte = $date->toFormat("%d%m%y"); $nombrePresentador = strtoupper($giro->ordenante); $entidadReceptora = $giro->entidad_emisor; $oficinaReceptora = $giro->oficina_emisor; return sprintf("%02d%02d%09s%03s%06s%6s%40.40s%20s%04s%04s%66s\r\n",$codigoRegistro, $codigoDato, $codigoPresentador, $sufijoPresentador, $fechaSoporte,'', $nombrePresentador,'', $entidadReceptora, $oficinaReceptora,'' ); } function _getCabeceraOrdenante() { $giro =& $this->getData(); $codigoRegistro = 53; $codigoDato = 70; $codigoOrdenante = $giro->nif_emisor; $sufijoOrdenante = $giro->sufijo_emisor; $date = new JDate($giro->fecha_emision); $fechaSoporte = $date->toFormat("%d%m%y"); $date = new JDate($giro->fecha_emision); $fechaEmision = $date->toFormat("%d%m%y"); $nombreOrdenante = strtoupper($giro->ordenante); $entidadReceptora = $giro->entidad_emisor; $oficinaReceptora = $giro->oficina_emisor; $digitosControl = $giro->ccontrol_emisor; $numeroCuenta = $giro->cuenta_emisor; $codigoINE = $giro->codigoINE; return sprintf("%02d%02d%09s%03s%06s%06s%40.40s%04s%04s%02s%010s%8s%02s%52s%09s%3s\r\n",$codigoRegistro, $codigoDato, $codigoOrdenante, $sufijoOrdenante, $fechaSoporte, $fechaEmision, $nombreOrdenante, $entidadReceptora, $oficinaReceptora, $digitosControl, $numeroCuenta,'', '01','', $codigoINE,''); } function _getRegistroIndividual(&$invoice) { $giro =& $this->getData(); $codigoRegistro = 56; $codigoDato = 70; $codigoOrdenante = $giro->nif_emisor; $sufijoOrdenante = $giro->sufijo_emisor; $codigoReferencia = $invoice->id; $nombreTitular = strtoupper($invoice->username); $acctnumber = trim($invoice->ccc); $importe = str_replace('.','',$invoice->total); $codigoDevolucion = $invoice->id; $codigoRefInterna = $invoice->id; $concepto = 'Invoice / Factura '.$invoice->reference; $date = new JDate($giro->fecha_emision); $new_date = strtotime("+".$invoice->dias_vencimiento." day", strtotime($date->toFormat("%d-%m-%Y"))); $fechaVencimiento = date('dmy', $new_date); return sprintf("%02d%02d%09s%03s%12s%40.40s%020s%010s%6s%10s%40.40s%06s%2s\r\n",$codigoRegistro, $codigoDato, $codigoOrdenante, $sufijoOrdenante, $codigoReferencia, $nombreTitular, $acctnumber, $importe, $codigoDevolucion, $codigoRefInterna, $concepto, $fechaVencimiento, '' ); } function _getTotalOrdenante() { $giro =& $this->getData(); $codigoRegistro = 58; $codigoDato = 70; $codigoOrdenante = $giro->nif_emisor; $sufijoOrdenante = $giro->sufijo_emisor; $sumaImportes = str_replace('.','',sprintf("%0.02f",$this->_sumaImportes)); $sumaRegistros = $this->_sumaRegistros; return sprintf("%02d%02d%09s%03s%72s%010s%6s%010d%010d%38s\r\n",$codigoRegistro, $codigoDato, $codigoOrdenante, $sufijoOrdenante,'', $sumaImportes,'', $sumaRegistros, $sumaRegistros+2,''); } function _getTotalGeneral() { $giro =& $this->getData(); $codigoRegistro = 59; $codigoDato = 70; $codigoOrdenante = $giro->nif_emisor; $sufijoOrdenante = $giro->sufijo_emisor; $sumaImportes = str_replace('.','',sprintf("%0.02f",$this->_sumaImportes)); $sumaRegistros = $this->_sumaRegistros; return sprintf("%02d%02d%09s%03s%72s%010s%6s%010d%010d%38s\r\n",$codigoRegistro, $codigoDato, $codigoOrdenante, $sufijoOrdenante,'', $sumaImportes,'', $sumaRegistros, $sumaRegistros+3,''); } }// class