protected function tearDown() { $configuraciones = ConfiguracionDAO::search($this->configuracion); if (count($configuraciones) > 0) { ConfiguracionDAO::delete($configuraciones[0]); } }
private function createMainMenu() { $productos = ''; if (ConfiguracionDAO::MostrarProductos()) { $productos = '{ "title": "Productos", "url": "productos.php" }'; } $this->main_menu_json = '{ "main_menu": [' . $productos . ' ] }'; return; }
public function testConfiguracionesPrevias() { //Comprueba que exista una configuración valida en la tabla de configuraciones decimales //echo " >> Comprobando la existencia de una configuracion de decimales previa\n"; $Configuraciones = ConfiguracionDAO::search(new Configuracion(array("descripcion" => "decimales"))); //Lee las configuraciones de la base de datos $nDecimales = $Configuraciones[0]; //Carga la primera configuración $temp = json_decode($nDecimales->getValor()); $Cambio = $temp->cambio; $Cantidades = $temp->cantidades; $Costos = $temp->costos; $Ventas = $temp->ventas; if (is_null($Cambio)) { $this->assertTrue(false); //echo "\tError, no hay decimales asignados a 'Cambio'\n"; } else { //echo "\tDecimales en 'Cambio': " . $Cambio."\n"; } if (is_null($Cantidades)) { $this->assertTrue(false); //echo "\tError, no hay decimales asignados a 'Cantidades'\n"; } else { //echo "\tDecimales en 'Cantidades': " . $Cantidades."\n"; } if (is_null($Costos)) { $this->assertTrue(false); //echo "\tError, no hay decimales asignados a 'Costos'\n"; } else { //echo "\tDecimales en 'Costos': " . $Costos."\n"; } if (is_null($Ventas)) { $this->assertTrue(false); //echo "\tError, no hay decimales asignados a 'Ventas'\n"; } else { //echo "\tDecimales en 'Ventas': " . $Ventas."\n"; } }
protected function tearDown() { $configuraciones = ConfiguracionDAO::search($this->configuracion); $configuracion = $configuraciones[0]; ConfiguracionDAO::delete($configuracion); }
<?php require_once "../../../server/bootstrap.php"; $page = new ClienteComponentPage(); $page->requireParam("pid", "GET", "Este producto no existe."); $producto = ProductoDAO::getByPK($_GET["pid"]); $page->addComponent(new TitleComponent($producto->getNombreProducto())); if (is_null($producto)) { $page->render(); exit; } $form = new DAOFormComponent($producto); $form->setEditable(false); $campos_escondidos = array_diff(array_keys(get_class_vars('Producto')), ConfiguracionDAO::Propiedades()); $form->hideField($campos_escondidos); $page->addComponent($form); $page->render();
public static function ObtenerMonedaBase() { $moneda_base = ConfiguracionDAO::search(new Configuracion(array("descripcion" => "id_moneda_base"))); if (count($moneda_base) < 1) { Logger::Log("La empresa no tiene moneda base"); //throw new BusinessLogicException("La empresa no tiene moneda base"); return NULL; } $moneda = MonedaDAO::getByPK($moneda_base[0]->getValor()); return array("id_moneda_base" => $moneda_base[0]->getValor(), "simbolo" => $moneda->getSimbolo()); }
<?php require_once "../../../server/bootstrap.php"; $page = new ClienteComponentPage(); $page->addComponent(new TitleComponent("Productos")); // sacar las propiedades indicadas $campos = ConfiguracionDAO::Propiedades(); $columns = array(); foreach ($campos as $key => $value) { if ($value == "foto_del_producto") { unset($campos[$key]); } else { $columns[$value] = ucwords(str_replace('_', ' ', $value)); } } // sacar los productos correspondientes function filter($product) { return $product->getVisibleEnVc(); } $products = array_filter(ProductosController::Lista(), "filter"); // dar formato a los campos como corresponda foreach ($products as $product) { $product->setPrecio(FormatMoney($product->getPrecio())); $product->setCostoEstandar(FormatMoney($product->getCostoEstandar())); $product->setCostoExtraAlmacen(FormatMoney($product->getCostoExtraAlmacen())); if ($product->getCompraEnMostrador()) { $product->setCompraEnMostrador("Sí"); } else { $product->setCompraEnMostrador("No"); }
/** * * Crear una nueva empresa. Por default una nueva empresa no tiene sucursales. * Varios RFC`s pueden repetirse siempre y cuando solo exista una empresa activa. * * @author Juan Manuel García Carmona <*****@*****.**> * * @param contabilidad json JSON donde se describe la moneda que usara como base la empresa, indica la descripción del ejercicio, el periodo inicial y la duración de cada periodo * @param direccion json { "calle": "Francisco I Madero", "numero_exterior": "1009A", "numero_interior": 12, "colonia": "centro", "codigo_postal": "38000", "telefono1": "4611223312", "telefono2": "", "id_ciudad": 3, "referencia": "El local naranja"} * @param razon_social string El nombre de la nueva empresa. * @param rfc string RFC de la nueva empresa. * @param cuentas_bancarias json arreglo que contiene los id de las cuentas bancarias * @param direccion_web string Direccion del sitio de la empresa * @param duplicar bool Significa que se duplicara una empresa, solo es una bandera, en caso de que exista y sea = true , significa que duplicara todo lo referente a la empresa (direccion, impuestos asociados, cuentas bancarias, etc..) * @param email string Correo electronico de la empresa * @param impuestos_compra json Impuestos de compra por default que se heredan a los productos * @param impuestos_venta json Impuestos de venta por default que se heredan a los productos * @param mensaje_morosos string mensaje enviado a los clientes cuando un pago es demorado * @param representante_legal string El nombre del representante legal de la nueva empresa. * @param uri_logo string url del logo de la empresa * @return id_empresa int El ID autogenerado de la nueva empresa. **/ static function Nuevo($contabilidad, $direccion, $razon_social, $rfc, $cuentas_bancarias = null, $direccion_web = null, $duplicar = false, $email = null, $impuestos_compra = null, $impuestos_venta = null, $mensaje_morosos = null, $representante_legal = null, $uri_logo = null) { //verificamos los impuestos de compra if ($impuestos_compra !== NULL && !is_array($impuestos_compra)) { Logger::error("Error : Verifique los datos especiicados en los impuestos de compra, debe ser una array no vacio"); throw new InvalidDataException("Error : Verifique los datos especiicados en los impuestos de compra, debe ser una array no vacio"); } //verificamos los impuestos de venta if ($impuestos_venta !== NULL && !is_array($impuestos_venta)) { Logger::error("Error : Verifique los datos especiicados en los impuestos de venta, debe ser una array no vacio"); throw new InvalidDataException("Error : Verifique los datos especiicados en los impuestos de venta, debe ser una array no vacio"); } //verificamos si se enviaron todos los parametros if (empty($contabilidad->id_moneda) || empty($contabilidad->ejercicio) || empty($contabilidad->periodo_actual) || empty($contabilidad->duracion_periodo)) { Logger::error("Error : Verifique que la información de contabilidad este completa"); throw new InvalidDataException("Verifique que la información de contabilidad este completa : " . $contabilidad); } //verificamos si se enviaron valores correctos if (!is_numeric($contabilidad->id_moneda) || !is_numeric($contabilidad->periodo_actual) || !is_numeric($contabilidad->duracion_periodo)) { Logger::error("Error : Verifique que la información de contabilidad sea correcta"); throw new InvalidDataException("Verifique que la información de contabilidad sea correcta"); } //validamos decimales if ($contabilidad->id_moneda - (int) $contabilidad->id_moneda !== 0 || $contabilidad->periodo_actual - (int) $contabilidad->periodo_actual !== 0 || $contabilidad->duracion_periodo - (int) $contabilidad->duracion_periodo !== 0) { Logger::error("Error : Verifique que la información de contabilidad sea correcta, el id_moneda, periodo_actual y duracion_periodo deben ser valores enteros"); throw new InvalidDataException("Error : Verifique que la información de contabilidad sea correcta, el id_moneda, periodo_actual y duracion_periodo deben ser valores enteros"); } if ($contabilidad->duracion_periodo < "1" || $contabilidad->duracion_periodo === "5" || $contabilidad->duracion_periodo > "6") { Logger::error("Error : Verifique que la duracion de los perodos, solo pueden durar 1, 2, 3, 4 y 6 meses"); throw new InvalidDataException("Error : Verifique que la duracion de los perodos, solo pueden durar 1, 2, 3, 4 y 6 meses"); } if ($contabilidad->periodo_actual > 12 / $contabilidad->duracion_periodo) { Logger::error("Error : Verifique el valor del periodo actual, debe concordar con la relacion de la duracion de los periodos"); throw new InvalidDataException("Error : Verifique el valor del periodo actual, debe concordar con la relacion de la duracion de los periodos"); } if (is_null($direccion)) { throw new InvalidDataException("Missing direccion"); } if (!is_array($direccion)) { $direccion = object_to_array($direccion); } $id_direccion = DireccionController::NuevaDireccion(isset($direccion["calle"]) ? $direccion["calle"] : null, isset($direccion["numero_exterior"]) ? $direccion["numero_exterior"] : null, isset($direccion["colonia"]) ? $direccion["colonia"] : null, isset($direccion["id_ciudad"]) ? $direccion["id_ciudad"] : null, isset($direccion["codigo_postal"]) ? $direccion["codigo_postal"] : null, isset($direccion["numero_interior"]) ? $direccion["numero_interior"] : null, isset($direccion["referencia"]) ? $direccion["referencia"] : null, isset($direccion["telefono1"]) ? $direccion["telefono1"] : null, isset($direccion["telefono2"]) ? $direccion["telefono2"] : null); DAO::transBegin(); $id_logo = -1; //verificamos si se ha enviado informacion sobre un logo if (!empty($uri_logo)) { $logo = new Logo(array("imagen" => $uri_logo, "tipo" => "-")); try { LogoDAO::save($logo); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la empresa, error al crear el logo: " . $e->getMessage()); throw new Exception("No se pudo crear la empresa, consulte a su administrador de sistema", 901); } $id_logo = $logo->getIdLogo(); } //Se crea la empresa con los parametros obtenidos. $empresa = new Empresa(array("id_direccion" => $id_direccion, "rfc" => $rfc, "razon_social" => trim($razon_social), "representante_legal" => $representante_legal, "fecha_alta" => time(), "fecha_baja" => null, "activo" => true, "direccion_web" => $direccion_web, "cedula" => "", "id_logo" => $id_logo, "mensaje_morosos" => $mensaje_morosos)); //Se busca el rfc en la base de datos. Si hay una empresa activa con el mismo rfc se lanza un error $empresas = EmpresaDAO::search(new Empresa(array("rfc" => $rfc, "activo" => 1))); if (!empty($empresas)) { Logger::error("Este rfc ya esta en uso por la empresa activa"); throw new InvalidDataException("El rfc: " . $rfc . " ya esta en uso", 901); } /* * Se busca la razon social en la base de datos. * Si hay una empresa activa con la misma razon zocial se lanza un error. * Se usa trim para cubrir los casos "caffeina" y " caffeina ". */ $empresas = EmpresaDAO::search(new Empresa(array("razon_social" => trim($razon_social), "activo" => 1))); if (!empty($empresas)) { Logger::error("La razon social: " . $razon_social . " ya esta en uso por la empresa: " . $empresas[0]->getIdEmpresa()); throw new InvalidDataException("La razon social: " . $razon_social . " ya esta en uso", 901); } try { EmpresaDAO::save($empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la empresa, consulte a su administrador de sistema", 901); } //verificamos si la moneda que se esta indicando exista if (!($moneda = MonedaDAO::getByPK($contabilidad->id_moneda))) { DAO::transRollback(); Logger::error("Error : No existe la moneda indicada."); throw new InvalidDataException("Error : No existe la moneda indicada.", 901); } //creamos la configuracion de la moneda para esta empresa $moneda_base = new Configuracion(array("descripcion" => "id_moneda_base", "valor" => $contabilidad->id_moneda, "id_usuario" => "", "fecha" => time())); try { ConfiguracionDAO::save($moneda_base); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la configuracion de la moneda base para la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la configuracion de la moneda base para la empresa", 901); } //relacionamos la configuracion con la empresa que estamos creando $configuracion_empresa = new ConfiguracionEmpresa(array("id_configuracion" => $moneda_base->getIdConfiguracion(), "id_empresa" => $empresa->getIdEmpresa())); try { ConfiguracionEmpresaDAO::save($configuracion_empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la relacion entre la moneda base y la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la relacion entre la moneda base y la empresa", 901); } //creamos la configuracion del tipo de cambio para esta empresa $tc = new Configuracion(array("descripcion" => "tipo_cambio", "valor" => "", "id_usuario" => "", "fecha" => time())); try { ConfiguracionDAO::save($tc); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la configuracion del tipo de cambio para la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la configuracion del tipo de cambio para la empresa", 901); } //relacionamos la configuracion con la empresa que estamos creando $conf_empresa = new ConfiguracionEmpresa(array("id_configuracion" => $tc->getIdConfiguracion(), "id_empresa" => $empresa->getIdEmpresa())); try { ConfiguracionEmpresaDAO::save($conf_empresa); } catch (Exception $e) { DAO::transRollback(); Logger::error("No se pudo crear la relacion entre el tipo de cambio y la empresa: " . $e->getMessage()); throw new Exception("No se pudo crear la relacion entre el tipo de cambio y la empresa", 901); } //creamos los periodos necesarios $_p = 1; $_periodo = NULL; $_ejercicio = NULL; $_mes_inicial = 1; $_mes_final = 1; $_anio = date("Y"); $_inicio = 0; $_fin = 0; for ($i = $contabilidad->duracion_periodo; $i <= 12; $i += $contabilidad->duracion_periodo) { //obtenemos la fecha inicial $_inicio = mktime(0, 0, 0, $_mes_inicial, 1, $_anio); //obtenemos la fecha final $_mes_final = $_mes_inicial * $_p; $_fin = mktime(23, 59, 59, $_mes_final, getUltimoDiaDelMes($_mes_final, $_anio), $_anio); //damos de alta los periodos try { $_periodo = new Periodo(array("periodo" => $_p, "inicio" => $_inicio, "fin" => $_fin)); PeriodoDAO::save($_periodo); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al crear los periodos : " . $e->getMessage()); throw new Exception("Error al crear los periodos", 901); } //damos de alta el ejercicio if ($_p == $contabilidad->periodo_actual) { try { $_ejercicio = new Ejercicio(array("anio" => $_anio, "id_periodo" => $_periodo->getIdPeriodo(), "inicio" => $_inicio, "fin" => $_fin, "vigente" => 1)); EjercicioDAO::save($_ejercicio); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al crear el ejercicio : " . $e->getMessage()); throw new Exception("Error al crear el ejercicio", 901); } } $_mes_inicial = $_mes_final + 1; $_p++; } //relacionamos a la empresa con el ejercicio try { EjercicioEmpresaDAO::save(new EjercicioEmpresa(array("id_ejercicio" => $_ejercicio->getIdEjercicio(), "id_empresa" => $empresa->getIdEmpresa()))); } catch (Exception $e) { DAO::transRollback(); Logger::error("Error al relacionar la empresa con el ejercicio: " . $e->getMessage()); throw new Exception("Error al relacionar la empresa con el ejercicio", 901); } if (!empty($impuestos_compra)) { for ($i = 0; $i < count($impuestos_compra); $i++) { try { ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuestos_compra[$i]))); } catch (Exception $e) { Logger::warn("Error al guardar un impuesto de compra : " . $e->getMessage()); } } } if (!empty($impuestos_venta)) { for ($i = 0; $i < count($impuestos_venta); $i++) { try { ImpuestoEmpresaDAO::save(new ImpuestoEmpresa(array("id_empresa" => $empresa->getIdEmpresa(), "id_impuesto" => $impuestos_venta[$i]))); } catch (Exception $e) { Logger::warn("Error al guardar un impuesto de venta : " . $e->getMessage()); } } } if (!empty($cuentas_bancarias)) { foreach ($cuentas_bancarias as $cuenta_bancarias) { //Pendiente hasta que se haga el SPEC de cuentas bancarias } } DAO::transEnd(); //Creamos el catalogo de cuentas por default para esta nueva empresa ContabilidadController::NuevoCatalogoCuentasEmpresa($empresa->getIdEmpresa()); Logger::log("Empresa creada exitosamente, id=" . $empresa->getIdEmpresa()); return array("id_empresa" => (int) $empresa->getIdEmpresa()); }
$html .= " msg : 'Se modifico correctamente la configuración',"; $html .= " buttons : Ext.MessageBox.OK,"; $html .= " fn : function(){window.location = \"c.php#Decimales\";}"; $html .= " });"; //$html .= " window.location = \"c.php\"; "; $html .= " }"; $html .= " window.onbeforeunload = function(){}"; //$html .= " window.location = \"c.php\"; "; $html .= " }"; $html .= " }"; $html .= " );"; $html .= " }"; $html .= "</script>"; $page->addComponent($html); //buscamos la configuracion de decimales $configuraciones = ConfiguracionDAO::search(new Configuracion(array("descripcion" => "decimales"))); if (empty($configuraciones)) { Logger::error("No se tiene registro de la configuracion 'decimales' en la tabla de configuraciones"); $page->addComponent("No se tiene registro de la configuracion 'decimales' en la tabla de configuraciones"); $dcantidades = ""; $dcambio = ""; $dventas = ""; $dcostos = ""; } else { $decimales = $configuraciones[0]; $config = json_decode($decimales->getValor()); $dcantidades = $config->cantidades; $dcambio = $config->cambio; $dventas = $config->ventas; $dcostos = $config->costos; }
/** * *Permite establecer si habra productos que mostrar al cliente y cuales propiedades de ellos. * * @param mostrar bool Si queremos que se muestren productos al cliente. * @param propiedades json Arreglo de strings con los campos de los productos que se mostraran al cliente. **/ public static function ClientesVistasConfiguracion($mostrar, $propiedades = null) { $sesion = SesionController::Actual(); ConfiguracionDAO::GuardarConfigDeVC($mostrar, $sesion['id_usuario'], $propiedades); }