/** * Al finalizar un trámite, ver si es necesario emitir un comprobante. * * @param Tramite $tramite */ public function EmitirComprobante($tramite) { $Comprob = null; $ComprobanteTipo = $tramite->getTramiteTipo()->getComprobanteTipo(); if ($ComprobanteTipo) { // Tiene un tipo de comprobante asociado $Clase = $ComprobanteTipo->getClase(); if ($Clase) { // Instancio un comprobante del tipo asociado $Comprob = new $Clase(); $Comprob->setComprobanteTipo($ComprobanteTipo); $Comprob->setTramiteOrigen($tramite); $Comprob->setTitular($tramite->getTitular()); if ($ComprobanteTipo->getPeriodoValidez()) { // Este tipo de comprobante tiene un período de validez predeterminado // Fecha de vencimiento: validez indicada por el comprobante, menos 1 día $Venc = new \DateTime(); $Comprob->setFechaValidezHasta($Venc->add(new \DateInterval('P' . $ComprobanteTipo->getPeriodoValidez()))); } } } return $Comprob; }