public function createEstudiante(Estudiante $estudiante) { $this->em->persist($estudiante); $cuenta = $this->em->getRepository('AppBundle:Cuenta')->findOneBy(array('referenciabancaria' => $estudiante->getReferenciaBancaria())); if ($cuenta) { $this->logger->addInfo("The student is from an active account"); foreach ($cuenta->getEstudiantes() as $hermano) { $estudiante->addMyBrother($hermano); $hermano->addMyBrother($estudiante); $this->em->persist($hermano); } foreach ($cuenta->getProgenitores() as $progenitor) { $estudiante->addProgenitore($progenitor); $progenitor->addEstudiante($estudiante); $this->em->persist($progenitor); } $estudiante->setCuenta($cuenta); $this->em->persist($estudiante); } else { $this->logger->addInfo("Creating new account for the student"); $cuenta = new Cuenta(); $cuenta->setReferenciabancaria($estudiante->getReferenciaBancaria()); $this->em->persist($cuenta); $estudiante->setCuenta($cuenta); } $this->em->flush(); return $estudiante; }
public function updateOrCreateCuenta(Estudiante $estudiante) { $cuenta = $this->em->getRepository('AppBundle:Cuenta')->findOneBy(array('referenciabancaria' => $estudiante->getReferenciaBancaria())); if ($cuenta) { foreach ($cuenta->getEstudiantes() as $hermano) { $estudiante->addMyBrother($hermano); $hermano->addMyBrother($estudiante); $this->em->persist($hermano); } foreach ($cuenta->getProgenitores() as $progenitor) { $estudiante->addProgenitore($progenitor); $progenitor->addEstudiante($estudiante); $this->em->persist($progenitor); } $estudiante->setCuenta($cuenta); $this->em->persist($estudiante); } else { $this->logger->addDebug(sprintf('Account not exists. Creating with reference: %s', $estudiante->getReferenciaBancaria())); $cuenta = new Cuenta(); $cuenta->setReferenciabancaria($estudiante->getReferenciaBancaria()); $this->em->persist($cuenta); $estudiante->setCuenta($cuenta); } $this->em->persist($estudiante); $this->em->flush(); }
public function load(ObjectManager $manager) { $sql = 'select id, referenciabancaria, debe, pago, diferencia from cuenta'; $username = DataFixturesConstants::DBUSER; $password = DataFixturesConstants::DBPASS; $database = DataFixturesConstants::DBSCHEMA; return; $conn = new \PDO(sprintf('mysql:host=localhost;dbname=%s', $database), $username, $password, array(\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")); $stmt = $conn->prepare($sql); $stmt->execute(); $metadata = $manager->getClassMetaData(get_class(new Cuenta())); $metadata->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE); while ($row = $stmt->fetch()) { // Adding cuenta. $cuenta = new Cuenta(); $cuenta->setId($row['id']); //$cuenta->setDebe($row['debe']); $cuenta->setDebe(0); //$cuenta->setDiferencia($row['diferencia']); //$cuenta->setPago($row['pago']); $cuenta->setPago(0); $cuenta->setReferenciabancaria($row['referenciabancaria']); $estudiantes = $manager->getRepository('AppBundle:Estudiante')->findBy(array('referenciaBancaria' => $row['referenciabancaria'])); $manager->persist($cuenta); $brotherParents = true; foreach ($estudiantes as $estudiante) { $estudiante->setCuenta($cuenta); if ($brotherParents) { foreach ($estudiante->getProgenitores() as $progenitor) { $progenitor->setCuenta($cuenta); $manager->persist($progenitor); } } $brotherParents = false; $manager->persist($estudiante); } } $manager->flush(); }
public function exportAccountToPdf(Cuenta $account, $location = null, $returnBuffer = false) { $alumnos = ''; foreach ($account->getEstudiantes() as $estudiante) { $alumnos .= $estudiante->getNombre() . ','; } if (strlen($alumnos) > 0) { $alumnos = rtrim($alumnos, ','); } $padres = ''; foreach ($account->getProgenitores() as $progenitor) { $padres .= $progenitor->getNombre() . ' ' . ','; } if (strlen($padres) > 0) { $padres = rtrim($padres, ','); } $pdf = new Invoice(20, 'P', 'mm', 'A4'); $facturas = $this->em->getRepository('AppBundle:FacturaFinal')->retrieveUnpaidFacturasOfAccount($account->getId()); $cantidadFacturasDetalles = 0; $facturasDetailList = array(); $quantity = count($facturas); $meses = array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'); $montoAdeudado = $account->getDiferencia(); $lineDeuda = null; $montoFacturaMes = 0; foreach ($facturas as $factura) { if ($factura->getYear() == date('Y') && $factura->getMonth() == date('m')) { foreach ($factura->getFacturaFinalDetalles() as $facturaDetalle) { if ($quantity > 1) { $description = sprintf('%s (%s %s)', $facturaDetalle->getDescription(), $meses[$factura->getMonth() - 1], $factura->getYear()); $facturaDetalle->setDescription($description); } $facturasDetailList[$cantidadFacturasDetalles] = $facturaDetalle; ++$cantidadFacturasDetalles; } if ($quantity > 1) { $facturasDetailList[$cantidadFacturasDetalles] = new FacturaFinalDetalle(); ++$cantidadFacturasDetalles; } $montoFacturaMes = (double) $factura->getTotal() - (double) $factura->getPagadodeltotal(); } } if ($montoFacturaMes < $account->getDiferencia()) { $montoAdeudado = (double) $montoAdeudado - $montoFacturaMes; $precion = number_format(1 * (int) $montoAdeudado, 0, ',', '.'); $texto = sprintf('Monto adeudado al %s', date('m-Y')); $lineDeuda = array('Item' => 1, 'Descripción' => $texto, 'Precio' => '$' . $precion); } $maxPerPage = 30; $cantidadPaginas = $cantidadFacturasDetalles / $maxPerPage; $showPages = true; if ($cantidadPaginas < 1) { $showPages = false; } if ($cantidadFacturasDetalles > 0) { $cantidadFacturasDetalles = 0; } $pagina = 1; $paymentQuantity = 0; while ($cantidadPaginas >= 0 && $cantidadFacturasDetalles <= count($facturasDetailList)) { $pdf->AddPage(); if ($showPages) { $pdf->addPageNumber($pagina); } $pdf->addSociete($this->webDirectory . 'bundles/app/img/logo.png'); $pdf->temporaire("Bunny's Kinder"); $pdf->addDate(date('d/m/Y')); $pdf->addClient($account->getReferenciabancaria()); $pdf->addAlumnos($alumnos); $pdf->addPadres($padres); $colsNumbers = array('Item' => 30, 'Descripción' => 130, 'Precio' => 30); $pdf->addCols($colsNumbers); $cols = array('Item' => 'C', 'Descripción' => 'C', 'Precio' => 'C'); $pdf->addLineFormat($cols); $y = 70; $size = 0; $counterItems = 1; if ($lineDeuda !== null) { $size = $pdf->addLine($y, $lineDeuda); $y += $size + 2; ++$counterItems; } while ($cantidadFacturasDetalles <= $maxPerPage * $pagina && $cantidadFacturasDetalles < count($facturasDetailList)) { $facturaDetalle = $facturasDetailList[$cantidadFacturasDetalles]; if ($facturaDetalle->getAmount() > 0 || $facturaDetalle->getAmount() < 0) { $precioShow = '$0'; if ($facturaDetalle->getAmount() > 0) { $precioShow = '$' . $facturaDetalle->getFormatedAmount(); } else { $precioShow = '- $' . number_format(-1 * (int) $facturaDetalle->getAmount(), 0, ',', '.'); } $line = array('Item' => $counterItems, 'Descripción' => $facturaDetalle->getDescription(), 'Precio' => $precioShow); $paymentQuantity = $paymentQuantity + $facturaDetalle->getAmount(); ++$counterItems; } else { $line = array('Item' => '', 'Descripción' => '', 'Precio' => ''); } $size = $pdf->addLine($y, $line); $y += $size + 2; ++$cantidadFacturasDetalles; } ++$pagina; --$cantidadPaginas; } if ($account->getDiferencia() - $paymentQuantity < 0) { $cobro = $this->em->getRepository('AppBundle:Cobro')->retrieveLastFromAccount($account->getId()); $precion = number_format(-1 * (int) ($account->getDiferencia() - $paymentQuantity), 0, ',', '.'); $fechaAux = explode('-', $cobro->getFecha()); $texto = sprintf('Monto pagado (%s-%s-%s)', $fechaAux[2], $fechaAux[1], $fechaAux[0]); $line = array('Item' => $counterItems, 'Descripción' => $texto, 'Precio' => '- $' . $precion); $size = $pdf->addLine($y, $line); $y += $size + 2; } $pdf->addCadreEurosFrancs('$ ' . $account->getFormatedDiferencia()); $outputOption = 'I'; if ($returnBuffer) { $outputOption = 'S'; } else { if ($location !== null) { if (!is_dir($location)) { $location = sys_get_temp_dir(); } $outputOption = 'F'; $location .= DIRECTORY_SEPARATOR; } else { $location = ''; } } $outputName = sprintf('Cuenta-%s-%s.pdf', $account->getReferenciabancaria(), date('m-Y')); $returnPdf = $pdf->Output($location . $outputName, $outputOption); if ($outputOption == 'F') { return $location . $outputName; } if ($outputOption == 'S') { return array('name' => $outputName, 'buffer' => $returnPdf); } }