Exemplo n.º 1
13
 public function executeGCursos(sfWebRequest $request)
 {
     $this->setLayout('gestio');
     $this->IDS = $this->getUser()->getSessionPar('idS');
     //Netegem cerca
     if ($request->getParameter('accio') == 'C') {
         $this->CERCA = $this->getUser()->setSessionPar('cerca', array('text' => '', 'select' => CursosPeer::CURSACTIU, 'select2' => -1, 'select3' => -1));
         $this->PAGINA = $this->getUser()->setSessionPar('pagina', 1);
         $this->redirect('gestio/gCursos?accio=CA');
     }
     $this->CERCA = $this->getUser()->ParReqSesForm($request, 'cerca', array('text' => '', 'select' => CursosPeer::CURSACTIU, 'select2' => -1, 'select3' => -1));
     $this->PAGINA = $this->getUser()->ParReqSesForm($request, 'PAGINA', 1);
     $accio = $this->getUser()->ParReqSesForm($request, 'accio', 'CA');
     //Carrego les dates
     $this->FCerca = new CercaTextChoiceForm(array(), array('desplegables' => 3));
     $this->FCerca->setChoice(array(-1 => "Tots", CursosPeer::CURSACTIU => 'Actius', CursosPeer::PASSAT => 'Inactius'));
     $this->FCerca->setChoice2(array(-1 => 'Del mes...') + CursosPeer::getSelectCercaData($this->IDS));
     $this->FCerca->setChoice3(array(-1 => 'Al mes...') + CursosPeer::getSelectCercaData($this->IDS));
     $this->FCerca->bind($this->CERCA);
     //Inicialitzem variables
     $this->MODE = '';
     if ($request->isMethod('POST')) {
         if ($request->hasParameter('BCERCA')) {
             $accio = 'CA';
             $this->PAGINA = 1;
         } elseif ($request->hasParameter('BNOU')) {
             $accio = 'NC';
         } elseif ($request->hasParameter('BSAVECODICURS')) {
             $accio = 'SC';
         } elseif ($request->hasParameter('BSAVE')) {
             $accio = 'SCC';
         } elseif ($request->hasParameter('BDELETE')) {
             $accio = 'D';
         } elseif ($request->hasParameter('BGENERAACTIVITAT')) {
             $accio = 'GA';
         }
     }
     //Aquest petit bloc és per si es modifica amb un POST el que s'ha enviat per GET
     $this->getUser()->setSessionPar('accio', $accio);
     $this->getUser()->setSessionPar('PAGINA', $this->PAGINA);
     //Guardem la pàgina per si hem fet una consulta nova
     switch ($accio) {
         //Entrem un curs nou. Agafarem el codi per fer-ne un duplicat o bé un codi nou.
         case 'NC':
             $this->getUser()->setSessionPar('IDC', null);
             $OCurs = new Cursos();
             $this->FCursCodi = new CursosCodiForm($OCurs, array('IDS' => $this->IDS));
             $this->MODE = 'NOU';
             break;
             //Si el codi existeix, carrego les dades, altrament només guardo.
         //Si el codi existeix, carrego les dades, altrament només guardo.
         case 'SC':
             $RP = $request->getParameter('cursos_codi');
             $codi = $RP['CodiT'] != "" ? $RP['CodiT'] : $RP['Codi'];
             $this->OC = CursosPeer::getCopyCursByCodi($codi, $this->IDS);
             $this->FOC = new CursosForm($this->OC);
             $this->MODE = 'EDICIO_CONTINGUT';
             break;
             //Editem un curs que ja existeix.
         //Editem un curs que ja existeix.
         case 'EC':
             $this->FOC = CursosPeer::initialize($request->getParameter('IDC'), $this->IDS);
             $this->MODE = 'EDICIO_CONTINGUT';
             break;
             //Guarda el contingut del curs
         //Guarda el contingut del curs
         case 'SCC':
             $RP = $request->getParameter('cursos', 0);
             $this->FOC = CursosPeer::initialize($RP['idCursos'], $this->IDS);
             $this->FOC->bind($RP);
             if ($this->FOC->isValid()) {
                 $this->FOC->save();
                 $this->redirect('gestio/gCursos?accio=CA');
                 $this->getUser()->addLogAction($accio, 'gCursos', $OC->getIdcursos());
                 if ($this->FOC->isNew()) {
                     myUser::addLogTimeline('alta', 'cursos', $this->getUser()->getSessionPar('idU'), $this->IDS, $this->FOC->getObject()->getIdcursos());
                 } else {
                     myUser::addLogTimeline('modificació', 'cursos', $this->getUser()->getSessionPar('idU'), $this->IDS, $this->FOC->getObject()->getIdcursos());
                 }
             } else {
                 //Retornem un formulari
             }
             $this->MODE = 'EDICIO_CONTINGUT';
             break;
             //Esborra un curs
         //Esborra un curs
         case 'D':
             $RP = $request->getParameter('cursos');
             $this->FCurs = CursosPeer::initialize($RP['idCursos'], $this->IDS);
             $this->FCurs->getObject()->setActiu(false)->save();
             $this->getUser()->addLogAction($accio, 'gCursos', $this->FCurs->getObject());
             myUser::addLogTimeline('baixa', 'cursos', $this->getUser()->getSessionPar('idU'), $this->IDS, $RP['idCursos']);
             $this->redirect('gestio/gCursos?accio=CA');
             break;
         case 'CA':
             $this->CURSOS = CursosPeer::getCursos($this->CERCA['select'], $this->PAGINA, $this->CERCA['text'], $this->IDS, false, $this->CERCA['select2'] . '-01', $this->CERCA['select3'] . '-31');
             $this->MODE = 'CA';
             break;
         case 'L':
             $this->MATRICULES = CursosPeer::getMatricules($request->getParameter('IDC'), $this->IDS, true, true, true);
             $this->IDC = $request->getParameter('IDC');
             $this->MODE = 'LLISTAT_ALUMNES';
             break;
         case 'C':
             $this->getUser()->addLogAction('inside', 'gCursos');
             break;
             //Edita una activitat relacionada amb un curs. Si no en té cap l'afegeix. '
         //Edita una activitat relacionada amb un curs. Si no en té cap l'afegeix. '
         case 'GA':
             //Mirem si ja té activitat. Si la té la recupera i sinó la crea.
             $RP = $request->getParameter('cursos');
             $this->FCurs = CursosPeer::initialize($RP['idCursos'], $this->IDS);
             if ($this->FCurs->isNew()) {
                 //Si el curs és nou, vol dir que l'hem de guardar.
                 $this->FCurs->bind($RP);
                 if ($this->FCurs->isValid()) {
                     $this->FCurs->save();
                     $this->getUser()->addLogAction($accio, 'gCursos', $this->FCurs->getObject());
                 }
             }
             //Un cop guardat el curs, recupero l'activitat relacionada amb el curs
             $OA = $this->FCurs->getObject()->getActivitatVinculada();
             $this->redirect('gestio/gActivitats?accio=ACTIVITAT&IDA=' . $OA->getActivitatid());
             break;
             //Imprimeix un llistat dels alumnes del curs
         //Imprimeix un llistat dels alumnes del curs
         case 'IMPR_LLISTAT_ALUMNES_CURS':
             $IDC = $request->getParameter('IDC');
             $OC = CursosPeer::retrieveByPK($IDC);
             //Si no existeix el curs, marxem, i sinó carreguem els alumnes.
             if (!$OC instanceof Cursos) {
                 $this->redirect('gestio/gCursos?accio=CC');
             }
             $LMAT = CursosPeer::getMatricules($IDC, $OC->getSiteid(), false, false);
             //Mirem si existeix un patró per nosaltres
             $doc = new sfTinyDoc();
             $url_prop = OptionsPeer::getString('SF_WEBSYSROOT', $this->IDS) . 'documents/LlistatAlumnesCursos' . $OC->getSiteid() . '.docx';
             $url_gen = OptionsPeer::getString('SF_WEBSYSROOT', $this->IDS) . 'documents/LlistatAlumnesCursosGen.docx';
             if (file_exists($url_prop)) {
                 $doc->createFrom($url_prop);
             } else {
                 $doc->createFrom($url_gen);
             }
             //Comença la càrrega de la informació
             $alumnes = array();
             $i = 1;
             $j = 1;
             //Posem els pagats
             $alumnes[$i++]['nom'] = "---- ALUMNES PAGATS ----";
             foreach ($LMAT as $OM) {
                 if ($OM->getEstat() == MatriculesPeer::ACCEPTAT_PAGAT) {
                     $alumnes[$i++]['nom'] = ucwords(mb_strtolower($j++ . '. ' . $OM->getUsuaris()->getNomComplet(), 'UTF-8'));
                 }
             }
             //Posem els no pagats
             $alumnes[$i++]['nom'] = "---- ALUMNES NO PAGATS ----";
             foreach ($LMAT as $OM) {
                 if ($OM->getEstat() == MatriculesPeer::ACCEPTAT_NO_PAGAT) {
                     $alumnes[$i++]['nom'] = ucwords(mb_strtolower($j++ . '. ' . $OM->getUsuaris()->getNomComplet(), 'UTF-8'));
                 }
             }
             //Posem els reservats
             $alumnes[$i++]['nom'] = "---- ALUMNES RESERVATS ----";
             foreach ($LMAT as $OM) {
                 if ($OM->getEstat() == MatriculesPeer::RESERVAT) {
                     $alumnes[$i++]['nom'] = ucwords(mb_strtolower($j++ . '. ' . $OM->getUsuaris()->getNomComplet(), 'UTF-8'));
                 }
             }
             $doc->loadXml('word/document.xml');
             $doc->mergeXmlField('curs', $OC->getCodi() . ' ' . $OC->getTitolcurs());
             $doc->mergeXmlField('datallistat', date('d/m/Y', time()));
             $doc->mergeXmlBlock('lalumnes', $alumnes);
             $doc->saveXml();
             $doc->close();
             $doc->sendResponse();
             $doc->remove();
             throw new sfStopException();
             break;
         case 'EXCEL_ALL_CURSOS':
             $this->getExcelCursos();
             break;
         case 'FITXER_N19':
             $aeb19 = new AEB19Writter('.');
             //Número de compte de l'entitat que genera els rebuts.
             $cuenta = explode('-', OptionsPeer::getString('N19_CCC', $this->IDS));
             //CIF de la nostra entitat.
             $cif = OptionsPeer::getString('N19_CIF', $this->IDS);
             //Nom de la nostra entitat
             $empresa = OptionsPeer::getString('N19_NOM_EMPRESA', $this->IDS);
             //Assignem els noms del presentador
             //El codi del presentador s'ha de presentar a la dreta així que ho fem manualment.
             $aeb19->insertarCampo('codigo_presentador', str_pad($cif, 12, '0', STR_PAD_RIGHT));
             $aeb19->insertarCampo('fecha_fichero', date('dmy'));
             $aeb19->insertarCampo('nombre_presentador', $empresa);
             $aeb19->insertarCampo('entidad_receptora', $cuenta[0]);
             $aeb19->insertarCampo('oficina_presentador', $cuenta[1]);
             //La data del càrrec, que serà després de dos dies.
             $fechaCargo = date('dmy', strtotime('+2 day'));
             //Assignem els camps de l'ordenant i guardem el registre.
             $aeb19->insertarCampo('codigo_ordenante', str_pad($cif, 12, '0', STR_PAD_RIGHT));
             $aeb19->insertarCampo('fecha_cargo', $fechaCargo);
             $aeb19->insertarCampo('nombre_ordenante', $empresa);
             $aeb19->insertarCampo('cuenta_abono_ordenante', implode('', $cuenta));
             $aeb19->guardarRegistro('ordenante');
             //Establim el codi de l'ordenant pels registres obligatoris.
             $aeb19->insertarCampo('ordenante_domiciliacion', str_pad($cif, 12, '0', STR_PAD_RIGHT));
             //Carreguem els cursos actius i només tractarem els que tinguin domiciliació.
             $LOC = CursosPeer::getCursos(CursosPeer::CURSACTIU, 1, "", $this->IDS, false, null, null);
             foreach ($LOC as $OC) {
                 if ($OC->getIsentrada() == CursosPeer::TIPUS_PAGAMENT_DOMICILIACIO) {
                     foreach (CursosPeer::getMatricules($OC->getIdcursos(), $this->IDS, false, false) as $OM) {
                         $OU = $OM->getUsuaris();
                         $ODB = DadesBancariesPeer::retrieveByPK($OM->getIddadesbancaries());
                         $idFact = $OM->getIdmatricules();
                         if ($OU instanceof Usuaris && $OM instanceof Matricules && $ODB instanceof DadesBancaries) {
                             //l'IVA que aplicarem a la factura
                             $iva = 0.0;
                             $pagat = $OM->getPagat();
                             //L'Import de l'IVA
                             $importeIva = round($i * $iva, 2);
                             //Total de la factura amb IVA inclòs
                             $totalFactura = $pagat + $importeIva;
                             //Con el codigo_referencia_domiciliacion podremos referenciar la domiciliación
                             $aeb19->insertarCampo('codigo_referencia_domiciliacion', "fra-{$idFact}");
                             //Cliente al que le domiciliamos
                             $aeb19->insertarCampo('nombre_cliente_domiciliacion', $ODB->getTitular());
                             //Cuenta del cliente en la que se domiciliará la factura
                             $aeb19->insertarCampo('cuenta_adeudo_cliente', $ODB->getCcc());
                             //El importe de la domiciliación (tiene que ser en céntimos de euro y con el IVA aplicado)
                             $aeb19->insertarCampo('importe_domiciliacion', $totalFactura * 100);
                             //Código para asociar la devolución en caso de que ocurra
                             $aeb19->insertarCampo('codigo_devolucion_domiciliacion', $OM->getIdmatricules());
                             //Código interno para saber a qué corresponde la domiciliación
                             $aeb19->insertarCampo('codigo_referencia_interna', "fra-{$idFact}");
                             //Preparamos los conceptos de la domiciliación, en un array
                             //Disponemos de 80 caracteres por línea (elemento del array). Más caracteres serán cortados
                             //El índice 8 y 9 contendrían el sexto registro opcional, que es distinto a los demás
                             $conceptosDom = array();
                             //Los dos primeros índices serán el primer registro opcional
                             $conceptosDom[] = str_pad("Pagament matrícula {$idFact}", 40, ' ', STR_PAD_RIGHT) . str_pad(" del curs {$OC->getCodi()}", 40, ' ', STR_PAD_RIGHT);
                             //$conceptosDom[] = str_pad('', 40, ' ', STR_PAD_RIGHT) . str_pad("", 40, ' ', STR_PAD_RIGHT);
                             //Los dos segundos índices serán el segundo registro opcional
                             //$conceptosDom[] = str_pad( $ODB->getTitular() , 40, ' ', STR_PAD_RIGHT);
                             //$conceptosDom[] = str_pad('', 40, ' ', STR_PAD_RIGHT) . 'Base imposable:' . str_pad(number_format($pagat, 2, ',', '.') . ' EUR', 25, ' ', STR_PAD_LEFT);
                             //Los dos terceros índices serán el tercer registro opcional
                             //$conceptosDom[] = str_pad('', 40, ' ', STR_PAD_RIGHT).
                             //   'IVA ' . str_pad(number_format($iva * 100, 2, ',', '.'), 2, '0', STR_PAD_LEFT) . '%:'.
                             //   str_pad(number_format($importeIva, 2, ',', '.') . ' EUR', 29, ' ', STR_PAD_LEFT);
                             //$conceptosDom[] = str_pad('', 40, ' ', STR_PAD_RIGHT).
                             //    'Total:' . str_pad(number_format($totalFactura, 2, ',', '.') . ' EUR', 34, ' ', STR_PAD_LEFT);
                             //Añadimos la domiciliación
                             $aeb19->guardarRegistro('domiciliacion', $conceptosDom);
                         } else {
                             if (!$OU instanceof Usuaris) {
                                 $RET[$idFact][] = "Matrícula {$idFact} incorrecte. Usuari no trobat.";
                             }
                             if (!$OM instanceof Matricules) {
                                 $RET[$idFact][] = "Matrícula {$idFact} incorrecte. Matrícula no trobada.";
                             }
                             if (!$ODB instanceof DadesBancaries) {
                                 $RET[$idFact][] = "Matrícula {$idFact} incorrecte. Compte corrent no trobat.";
                             }
                         }
                     }
                 }
             }
             $nom = OptionsPeer::getString('SF_WEBSYSROOT') . 'tmp/' . $this->IDS . 'REBUTS.txt';
             fwrite(fopen($nom, 'w'), $aeb19->construirArchivo());
             $response = sfContext::getInstance()->getResponse();
             $response->setContentType('text/plain');
             $response->setHttpHeader('Content-Disposition', 'attachment; filename="Rebuts_Domiciliacio.txt');
             $response->setHttpHeader('Content-Length', filesize($nom));
             $response->setContent(file_get_contents($nom, false));
             $response->sendHttpHeaders();
             $response->sendContent();
             throw new sfStopException();
             break;
         case 'ACCIO_MULTIPLE':
             $SUBACCIO = $request->getParameter('select_accions_cursos');
             $LCURSOS = $request->getParameter('curs_sel');
             $PAR1 = $request->getParameter('par1');
             switch ($SUBACCIO) {
                 case 'excel':
                     $this->getExcelCursos($LCURSOS);
                     $this->MODE = 'CA';
                     break;
                 case 'clone':
                     foreach ($LCURSOS as $K => $idC) {
                         CursosPeer::getCopyCurs($idC);
                     }
                     $this->MODE = 'CA';
                     break;
                 case 'doInactiu':
                     foreach ($LCURSOS as $K => $idC) {
                         $OC = CursosPeer::retrieveByPK($idC);
                         if ($OC instanceof Cursos) {
                             $OC->setIsactiu(false)->save();
                         }
                     }
                     $this->MODE = 'CA';
                     break;
                 case 'doActiu':
                     foreach ($LCURSOS as $K => $idC) {
                         $OC = CursosPeer::retrieveByPK($idC);
                         if ($OC instanceof Cursos) {
                             $OC->setIsactiu(true)->save();
                         }
                     }
                     $this->MODE = 'CA';
                     break;
                 case 'doBaixa':
                     foreach ($LCURSOS as $K => $idC) {
                         $OC = CursosPeer::retrieveByPK($idC);
                         if ($OC instanceof Cursos) {
                             $OC->setInactiu();
                         }
                     }
                     $this->MODE = 'CA';
                     break;
                 case 'crearCursFromCicle':
                     $OC = CursosPeer::getCursFromCicle($PAR1);
                     $this->FOC = new CursosForm($OC);
                     $this->MODE = 'EDICIO_CONTINGUT';
                     break;
             }
             $this->CURSOS = CursosPeer::getCursos($this->CERCA['select'], $this->PAGINA, $this->CERCA['text'], $this->IDS, false, $this->CERCA['select2'] . '-01', $this->CERCA['select3'] . '-31');
             break;
     }
 }
