public function indexAction() { $formaPago = new FormasPago(); $this->values['formasPago'] = $formaPago->fetchAll('Descripcion', false); unset($formaPago); return array('template' => $this->entity . '/index.html.twig', 'values' => $this->values); }
public function __construct($request) { parent::__construct($request); $formaPago = new FormasPago(); $formasPago = $formaPago->fetchAll("Descripcion"); $formasPago[] = array('Id' => '0', 'Value' => '*** TODAS LAS FORMAS DE PAGO ****'); unset($formaPago); $this->values['formasPago'] = $formasPago; }
public function ImportarAction() { $fileName = "docs/docs{$_SESSION['emp']}/tmp/formasPago.csv"; $archivo = new Archivo($fileName); $archivo->setColumnsDelimiter(";"); //$archivo->setColumnsEnclosure('"'); if ($archivo->open("r")) { set_time_limit(0); while (($linea = $archivo->readLine()) !== FALSE) { $fp = new FormasPago(); $fp->setDescripcion(utf8_encode($linea[1])); $fp->setObservations($linea[0]); $fp->setNumeroVctos(1); $fp->setAnotarEnCaja(0); $id = $fp->create(); if (!$id) { $nErrores += 1; print_r($fp->getErrores()); } else { $nAciertos += 1; } unset($fp); } $archivo->close(); } else { $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe"; } echo "Aciertos: {$nAciertos}, Errores: {$nErrores}"; unset($archivo); }
private function procesoCompra(FormaPagoForm $modelPago, $tipoEntrega) { $categoriasCompra = array(); $productosCompra = array(); $transaction = Yii::app()->db->beginTransaction(); try { //registrar compra compra $objCompra = new Compras(); $objCompra->identificacionUsuario = $modelPago->identificacionUsuario; $objCompra->tipoEntrega = $tipoEntrega; //if($tipoEntrega==Yii::app()->params->entrega['tipo']['domicilio']){ $objCompra->fechaEntrega = $modelPago->fechaEntrega; $objCompra->observacion = $modelPago->comentario; //} if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) { $puntoVenta = $modelPago->listPuntosVenta[1][$modelPago->indicePuntoVenta]; $objCompra->idComercial = $puntoVenta[1]; } if ($modelPago->idFormaPago == Yii::app()->params->formaPago['pasarela']['idPasarela']) { $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendientePasarela']; } else { $objCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendiente']; } $objCompra->idTipoVenta = 1; $objCompra->activa = 1; $objCompra->invitado = $modelPago->pagoInvitado ? 1 : 0; $objCompra->codigoPerfil = Yii::app()->shoppingCart->getCodigoPerfil(); $objCompra->codigoCiudad = Yii::app()->shoppingCart->getCodigoCiudad(); $objCompra->codigoSector = Yii::app()->shoppingCart->getCodigoSector(); if ($tipoEntrega == Yii::app()->params->entrega['tipo']['domicilio']) { $objCompra->tiempoDomicilioCedi = Yii::app()->shoppingCart->getDeliveryStored(); $objCompra->valorDomicilioCedi = Yii::app()->shoppingCart->getShippingStored(); $objCompra->codigoCedi = Yii::app()->shoppingCart->objSectorCiudad->objCiudad->codigoSucursal; } else { if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) { $objCompra->tiempoDomicilioCedi = 0; $objCompra->valorDomicilioCedi = 0; $objCompra->codigoCedi = 0; } } $objCompra->subtotalCompra = Yii::app()->shoppingCart->getCost(); $objCompra->impuestosCompra = Yii::app()->shoppingCart->getTaxPrice(); $objCompra->baseImpuestosCompra = Yii::app()->shoppingCart->getBaseTaxPrice(); $objCompra->domicilio = Yii::app()->shoppingCart->getShipping(); $objCompra->flete = Yii::app()->shoppingCart->getExtraShipping(); $objCompra->totalCompra = Yii::app()->shoppingCart->getTotalCost(); if (!$objCompra->save()) { throw new Exception("Error al guardar compra" . $objCompra->validateErrorsResponse()); } if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) { $puntoVenta = $modelPago->listPuntosVenta[1][$modelPago->indicePuntoVenta]; $objEstadoCompra = new ComprasEstados(); $objEstadoCompra->idCompra = $objCompra->idCompra; $objEstadoCompra->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['asignado']; $objEstadoCompra->idOperador = 38; if (!$objEstadoCompra->save()) { throw new Exception("Error al guardar traza de estado: " . $objEstadoCompra->validateErrorsResponse()); } $objObservacion = new ComprasObservaciones(); $objObservacion->idCompra = $objCompra->idCompra; $objObservacion->observacion = "Cambio de Estado: Asignado PDV. " . $puntoVenta[2]; $objObservacion->idOperador = 38; $objObservacion->notificarCliente = 0; if (!$objObservacion->save()) { throw new Exception("Error al guardar observación" . $objObservacion->validateErrorsResponse()); } $objEstadoCompra2 = new ComprasEstados(); $objEstadoCompra2->idCompra = $objCompra->idCompra; $objEstadoCompra2->idEstadoCompra = Yii::app()->params->callcenter['estadoCompra']['estado']['pendiente']; $objEstadoCompra2->idOperador = 38; if (!$objEstadoCompra2->save()) { throw new Exception("Error al guardar traza de estado: " . $objEstadoCompra2->validateErrorsResponse()); } $objObservacion2 = new ComprasObservaciones(); $objObservacion2->idCompra = $objCompra->idCompra; $objObservacion2->observacion = "Cambio de Estado: Pendiente de entrega a cliente en PDV. " . $puntoVenta[2]; $objObservacion2->idOperador = 38; $objObservacion2->notificarCliente = 0; if (!$objObservacion2->save()) { throw new Exception("Error al guardar observación" . $objObservacion2->validateErrorsResponse()); } } if ($modelPago->bono !== null && $modelPago->usoBono == 1) { Yii::app()->shoppingCart->setBono($modelPago->bono['valor']); } $objFormasPago = new FormasPago(); //FormaPago::model()->findByPk($modelPago->idFormaPago); $objFormasPago->idCompra = $objCompra->idCompra; $objFormasPago->valor = Yii::app()->shoppingCart->getTotalCost(); $objFormasPago->numeroTarjeta = $modelPago->numeroTarjeta; $objFormasPago->cuotasTarjeta = $modelPago->cuotasTarjeta; $objFormasPago->idFormaPago = $modelPago->idFormaPago; $objFormasPago->valorBono = Yii::app()->shoppingCart->getBono(); /* if ($modelPago->bono !== null && $modelPago->usoBono == 1) { $objFormasPago->valorBono = $modelPago->bono['valor']; } */ /*if($objFormasPago->valorBono>0){ try{ $clientBono = new SoapClient(null, array( 'location' => Yii::app()->params->webServiceUrl['crmLrv'], 'uri' => "", 'trace' => 1 )); $resultBono = $clientBono->__soapCall("ActualizarBono", array('identificacion' => $objCompra->identificacionUsuario)); if (empty($resultBono) || $resultBono[0]->ESTADO == 0) { throw new Exception("Error al actualizar bono"); } }catch(SoapFault $soapExc){ throw new Exception("Error al actualizar bono"); } }*/ if (!$objFormasPago->save()) { throw new Exception("Error al guardar forma de pago" . $objFormasPago->validateErrorsResponse()); } $objCompraDireccion = new ComprasDireccionesDespacho(); if ($tipoEntrega == Yii::app()->params->entrega['tipo']['domicilio']) { if ($modelPago->pagoInvitado) { $objCompraDireccion->idCompra = $objCompra->idCompra; $objCompraDireccion->descripcion = $modelPago->descripcion; $objCompraDireccion->nombre = $modelPago->nombre; $objCompraDireccion->direccion = $modelPago->direccion; $objCompraDireccion->barrio = $modelPago->barrio; $objCompraDireccion->telefono = $modelPago->telefono; $objCompraDireccion->celular = $modelPago->celular; $objCompraDireccion->codigoCiudad = Yii::app()->shoppingCart->getCodigoCiudad(); $objCompraDireccion->codigoSector = Yii::app()->shoppingCart->getCodigoSector(); } else { $objDireccion = DireccionesDespacho::model()->findByPk($modelPago->idDireccionDespacho); $objCompraDireccion->idCompra = $objCompra->idCompra; $objCompraDireccion->descripcion = $objDireccion->descripcion; $objCompraDireccion->nombre = $objDireccion->nombre; $objCompraDireccion->direccion = $objDireccion->direccion; $objCompraDireccion->barrio = $objDireccion->barrio; $objCompraDireccion->telefono = $objDireccion->telefono; $objCompraDireccion->celular = $objDireccion->celular; $objCompraDireccion->codigoCiudad = $objDireccion->codigoCiudad; $objCompraDireccion->codigoSector = $objDireccion->codigoSector; $objCompraDireccion->pdvAsignado = $objDireccion->pdvAsignado; if ($objDireccion->codigoSector == 0 && Yii::app()->shoppingCart->getCodigoSector() != 0) { $objDireccion->codigoSector = Yii::app()->shoppingCart->getCodigoSector(); $objDireccion->save(); } } } else { if ($tipoEntrega == Yii::app()->params->entrega['tipo']['presencial']) { $objCompraDireccion = new ComprasDireccionesDespacho(); $objCompraDireccion->idCompra = $objCompra->idCompra; $objCompraDireccion->descripcion = "NA"; $objCompraDireccion->nombre = "NA"; $objCompraDireccion->direccion = "NA"; $objCompraDireccion->barrio = "NA"; $objCompraDireccion->telefono = $modelPago->telefonoContacto; } } if (!$objCompraDireccion->save()) { throw new Exception("Error al guardar dirección de compra" . $objCompraDireccion->validateErrorsResponse()); } //generar puntos //-- $listPuntosCompra = array(); if (!$modelPago->pagoInvitado) { $fecha = new DateTime(); $parametrosPuntos = array(Yii::app()->params->puntos['categoria'] => Yii::app()->shoppingCart->getCategorias(), Yii::app()->params->puntos['marca'] => Yii::app()->shoppingCart->getMarcas(), Yii::app()->params->puntos['proveedor'] => Yii::app()->shoppingCart->getProveedores(), Yii::app()->params->puntos['producto'] => Yii::app()->shoppingCart->getProductosCantidad(), Yii::app()->params->puntos['monto'] => $objCompra->subtotalCompra, Yii::app()->params->puntos['cedula'] => array('identificacionUsuario' => Yii::app()->user->name, 'valor' => $objCompra->subtotalCompra), Yii::app()->params->puntos['rango'] => array('fecha' => $fecha, 'valor' => $objCompra->subtotalCompra), Yii::app()->params->puntos['cumpleanhos'] => array('fechaNacimiento' => Yii::app()->session[Yii::app()->params->usuario['sesion']]->objUsuarioExtendida->fechaNacimiento, 'valor' => $objCompra->subtotalCompra), Yii::app()->params->puntos['clientefielCompra'] => $objCompra->subtotalCompra); $listPuntosCompra = ComprasPuntos::generarPuntos($fecha, Yii::app()->session[Yii::app()->params->usuario['sesion']], $parametrosPuntos); } //-- generar puntos // guardar puntos //-- foreach ($listPuntosCompra as $objPuntoCompra) { $objPuntoCompra->idCompra = $objCompra->idCompra; if (!$objPuntoCompra->save()) { throw new Exception("Error al guardar punto de compra {$objPuntoCompra->idPunto}. " . $objPuntoCompra->validateErrorsResponse()); } } //-- guardar puntos //-- //items de compra $positions = Yii::app()->shoppingCart->getPositions(); foreach ($positions as $position) { if ($position->isProduct()) { //actualizar saldo producto //-- $objSaldo = null; if ($position->objProducto->tercero == 1) { $objSaldo = ProductosSaldosTerceros::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto', 'params' => array(':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector(), ':producto' => $position->objProducto->codigoProducto))); } else { $objSaldo = ProductosSaldos::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND codigoProducto=:producto', 'params' => array(':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector(), ':producto' => $position->objProducto->codigoProducto))); } if ($objSaldo == null) { throw new Exception("Producto " . $position->objProducto->codigoProducto . " no disponible"); } if ($objSaldo->saldoUnidad < $position->getQuantityUnit()) { throw new Exception("Producto " . $position->objProducto->codigoProducto . ". La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldoUnidad} unidades"); } if ($objSaldo->saldoFraccion < $position->getQuantity(true)) { throw new Exception("Producto " . $position->objProducto->codigoProducto . ". La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldoFraccion} fracciones"); } $objSaldo->saldoUnidad = $objSaldo->saldoUnidad - $position->getQuantityUnit(); $objSaldo->saldoFraccion = $objSaldo->saldoFraccion - $position->getQuantity(true); $objSaldo->save(); //-- actualizar saldo producto //actualizar saldo bodega //-- if ($position->getQuantityStored() > 0) { $objSaldoBodega = ProductosSaldosCedi::model()->find(array('condition' => 'codigoCedi=:cedi AND codigoProducto=:producto', 'params' => array(':cedi' => Yii::app()->shoppingCart->getObjCiudad()->codigoSucursal, ':producto' => $position->objProducto->codigoProducto))); if ($objSaldoBodega == null) { throw new Exception("Producto " . $position->objProducto->codigoProducto . " no disponible en bodega"); } if ($objSaldoBodega->saldoUnidad < $position->getQuantityStored()) { throw new Exception("Producto " . $position->objProducto->codigoProducto . ". La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldoBodega->saldoUnidad} unidades"); } $objSaldoBodega->saldoUnidad = $objSaldoBodega->saldoUnidad - $position->getQuantityStored(); $objSaldoBodega->save(); } //-- actualizar saldo bodega $objItem = new ComprasItems(); $objItem->idCompra = $objCompra->idCompra; $objItem->codigoProducto = $position->objProducto->codigoProducto; $objItem->descripcion = $position->objProducto->descripcionProducto; $objItem->presentacion = $position->objProducto->presentacionProducto; $objItem->precioBaseUnidad = $position->getPrice(false, false); $objItem->precioBaseFraccion = $position->getPrice(true, false); $objItem->descuentoUnidad = $position->getDiscountPrice(); $objItem->descuentoFraccion = $position->getDiscountPrice(true); $objItem->precioTotalUnidad = $position->getSumPriceUnit(); $objItem->precioTotalFraccion = $position->getSumPriceFraction(true); $objItem->terceros = $position->objProducto->tercero; $objItem->unidades = $position->getQuantityUnit(); $objItem->fracciones = $position->getQuantity(true); $objItem->unidadesCedi = $position->getQuantityStored(); $objItem->codigoImpuesto = $position->objProducto->codigoImpuesto; $objItem->idEstadoItem = Yii::app()->params->callcenter['estadoItem']['estado']['activo']; //$objItem->idEstadoItemTercero = null; $objItem->flete = $position->getShipping(); $objItem->disponible = 1; if ($objCompra->identificacionUsuario !== null) { $categoriasCompra[] = "('" . $objCompra->identificacionUsuario . "','" . $position->objProducto->idCategoriaBI . "')"; } $productosCompra[] = "('" . $position->objProducto->codigoProducto . "')"; if (!$objItem->save()) { throw new Exception("Error al guardar item de compra {$objItem->codigoProducto}. " . $objItem->validateErrorsResponse()); } //beneficios foreach ($position->getBeneficios() as $objBeneficio) { $objBeneficioItem = new BeneficiosComprasItems(); $objBeneficioItem->idBeneficio = $objBeneficio->idBeneficio; $objBeneficioItem->idBeneficioSincronizado = $objBeneficio->idBeneficioSincronizado; $objBeneficioItem->idCompraItem = $objItem->idCompraItem; $objBeneficioItem->tipo = $objBeneficio->tipo; $objBeneficioItem->fechaIni = $objBeneficio->fechaIni; $objBeneficioItem->fechaFin = $objBeneficio->fechaFin; $objBeneficioItem->dsctoUnid = $objBeneficio->dsctoUnid; $objBeneficioItem->dsctoFrac = $objBeneficio->dsctoFrac; $objBeneficioItem->vtaUnid = $objBeneficio->vtaUnid; $objBeneficioItem->vtaFrac = $objBeneficio->vtaFrac; $objBeneficioItem->pagoUnid = $objBeneficio->pagoUnid; $objBeneficioItem->pagoFrac = $objBeneficio->pagoFrac; $objBeneficioItem->cuentaCop = $objBeneficio->cuentaCop; $objBeneficioItem->nitCop = $objBeneficio->nitCop; $objBeneficioItem->porcCop = $objBeneficio->porcCop; $objBeneficioItem->cuentaProv = $objBeneficio->cuentaProv; $objBeneficioItem->nitProv = $objBeneficio->nitProv; $objBeneficioItem->porcProv = $objBeneficio->porcProv; $objBeneficioItem->promoFiel = $objBeneficio->promoFiel; $objBeneficioItem->mensaje = $objBeneficio->mensaje; $objBeneficioItem->swobligaCli = $objBeneficio->swobligaCli; $objBeneficioItem->fechaCreacionBeneficio = $objBeneficio->fechaCreacionBeneficio; if (!$objBeneficioItem->save()) { throw new Exception("Error al guardar beneficio de compra {$objBeneficioItem->idCompraItem}. " . $objBeneficioItem->validateErrorsResponse()); } } } else { if ($position->isCombo()) { $objSaldo = ComboSectorCiudad::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector AND idCombo=:combo', 'params' => array(':ciudad' => Yii::app()->shoppingCart->getCodigoCiudad(), ':sector' => Yii::app()->shoppingCart->getCodigoSector(), ':combo' => $position->objCombo->idCombo))); if ($objSaldo == null) { throw new Exception("Combo " . $position->objCombo->getCodigo() . " no disponible"); } if ($objSaldo->saldo < $position->getQuantity()) { throw new Exception("Combo " . $position->objCombo->getCodigo() . "La cantidad solicitada no está disponible en este momento. Saldos disponibles: {$objSaldo->saldo} unidades"); } $objSaldo->saldo = $objSaldo->saldo - $position->getQuantity(); $objSaldo->save(); foreach ($position->objCombo->listProductosCombo as $productoCombo) { $objItem = new ComprasItems(); $objItem->idCompra = $objCompra->idCompra; $objItem->idCombo = $position->objCombo->idCombo; $objItem->codigoProducto = $productoCombo->objProducto->codigoProducto; $objItem->descripcion = $productoCombo->objProducto->descripcionProducto; $objItem->descripcionCombo = $position->objCombo->descripcionCombo; $objItem->presentacion = $productoCombo->objProducto->presentacionProducto; $objItem->precioBaseUnidad = $productoCombo->precio; $objItem->precioBaseFraccion = 0; $objItem->descuentoUnidad = 0; $objItem->descuentoFraccion = 0; $objItem->precioTotalUnidad = $productoCombo->precio * $position->getQuantity(); $objItem->precioTotalFraccion = 0; $objItem->terceros = $productoCombo->objProducto->tercero; $objItem->unidades = $position->getQuantity(); $objItem->fracciones = 0; $objItem->unidadesCedi = 0; $objItem->codigoImpuesto = $productoCombo->objProducto->codigoImpuesto; $objItem->idEstadoItem = Yii::app()->params->callcenter['estadoItem']['estado']['activo']; //$objItem->idEstadoItemTercero = null; $objItem->flete = $position->getShipping(); $objItem->disponible = 1; if (!$objItem->save()) { throw new Exception("Error al guardar item de compra {$objItem->codigoProducto}. " . $objItem->validateErrorsResponse()); } if ($objCompra->identificacionUsuario !== null) { $categoriasCompra[] = "('" . $objCompra->identificacionUsuario . "','" . $productoCombo->objProducto->idCategoriaBI . "')"; } $productosCompra[] = "('" . $productoCombo->objProducto->codigoProducto . "')"; } } } } $objUsuario = Yii::app()->session[Yii::app()->params->usuario['sesion']]; $objPasarelaEnvio = null; $asuntoCorreo = Yii::app()->params->asunto['pedidoRealizado']; if ($modelPago->idFormaPago == Yii::app()->params->formaPago['pasarela']['idPasarela']) { $asuntoCorreo = Yii::app()->params->asunto['pedidoRealizadoPasarela']; $objPasarelaEnvio = new PasarelaEnvios(); $objPasarelaEnvio->idCompra = $objCompra->idCompra; $objPasarelaEnvio->valor = $objCompra->totalCompra; $objPasarelaEnvio->iva = $objCompra->impuestosCompra; $objPasarelaEnvio->baseIva = $objCompra->baseImpuestosCompra; $objPasarelaEnvio->moneda = "COP"; $objPasarelaEnvio->nombre = $objUsuario->getNombreCompleto(); $objPasarelaEnvio->identificacionUsuario = $objCompra->identificacionUsuario; $objPasarelaEnvio->tipoDocumento = 1; $objPasarelaEnvio->correoElectronico = $objUsuario->correoElectronico; if (!$objPasarelaEnvio->save()) { throw new Exception("Error al guardar registro de pasarela. " . $objPasarelaEnvio->validateErrorsResponse()); } } if (count($categoriasCompra) > 0) { $sql = "INSERT INTO t_ComprasUsuariosCategorias(identificacionUsuario, idCategoriaBI) VALUES " . implode(",", $categoriasCompra) . " ON DUPLICATE KEY UPDATE cantidad=cantidad+1"; Yii::app()->db->createCommand($sql)->execute(); } if (count($productosCompra) > 0) { $sql = "INSERT INTO t_ProductosVendidos(codigoProducto) VALUES " . implode(",", $productosCompra) . " ON DUPLICATE KEY UPDATE cantidad=cantidad+1"; Yii::app()->db->createCommand($sql)->execute(); } $objFormaPago = FormaPago::model()->findByPk($modelPago->idFormaPago); $contenidoCorreo = $this->renderPartial('compraCorreo', array('objCompra' => $objCompra, 'modelPago' => $modelPago, 'objCompraDireccion' => $objCompraDireccion, 'objFormaPago' => $objFormaPago, 'objFormasPago' => $objFormasPago, 'objUsuario' => $objUsuario), true, true); $htmlCorreo = $this->renderPartial('/usuario/_correo', array('contenido' => $contenidoCorreo), true, true); sendHtmlEmail($objUsuario->correoElectronico, $asuntoCorreo, $htmlCorreo); $transaction->commit(); return array('result' => 1, 'response' => array('objCompra' => $objCompra, 'modelPago' => $modelPago, 'objCompraDireccion' => $objCompraDireccion, 'objFormaPago' => $objFormaPago, 'objFormasPago' => $objFormasPago, 'objPasarelaEnvio' => $objPasarelaEnvio)); } catch (Exception $exc) { Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application'); try { $transaction->rollBack(); } catch (Exception $txexc) { Yii::log($txexc->getMessage() . "\n" . $txexc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application'); } return array('result' => 0, 'response' => $exc->getMessage()); } }
public function FormasPago() { $nItems = 0; $nErrores = 0; $dbLink = mysql_connect("localhost", "root", "albatronic"); $query = "TRUNCATE {$this->dbDestino}.ErpFormasPago"; mysql_query($query); $query = "SELECT * FROM {$this->dbOrigen}.formas_pago"; $result = mysql_query($query, $dbLink); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $row = $this->utf($row); $c = new FormasPago(); $c->setIDFP($row['IDFP']); $c->setDescripcion($row['Descripcion']); $c->setNumeroVctos($row['NumeroVctos']); $c->setDiaPrimerVcto($row['DiaPrimerVcto']); $c->setDiasIntervalo($row['DiasIntervalo']); $c->setPrimaryKeyMD5(md5($row['IDFP'])); if ($c->create() == NULL) { $errores[] = $c->getErrores(); $nErrores++; } else { $nItems++; } } //mysql_close($dbLink); echo "Formas de pago {$nItems}<br/>"; if (count($errores)) { echo "<pre>"; print_r($errores); echo "</pre>"; } }
/** * Construye un tag <select> con todas las formas de pago y propone la habitual de la ficha del proveedor dado * @param integer $idProveedor ID del proveedor * @param string $nameSelect El Name del select * @param string $idSelect El Id del select * @return string Codigo html con el tag select */ function formasPagoProveedor($idProveedor, $nameSelect = '', $idSelect = '') { $fPago = new FormasPago(); $rows = $fPago->fetchAll('Descripcion'); unset($fPago); $proveedor = new Proveedores($idProveedor); $fPagoProveedor = $proveedor->getIDFP()->getIDFP(); unset($proveedor); if ($nameSelect == '') { $nameSelect = $_GET['nameselect']; } if ($idSelect == '') { $idSelect = $_GET['idselect']; } $ch = "<div class='Etiqueta'>Forma de Pago</div>"; $ch .= "<select name='" . $_GET['nameselect'] . "' id='" . $_GET['idselect'] . "' class='Select'>"; foreach ($rows as $row) { $ch .= "<option value='" . $row['Id'] . "'"; if ($fPagoProveedor == $row['Id']) { $ch .= " SELECTED "; } $ch .= ">" . $row['Value'] . "</option>"; } $ch .= "</select>"; return $ch; }
/** * Recalcula y guarda los importes de la factura en base a sus lineas * Se utiliza durante el proceso de facturación */ public function recalcula() { //SI TIENE DESCUENTO, CALCULO EL PORCENTAJE QUE SUPONE RESPECTO AL IMPORTE BRUTO //PARA REPERCUTUIRLO PORCENTUALMENTE A CADA BASE $pordcto = 0; if ($this->getDescuento() != 0) { $pordcto = round(100 * ($this->getDescuento() / $this->getImporte()), 2); } //Calcular los totales, desglosados por tipo de iva. $lineas = new FrecibidasLineas(); $rows = $lineas->cargaCondicion("sum(importe) as Bruto", "IDFactura='{$this->IDFactura}'"); $bruto = $rows[0]['Bruto']; $rows = $lineas->cargaCondicion("Iva, sum(Importe) as Importe", "IDFactura='{$this->IDFactura}' group by Iva order by Iva"); $totbases = 0; $totiva = 0; $bases = array(); foreach ($rows as $key => $row) { $importe = $row['Importe'] * (1 - $pordcto / 100); $cuotaiva = round($importe * $row['Iva'] / 100, 2); $cuotarecargo = round($importe * $row['Recargo'] / 100, 2); $totbases += $importe; $totiva += $cuotaiva; $totrec += $cuotarecargo; $bases[$key] = array('b' => $importe, 'i' => $row['Iva'], 'ci' => $cuotaiva, 'r' => $row['Recargo'], 'cr' => $cuotarecargo); } $subtotal = $totbases + $totiva + $totrec; // Calcular el recargo financiero según la forma de pago $formaPago = new FormasPago($this->IDFP); $recFinanciero = $formaPago->getRecargoFinanciero(); $cuotaRecFinanciero = $subtotal * $recFinanciero / 100; unset($formaPago); $total = $subtotal + $cuotaRecFinanciero; $this->setImporte($bruto); $this->setBaseImponible1($bases[0]['b']); $this->setIva1($bases[0]['i']); $this->setCuotaIva1($bases[0]['ci']); $this->setRecargo1($bases[0]['r']); $this->setCuotaRecargo1($bases[0]['cr']); $this->setBaseImponible2($bases[1]['b']); $this->setIva2($bases[1]['i']); $this->setCuotaIva2($bases[1]['ci']); $this->setRecargo2($bases[1]['r']); $this->setCuotaRecargo2($bases[1]['cr']); $this->setBaseImponible3($bases[2]['b']); $this->setIva3($bases[2]['i']); $this->setCuotaIva3($bases[2]['ci']); $this->setRecargo3($bases[2]['r']); $this->setCuotaRecargo3($bases[2]['cr']); $this->setTotalBases($totbases); $this->setTotalIva($totiva); $this->setTotalRecargo($totrec); $this->setRecargoFinanciero($recFinanciero); $this->setCuotaRecargoFinanciero($cuotaRecFinanciero); $this->setTotal($total); $this->save(); }
/** * 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'); } }
/** * Recalcula los importes de la factura en base a sus lineas * Se utiliza durante el proceso de facturacion agrupada */ public function recalcula() { //Si el cliente no está sujeto a iva //pongo el iva a cero en las líneas para evitar que por cambio //de cliente se aplique indebidamente $cliente = new Clientes($this->IDCliente); if ($cliente->getIva()->getIDTipo() == '0') { $lineas = new FemitidasLineas(); $lineas->queryUpdate(array("Iva" => 0, "Recargo" => 0), "`IDFactura`= '{$this->IDFactura}'"); unset($lineas); } elseif ($cliente->getRecargoEqu()->getIDTipo() == '0') { $lineas = new FemitidasLineas(); $lineas->queryUpdate(array("Recargo" => 0), "`IDFactura`= '{$this->IDFactura}'"); unset($lineas); } unset($cliente); //SI TIENE DESCUENTO, CALCULO EL PORCENTAJE QUE SUPONE RESPECTO AL IMPORTE BRUTO //PARA REPERCUTUIRLO PORCENTUALMENTE A CADA BASE $pordcto = 0; if ($this->getDescuento() != 0) { $pordcto = round(100 * ($this->getDescuento() / $this->getImporte()), 2); } //Calcular los totales, desglosados por tipo de iva. $this->conecta(); if (is_resource($this->_dbLink)) { $lineas = new FemitidasLineas(); $tableLineas = "{$lineas->getDataBaseName()}.{$lineas->getTableName()}"; $articulos = new Articulos(); $tableArticulos = "{$articulos->getDataBaseName()}.{$articulos->getTableName()}"; unset($lineas); unset($articulos); $query = "select sum(Importe) as Bruto,sum(ImporteCosto) as Costo from {$tableLineas} where (IDFactura='" . $this->getIDFactura() . "')"; $this->_em->query($query); $rows = $this->_em->fetchResult(); $bruto = $rows[0]['Bruto']; $query = "select Iva,Recargo, sum(Importe) as Importe from {$tableLineas} where (IDFactura='" . $this->getIDFactura() . "') group by Iva,Recargo order by Iva"; $this->_em->query($query); $rows = $this->_em->fetchResult(); $totbases = 0; $totiva = 0; $totrec = 0; $bases = array(); foreach ($rows as $key => $row) { $importe = $row['Importe'] * (1 - $pordcto / 100); $cuotaiva = round($importe * $row['Iva'] / 100, 2); $cuotarecargo = round($importe * $row['Recargo'] / 100, 2); $totbases += $importe; $totiva += $cuotaiva; $totrec += $cuotarecargo; $bases[$key] = array('b' => $importe, 'i' => $row['Iva'], 'ci' => $cuotaiva, 'r' => $row['Recargo'], 'cr' => $cuotarecargo); } $subtotal = $totbases + $totiva + $totrec; // Calcular el recargo financiero según la forma de pago $formaPago = new FormasPago($this->IDFP); $recFinanciero = $formaPago->getRecargoFinanciero(); $cuotaRecFinanciero = $subtotal * $recFinanciero / 100; unset($formaPago); $total = $subtotal + $cuotaRecFinanciero; //Calcular el peso, volumen y n. de bultos de los productos inventariables switch ($_SESSION['ver']) { case '1': //Cristal $columna = "MtsAl"; case '0': //Estandar //Estandar default: $columna = "Unidades"; } $em = new EntityManager($this->getConectionName()); $query = "select sum(a.Peso*l.{$columna}) as Peso,\n sum(a.Volumen*l.{$columna}) as Volumen,\n sum(Unidades) as Bultos \n from {$tableArticulos} as a,{$tableLineas} as l\n where (l.IDArticulo=a.IDArticulo)\n and (a.Inventario='1')\n and (l.IDFactura='{$this->IDFactura}')"; $em->query($query); $rows = $em->fetchResult(); $em->desConecta(); $this->setImporte($bruto); $this->setBaseImponible1($bases[0]['b']); $this->setIva1($bases[0]['i']); $this->setCuotaIva1($bases[0]['ci']); $this->setRecargo1($bases[0]['r']); $this->setCuotaRecargo1($bases[0]['cr']); $this->setBaseImponible2($bases[1]['b']); $this->setIva2($bases[1]['i']); $this->setCuotaIva2($bases[1]['ci']); $this->setRecargo2($bases[1]['r']); $this->setCuotaRecargo2($bases[1]['cr']); $this->setBaseImponible3($bases[2]['b']); $this->setIva3($bases[2]['i']); $this->setCuotaIva3($bases[2]['ci']); $this->setRecargo3($bases[2]['r']); $this->setCuotaRecargo3($bases[2]['cr']); $this->setTotalBases($totbases); $this->setTotalIva($totiva); $this->setTotalRecargo($totrec); $this->setRecargoFinanciero($recFinanciero); $this->setCuotaRecargoFinanciero($cuotaRecFinanciero); $this->setTotal($total); $this->setPeso($rows[0]['Peso']); $this->setVolumen($rows[0]['Volumen']); $this->setBultos($rows[0]['Bultos']); $this->save(); } }
private function buscaCreaFromaPago($formaPago) { $formaPago = trim($formaPago); $obj = new FormasPago(); $row = $obj->querySelect("Id", "Descripcion='{$formaPago}'"); $id = $row[0]['Id']; if ($id == '') { //Crear $obj->setDescripcion($formaPago); $id = $obj->create(); } return $id; }
/** * Devuelve un array con los totales de movimientos por tipo de forma de cobro * * No se incluyen las formas de pago que su total sea cero. * * El array es * array{ * 0 => array(IDFP=> , Descripcion=> , Importe=>) * . . . * n => array(IDFP=> , Descripcion=> , Importe=>) * } * @return array Totalizacion de movimientos por tipo de forma de cobro */ public function getResumen() { $resumen = array(); $formasPago = new FormasPago(); $tablaFp = $formasPago->getDataBaseName() . "." . $formasPago->getTableName(); unset($formasPago); $lineas = new CajaLineas(); $tablaLineas = $lineas->getDataBaseName() . "." . $lineas->getTableName(); unset($lineas); $this->conecta(); if (is_resource($this->_dbLink)) { $query = "SELECT t1.IDFP as IDFP, t2.Descripcion, sum(t1.Importe) as Importe\n FROM\n {$tablaLineas} as t1,\n {$tablaFp} as t2\n WHERE\n (t1.IDArqueo='{$this->IDArqueo}') AND\n (t1.IDFP=t2.IDFP)\n GROUP BY t1.IDFP\n HAVING (sum(t1.Importe) <> 0)"; $this->_em->query($query); $resumen = $this->_em->fetchResult(); } return $resumen; }