Exemplo n.º 2
0
 public function executeBasic(sfWebRequest $request)
 {
     $doc = new sfTinyDoc();
     $doc->createFrom();
     $doc->loadXml('content.xml');
     $nbr_col = 10;
     $nbr_row = 5;
     for ($col = 1; $col <= $nbr_col; $col++) {
         $columns[$col] = 'column_' . $col;
     }
     // Creating data
     $data = array();
     for ($row = 1; $row <= $nbr_row; $row++) {
         $record = array();
         for ($col = 1; $col <= $nbr_col; $col++) {
             $record[$columns[$col]] = $row * $col * 2;
         }
         $data[$row] = $record;
     }
     $doc->mergeXmlBlock('c0,c1,c2', $columns);
     $doc->mergeXmlBlock('r', $data);
     $doc->saveXml();
     $doc->close();
     $doc->sendResponse();
     $doc->remove();
     throw new sfStopException();
 }
Exemplo n.º 3
0
 public function executeVoucher(sfWebRequest $request)
 {
     $this->form = new ReportVoucherForm();
     if ($request->getParameter('employee_id')) {
         $this->form->setDefault('employee_id', $request->getParameter('employee_id'));
     }
     if ($request->isMethod('post')) {
         $this->form->bind($request->getParameter($this->form->getName()), $request->getFiles($this->form->getName()));
         if ($this->form->isValid()) {
             $date = $this->form->getValue('date');
             $as_of_date = mktime(0, 0, 0, $date['month'], $date['day'], $date['year']);
             $c = new Criteria();
             // only chose client service types of the selected type
             $c->add(ClientServicePeer::OBJECT_TYPE, $this->form->getValue('client_service_type'));
             // make sure client and provider are not null
             $c->add(ClientServicePeer::CLIENT_ID, null, Criteria::ISNOTNULL);
             // if an employee is selected - only show vouchers for that provider
             if ($this->form->getValue('employee_id')) {
                 $c->add(ClientServicePeer::EMPLOYEE_ID, $this->form->getValue('employee_id'));
             } else {
                 $c->add(ClientServicePeer::EMPLOYEE_ID, null, Criteria::ISNOTNULL);
             }
             // check that the service was active at any point during the selected month of the selected year
             $c->add(ClientServicePeer::START_DATE, ClientServicePeer::START_DATE . ' <=\'' . $date['year'] . '-' . $date['month'] . '-31\'', Criteria::CUSTOM);
             // if they have an end date make sure it is in the selected month or later of the selected year
             $cton1 = $c->getNewCriterion(ClientServicePeer::END_DATE, ClientServicePeer::END_DATE . '>=\'' . $date['year'] . '-' . $date['month'] . '-1\'', Criteria::CUSTOM);
             $cton2 = $c->getNewCriterion(ClientServicePeer::END_DATE, null);
             $cton1->addOr($cton2);
             $c->add($cton1);
             // if they have a change date make sure it is in the selected month or later of the selected year
             $cton3 = $c->getNewCriterion(ClientServicePeer::CHANGE_DATE, ClientServicePeer::CHANGE_DATE . '>=\'' . $date['year'] . '-' . $date['month'] . '-1\'', Criteria::CUSTOM);
             $cton4 = $c->getNewCriterion(ClientServicePeer::CHANGE_DATE, null);
             $cton3->addOr($cton4);
             $c->add($cton3);
             // remove any services of irrelevant types
             $c->add(ClientServicePeer::SERVICE_ID, array_keys(sfConfig::get('app_voucher_ignore_services', 0)), Criteria::NOT_IN);
             // dont include waiting list kids
             $c->add(ClientServicePeer::WAITING_LIST, false);
             // sort by provider to group in list
             $c->addAscendingOrderByColumn(ClientServicePeer::EMPLOYEE_ID);
             // then sort by client to group them in provider list
             $c->addAscendingOrderByColumn(ClientServicePeer::CLIENT_ID);
             $this->services = ClientServicePeer::doSelectJoinAll($c);
             // create the document
             $doc = new sfTinyDoc();
             $doc->createFrom(array('basename' => $this->form->getValue('client_service_type') . 'Voucher'));
             $doc->loadXml('content.xml');
             $doc->mergeXmlField('cal_prev', $this->generateCalImage($date['day'], $date['month'] - 1, $date['year']));
             $doc->mergeXmlField('cal_next', $this->generateCalImage($date['day'], $date['month'], $date['year']));
             $doc->mergeXmlField('billing_period', date("M", $as_of_date) . ' 1 - ' . date("M", $as_of_date) . ' ' . date("t", $as_of_date));
             $doc->mergeXmlField('due_date', date("M", mktime(0, 0, 0, $date['month'] + 1, $date['day'], $date['year'])) . ' 3rd');
             $doc->mergeXmlBlock('service', $this->services);
             $doc->saveXml();
             $doc->close();
             // send and remove the document
             $doc->sendResponse();
             $doc->remove();
             throw new sfStopException();
         }
     }
 }
Exemplo n.º 4
0
 public function executeBatchAideVoucher(sfWebRequest $request)
 {
     $ids = $request->getParameter('ids');
     $this->filters = new ClientFormFilter($this->getUser()->getAttribute('client.filters', array(), 'admin_module'));
     $c = $this->filters->buildCriteria($this->getFilters(), true);
     $c->add(ClientPeer::ID, $ids, Criteria::IN);
     $c->add(ClientServicePeer::SERVICE_ID, sfConfig::get('app_service_type_aide_id'));
     // join
     $pages = ClientServicePeer::doSelectJoinAll($c);
     // create the document
     $doc = new sfTinyDoc();
     $doc->createFrom(array('basename' => 'batchAideVoucher'));
     $doc->loadXml('content.xml');
     #$doc->mergeXmlField('client', $client);
     $doc->mergeXmlBlock('service', $pages);
     $doc->saveXml();
     $doc->close();
     // send and remove the document
     $doc->sendResponse();
     $doc->remove();
     throw new sfStopException();
 }