protected function process() { $this->factura = new factura_proveedor(); /// desactivamos la barra de botones $this->show_fs_toolbar = FALSE; $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/compras_facturas_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $this->factura->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codproveedor'])) { $this->template = 'extension/compras_facturas_proveedor'; $proveedor = new proveedor(); $this->proveedor = $proveedor->get($_GET['codproveedor']); $this->resultados = $this->factura->all_from_proveedor($_GET['codproveedor'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/compras_facturas_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_factura_proveedor(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); if (isset($_GET['delete'])) { $fact = $this->factura->get($_GET['delete']); if ($fact) { if ($fact->delete()) { $this->new_message("Factura eliminada correctamente."); } else { $this->new_error_msg("¡Imposible eliminar la factura!"); } } else { $this->new_error_msg("Factura no encontrada."); } } if ($this->query != '') { $this->resultados = $this->factura->search($this->query, $this->offset); } else { if (isset($_GET['sinpagar'])) { $this->resultados = $this->factura->all_sin_pagar($this->offset); } else { $this->resultados = $this->factura->all($this->offset); } } } } } } }
protected function process() { $this->factura = new factura_cliente(); $this->huecos = array(); $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/ventas_facturas_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $this->factura->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codcliente'])) { $this->template = 'extension/ventas_facturas_cliente'; $cliente = new cliente(); $this->cliente = $cliente->get($_GET['codcliente']); $this->resultados = $this->factura->all_from_cliente($_GET['codcliente'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/ventas_facturas_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_factura_cliente(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); $this->huecos = $this->factura->huecos(); if (isset($_GET['delete'])) { $fact = $this->factura->get($_GET['delete']); if ($fact) { if ($fact->delete()) { $this->new_message("Factura eliminada correctamente."); } else { $this->new_error_msg("¡Imposible eliminar la factura!"); } } else { $this->new_error_msg("¡Factura no encontrada!"); } } if ($this->query != '') { $this->resultados = $this->factura->search($this->query, $this->offset); } else { if (isset($_GET['sinpagar'])) { $this->resultados = $this->factura->all_sin_pagar($this->offset); } else { $this->resultados = $this->factura->all($this->offset); } } } } } } }
protected function process() { $pedido = new pedido_cliente(); $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } $this->mostrar = 'todos'; if (isset($_GET['mostrar'])) { $this->mostrar = $_GET['mostrar']; } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/ventas_pedidos_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $pedido->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codcliente'])) { $this->template = 'extension/ventas_pedidos_cliente'; $cliente = new cliente(); $this->cliente = $cliente->get($_GET['codcliente']); $this->resultados = $pedido->all_from_cliente($_GET['codcliente'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/ventas_pedidos_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_pedido_cliente(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); if (isset($_POST['delete'])) { $this->delete_pedido(); } if ($this->query) { $this->resultados = $pedido->search($this->query, $this->offset); } else { if ($this->mostrar == 'pendientes') { $this->resultados = $pedido->all_ptealbaran($this->offset); } else { if ($this->mostrar == 'rechazados') { $this->resultados = $pedido->all_rechazados($this->offset); } else { /// ejecutamos el proceso del cron para pedidos. $pedido->cron_job(); $this->resultados = $pedido->all($this->offset); } } } } } } } }
protected function process() { $pedido = new pedido_cliente(); /// desactivamos la barra de botones $this->show_fs_toolbar = FALSE; $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/ventas_pedidos_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $pedido->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codcliente'])) { $this->template = 'extension/ventas_pedidos_cliente'; $cliente = new cliente(); $this->cliente = $cliente->get($_GET['codcliente']); $this->resultados = $pedido->all_from_cliente($_GET['codcliente'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/ventas_pedidos_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_pedido_cliente(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); if (isset($_POST['delete'])) { $this->delete_pedido(); } if ($this->query) { $this->resultados = $pedido->search($this->query, $this->offset); } else { if (isset($_GET['pendientes'])) { $this->resultados = $pedido->all_ptealbaran($this->offset); } else { if (isset($_GET['rechazados'])) { $this->resultados = $pedido->all_rechazados($this->offset); } else { $this->resultados = $pedido->all($this->offset); } } } } } } } }
protected function private_core() { $this->share_extension(); $art0 = new articulo(); $this->articulo = FALSE; if (isset($_REQUEST['ref'])) { $this->articulo = $art0->get($_REQUEST['ref']); } if (isset($_REQUEST['buscar_subcuenta'])) { /// esto es para el autocompletar las subcuentas de la vista $this->buscar_subcuenta(); } else { if ($this->articulo) { $ap = new articulo_propiedad(); if (isset($_POST['codsubcuentacom'])) { $this->articulo->codsubcuentacom = $_POST['codsubcuentacom']; $this->articulo->codsubcuentairpfcom = $_POST['codsubcuentairpfcom']; $aprops = array('codsubcuentaventa' => $_POST['codsubcuentaventa']); if ($this->articulo->save() and $ap->array_save($this->articulo->referencia, $aprops)) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Error al guardar las subcuentas.'); } } $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($this->today()); $sc = new subcuenta(); $this->subcuentacom = $sc->get_by_codigo($this->articulo->codsubcuentacom, $ejercicio->codejercicio); $this->subcuentairpfcom = $sc->get_by_codigo($this->articulo->codsubcuentairpfcom, $ejercicio->codejercicio); $propiedades = $ap->array_get($this->articulo->referencia); if (isset($propiedades['codsubcuentaventa'])) { $this->subcuentaventa = $sc->get_by_codigo($propiedades['codsubcuentaventa'], $ejercicio->codejercicio); } /** * si alguna subcuenta no se encontrase, devuelve un false, * pero necesitamos una subcuenta para la vista, aunque no esté en * blanco y no esté en la base de datos */ if (!$this->subcuentacom) { $this->subcuentacom = $sc; } if (!$this->subcuentairpfcom) { $this->subcuentairpfcom = $sc; } if (!$this->subcuentaventa) { $this->subcuentaventa = $sc; } } else { $this->new_error_msg('Artículo no encontrado.'); } } }
protected function private_core() { $art0 = new articulo(); $this->articulo = FALSE; if (isset($_REQUEST['ref'])) { $this->articulo = $art0->get($_REQUEST['ref']); } if ($this->articulo) { $atraza = new articulo_traza(); if (isset($_POST['numserie'])) { if ($_POST['numserie'] != '' or $_POST['lote'] != '') { if (isset($_POST['id'])) { $natraza = $atraza->get($_POST['id']); } else { $natraza = new articulo_traza(); $natraza->referencia = $this->articulo->referencia; } $natraza->numserie = NULL; if ($_POST['numserie'] != '') { $natraza->numserie = $_POST['numserie']; } $natraza->lote = NULL; if ($_POST['lote'] != '') { $natraza->lote = $_POST['lote']; } if ($natraza->save()) { $this->new_message('Datos guardados correctamente.'); } else { $this->new_error_msg('Error al guardar los datos.'); } } else { $this->new_error_msg('Debes escribir un número de serie o un lote o ambos,' . ' pero algo debes escribir.'); } } else { if (isset($_GET['delete'])) { $natraza = $atraza->get($_GET['delete']); if ($natraza) { if ($natraza->delete()) { $this->new_message('Datos eliminados correctamente.'); } else { $this->new_error_msg('Error al eliminar los datos.'); } } } } $this->trazas = $atraza->all_from_ref($this->articulo->referencia); } else { $this->new_error_msg('Artículo no encontrado.'); } }
protected function process() { $presupuesto = new presupuesto_proveedor(); /// desactivamos la barra de botones $this->show_fs_toolbar = FALSE; $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/compras_presupuestos_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $presupuesto->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codproveedor'])) { $this->template = 'extension/compras_presupuestos_proveedor'; $proveedor = new proveedor(); $this->proveedor = $proveedor->get($_GET['codproveedor']); $this->resultados = $presupuesto->all_from_proveedor($_GET['codproveedor'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/compras_presupuestos_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_presupuesto_proveedor(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); if (isset($_POST['delete'])) { $this->delete_presupuesto(); } if ($this->query) { $this->resultados = $presupuesto->search($this->query, $this->offset); } else { if (isset($_GET['pendientes'])) { $this->resultados = $presupuesto->all_ptepedir($this->offset); } else { $this->resultados = $presupuesto->all($this->offset); } } } } } } }
protected function private_core() { $pedido = new pedido_proveedor(); $this->offset = 0; if (isset($_GET['offset'])) { $this->offset = intval($_GET['offset']); } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_GET['codagente'])) { $this->template = 'extension/compras_pedidos_agente'; $agente = new agente(); $this->agente = $agente->get($_GET['codagente']); $this->resultados = $pedido->all_from_agente($_GET['codagente'], $this->offset); } else { if (isset($_GET['codproveedor'])) { $this->template = 'extension/compras_pedidos_proveedor'; $proveedor = new proveedor(); $this->proveedor = $proveedor->get($_GET['codproveedor']); $this->resultados = $pedido->all_from_proveedor($_GET['codproveedor'], $this->offset); } else { if (isset($_GET['ref'])) { $this->template = 'extension/compras_pedidos_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_pedido_proveedor(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); if (isset($_POST['delete'])) { $this->delete_pedido(); } if ($this->query) { $this->resultados = $pedido->search($this->query, $this->offset); } else { if (isset($_GET['pendientes'])) { $this->resultados = $pedido->all_ptealbaran($this->offset); } else { /// ejecutamos el proceso del cron para pedidos. $pedido->cron_job(); $this->resultados = $pedido->all($this->offset); } } } } } } }
private function borrar_articulo($ref) { $art = new articulo(); $articulo = $art->get($ref); if ($articulo) { if ($articulo->delete()) { return TRUE; } else { $this->new_error_msg('Error al borrar el artículo ' . $ref); return FALSE; } } else { return FALSE; } }
protected function process() { //Add the tab! $this->share_extensions(); $ref_articulo = isset($_GET['ref']) ? $_GET['ref'] : ''; $art = new articulo(); $this->articulo = $art->get($ref_articulo); $action = (string) isset($_GET['action']) ? $_GET['action'] : 'list'; switch ($action) { case 'edit': $this->editAction(); break; default: } }
protected function private_core() { $this->unidadmedida = new unidadmedida(); $this->articulo_unidadmedida = new articulo_unidadmedida(); $art0 = new articulo(); //Mandamos los botones y tabs $this->shared_extensions(); //Verificamos los accesos del usuario $this->allow_delete = $this->user->admin ? TRUE : $this->user->allow_delete_on(__CLASS__); $this->articulo = FALSE; if (isset($_REQUEST['ref'])) { $this->articulo = $art0->get($_REQUEST['ref']); } $accion = filter_input(INPUT_POST, 'accion'); if ($accion == 'agregar') { $unidadmedida = filter_input(INPUT_POST, 'id'); $factor = filter_input(INPUT_POST, 'factor'); $peso = filter_input(INPUT_POST, 'peso'); $base = filter_input(INPUT_POST, 'base'); $aum0 = new articulo_unidadmedida(); $aum0->id = $unidadmedida; $aum0->referencia = $this->articulo->referencia; $aum0->factor = floatval($factor); $aum0->peso = floatval($peso); $aum0->base = $base ? TRUE : FALSE; if ($aum0->save()) { $this->new_message('¡Unidad de medida agregada correctamente!'); } else { $this->new_error_msg('Ocurrio un error al tratar de agregar la unidad de medida, por favor revise los datos ingresados'); } } elseif ($accion == 'eliminar') { $unidadmedida = filter_input(INPUT_POST, 'id'); $aum0 = $this->articulo_unidadmedida->getOne($unidadmedida, $this->articulo->referencia); if ($aum0) { if ($aum0->delete()) { $this->new_message('¡Unidad de medida eliminada correctamente!'); } else { $this->new_error_msg('Ocurrio un error al tratar de eliminar la unidad de medida.'); } } } if ($this->articulo) { $this->articulo_um_lista = $this->articulo_unidadmedida->get($this->articulo->referencia); } }
public function top_articulo_albpro() { $toplist = $this->cache->get('albpro_top_articulos'); if (!$toplist) { $articulo = new articulo(); $lineas = $this->db->select_limit("SELECT referencia, SUM(cantidad) as compras\n FROM lineasalbaranesprov GROUP BY referencia ORDER BY compras DESC", FS_ITEM_LIMIT, 0); if ($lineas) { foreach ($lineas as $l) { $art0 = $articulo->get($l['referencia']); if ($art0) { $toplist[] = array($art0, intval($l['compras'])); } } } $this->cache->set('albpro_top_articulos', $toplist); } return $toplist; }
protected function process() { $articulo = new articulo(); $this->articulos = array(); $this->hoy = !isset($_GET['ayer']); if (isset($_GET['ayer'])) { $this->hoy = FALSE; $fecha = date("d-m-Y", strtotime("-1 day")); } else { $this->hoy = TRUE; $fecha = date("d-m-Y"); } /// leemos directamente de la base de datos $data = $this->db->select("SELECT referencia, SUM(cantidad) as cantidad, AVG(pvptotal/cantidad) as precio\n FROM lineasalbaranescli WHERE idalbaran IN (SELECT idalbaran FROM albaranescli WHERE fecha = " . $articulo->var2str($fecha) . ")\n GROUP BY referencia ORDER BY referencia ASC;"); if ($data) { foreach ($data as $d) { $art0 = $articulo->get($d['referencia']); if ($art0) { $this->articulos[] = array('referencia' => $d['referencia'], 'url' => $art0->url(), 'descripcion' => $art0->descripcion, 'cantidad' => $d['cantidad'], 'precio' => $d['precio']); } } } }
function ListarCarroTrans($seleccion) { global $action; //Creamos template $ot = getTemplate("ListadoMultiAlmacenSeleccion"); if (!$ot) { error(__FILE__ . __LINE__, "Info: template no encontrado"); return false; } $articulo = new articulo(); $tamPagina = $ot->getPagina(); $indice = getSesionDato("PaginadorSeleccionAlmacen"); $num = 0; $salta = 0; $ot->resetSeries(array("Unidades", "PrecioVenta", "IdProducto", "Nombre", "Referencia", "NombreComercial", "Comprar", "marcatrans", "iconos")); foreach ($seleccion as $idarticulo => $unidadesMover) { $salta++; if ($num <= $tamPagina and $salta >= $indice) { $num++; $articulo->Load($idarticulo); $ot->fijarSerie("Referencia", $articulo->get("Referencia")); $ot->fijarSerie("Nombre", $articulo->get("Nombre")); $ot->fijarSerie("Unidades", $articulo->get("Unidades")); $ot->fijarSerie("PrecioVenta", $articulo->get("PrecioVenta")); $ot->fijarSerie("NombreComercial", $articulo->get("NombreComercial")); $ot->fijarSerie("IdProducto", $articulo->get("IdProducto")); $ot->fijarSerie("Comprar", ""); $ot->fijarSerie("Traspasar", ""); $ot->fijarSerie("transid", $idarticulo); $ot->fijarSerie("iconos", $articulo->Iconos()); $ot->fijarSerie("UMover", $unidadesMover); } } $ot->paginador($indice, false, $num); $ot->fijar("action", $action); $ot->terminaSerie(); echo $ot->Output(); //echo "hi! '$num'"; }
private function generar_albaran() { $albaran = new albaran_proveedor(); $albaran->cifnif = $this->pedido->cifnif; $albaran->codagente = $this->pedido->codagente; $albaran->codalmacen = $this->pedido->codalmacen; $albaran->codproveedor = $this->pedido->codproveedor; $albaran->coddivisa = $this->pedido->coddivisa; $albaran->tasaconv = $this->pedido->tasaconv; $albaran->codpago = $this->pedido->codpago; $albaran->codserie = $this->pedido->codserie; $albaran->neto = $this->pedido->neto; $albaran->nombre = $this->pedido->nombre; $albaran->observaciones = $this->pedido->observaciones; $albaran->total = $this->pedido->total; $albaran->totaliva = $this->pedido->totaliva; $albaran->numproveedor = $this->pedido->numproveedor; $albaran->irpf = $this->pedido->irpf; $albaran->totalirpf = $this->pedido->totalirpf; $albaran->totalrecargo = $this->pedido->totalrecargo; /** * Obtenemos el ejercicio para la fecha seleccionada. */ $eje0 = $this->ejercicio->get_by_fecha($_POST['aprobar'], FALSE); if ($eje0) { $albaran->fecha = $_POST['aprobar']; $albaran->codejercicio = $eje0->codejercicio; } if (!$eje0) { $this->new_error_msg("Ejercicio no encontrado o está cerrado."); } else { if (!$eje0->abierto()) { $this->new_error_msg("El ejercicio está cerrado."); } else { if ($albaran->save()) { $continuar = TRUE; $art0 = new articulo(); foreach ($this->pedido->get_lineas() as $l) { $n = new linea_albaran_proveedor(); $n->idlineapedido = $l->idlinea; $n->idpedido = $l->idpedido; $n->idalbaran = $albaran->idalbaran; $n->cantidad = $l->cantidad; $n->codimpuesto = $l->codimpuesto; $n->descripcion = $l->descripcion; $n->dtopor = $l->dtopor; $n->irpf = $l->irpf; $n->iva = $l->iva; $n->pvpsindto = $l->pvpsindto; $n->pvptotal = $l->pvptotal; $n->pvpunitario = $l->pvpunitario; $n->recargo = $l->recargo; $n->referencia = $l->referencia; if ($n->save()) { /// añadimos al stock if (!is_null($n->referencia)) { $articulo = $art0->get($n->referencia); if ($articulo) { $articulo->sum_stock($albaran->codalmacen, $l->cantidad, isset($_POST['costemedio'])); } } } else { $continuar = FALSE; $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! "); break; } } if ($continuar) { $this->pedido->idalbaran = $albaran->idalbaran; $this->pedido->editable = FALSE; if ($this->pedido->save()) { $this->new_message("<a href='" . $albaran->url() . "'>" . ucfirst(FS_ALBARAN) . '</a> generado correctamente.'); } else { $this->new_error_msg("¡Imposible vincular el " . FS_PEDIDO . " con el nuevo " . FS_ALBARAN . "!"); if ($albaran->delete()) { $this->new_error_msg("El " . FS_ALBARAN . " se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!"); } } } else { if ($albaran->delete()) { $this->new_error_msg("El " . FS_ALBARAN . " se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_ALBARAN . "!"); } } } }
private function modificar() { $this->presupuesto->observaciones = $_POST['observaciones']; $this->presupuesto->numero2 = $_POST['numero2']; if ($this->presupuesto->editable) { $eje0 = $this->ejercicio->get_by_fecha($_POST['fecha'], FALSE); if (!$eje0) { $this->new_error_msg('Ningún ejercicio encontrado.'); } else { $this->presupuesto->fecha = $_POST['fecha']; $this->presupuesto->hora = $_POST['hora']; $this->presupuesto->finoferta = NULL; if ($_POST['finoferta'] != '') { $this->presupuesto->finoferta = $_POST['finoferta']; } } /// ¿cambiamos el cliente? if ($_POST['cliente'] != $this->presupuesto->codcliente) { $cliente = $this->cliente->get($_POST['cliente']); if ($cliente) { foreach ($cliente->get_direcciones() as $d) { if ($d->domfacturacion) { $this->presupuesto->codcliente = $cliente->codcliente; $this->presupuesto->cifnif = $cliente->cifnif; $this->presupuesto->nombrecliente = $cliente->razonsocial; $this->presupuesto->apartado = $d->apartado; $this->presupuesto->ciudad = $d->ciudad; $this->presupuesto->coddir = $d->id; $this->presupuesto->codpais = $d->codpais; $this->presupuesto->codpostal = $d->codpostal; $this->presupuesto->direccion = $d->direccion; $this->presupuesto->provincia = $d->provincia; break; } } } else { die('No se ha encontrado el cliente.'); } } else { $this->presupuesto->nombrecliente = $_POST['nombrecliente']; $this->presupuesto->cifnif = $_POST['cifnif']; $this->presupuesto->codpais = $_POST['codpais']; $this->presupuesto->provincia = $_POST['provincia']; $this->presupuesto->ciudad = $_POST['ciudad']; $this->presupuesto->codpostal = $_POST['codpostal']; $this->presupuesto->direccion = $_POST['direccion']; $cliente = $this->cliente->get($this->presupuesto->codcliente); } $serie = $this->serie->get($this->presupuesto->codserie); /// ¿cambiamos la serie? if ($_POST['serie'] != $this->presupuesto->codserie) { $serie2 = $this->serie->get($_POST['serie']); if ($serie2) { $this->presupuesto->codserie = $serie2->codserie; $this->presupuesto->new_codigo(); $serie = $serie2; } } $this->presupuesto->codpago = $_POST['forma_pago']; /// ¿Cambiamos la divisa? if ($_POST['divisa'] != $this->presupuesto->coddivisa) { $divisa = $this->divisa->get($_POST['divisa']); if ($divisa) { $this->presupuesto->coddivisa = $divisa->coddivisa; $this->presupuesto->tasaconv = $divisa->tasaconv; } } else { if ($_POST['tasaconv'] != '') { $this->presupuesto->tasaconv = floatval($_POST['tasaconv']); } } if (isset($_POST['numlineas'])) { $numlineas = intval($_POST['numlineas']); $this->presupuesto->neto = 0; $this->presupuesto->totaliva = 0; $this->presupuesto->totalirpf = 0; $this->presupuesto->totalrecargo = 0; $this->presupuesto->irpf = 0; $lineas = $this->presupuesto->get_lineas(); $articulo = new articulo(); /// eliminamos las líneas que no encontremos en el $_POST foreach ($lineas as $l) { $encontrada = FALSE; for ($num = 0; $num <= $numlineas; $num++) { if (isset($_POST['idlinea_' . $num])) { if ($l->idlinea == intval($_POST['idlinea_' . $num])) { $encontrada = TRUE; break; } } } if (!$encontrada) { if (!$l->delete()) { $this->new_error_msg("¡Imposible eliminar la línea del artículo " . $l->referencia . "!"); } } } /// modificamos y/o añadimos las demás líneas for ($num = 0; $num <= $numlineas; $num++) { $encontrada = FALSE; if (isset($_POST['idlinea_' . $num])) { foreach ($lineas as $k => $value) { /// modificamos la línea if ($value->idlinea == intval($_POST['idlinea_' . $num])) { $encontrada = TRUE; $lineas[$k]->cantidad = floatval($_POST['cantidad_' . $num]); $lineas[$k]->pvpunitario = floatval($_POST['pvp_' . $num]); $lineas[$k]->dtopor = floatval($_POST['dto_' . $num]); $lineas[$k]->pvpsindto = $value->cantidad * $value->pvpunitario; $lineas[$k]->pvptotal = $value->cantidad * $value->pvpunitario * (100 - $value->dtopor) / 100; $lineas[$k]->descripcion = $_POST['desc_' . $num]; $lineas[$k]->codimpuesto = NULL; $lineas[$k]->iva = 0; $lineas[$k]->recargo = 0; $lineas[$k]->irpf = floatval($_POST['irpf_' . $num]); if (!$serie->siniva and $cliente->regimeniva != 'Exento') { $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $num]); if ($imp0) { $lineas[$k]->codimpuesto = $imp0->codimpuesto; } $lineas[$k]->iva = floatval($_POST['iva_' . $num]); $lineas[$k]->recargo = floatval($_POST['recargo_' . $num]); } if ($lineas[$k]->save()) { $this->presupuesto->neto += $value->pvptotal; $this->presupuesto->totaliva += $value->pvptotal * $value->iva / 100; $this->presupuesto->totalirpf += $value->pvptotal * $value->irpf / 100; $this->presupuesto->totalrecargo += $value->pvptotal * $value->recargo / 100; if ($value->irpf > $this->presupuesto->irpf) { $this->presupuesto->irpf = $value->irpf; } } else { $this->new_error_msg("¡Imposible modificar la línea del artículo " . $value->referencia . "!"); } break; } } /// añadimos la línea if (!$encontrada and intval($_POST['idlinea_' . $num]) == -1 and isset($_POST['referencia_' . $num])) { $linea = new linea_presupuesto_cliente(); $linea->idpresupuesto = $this->presupuesto->idpresupuesto; $linea->descripcion = $_POST['desc_' . $num]; if (!$serie->siniva and $cliente->regimeniva != 'Exento') { $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $num]); if ($imp0) { $linea->codimpuesto = $imp0->codimpuesto; } $linea->iva = floatval($_POST['iva_' . $num]); $linea->recargo = floatval($_POST['recargo_' . $num]); } $linea->irpf = floatval($_POST['irpf_' . $num]); $linea->cantidad = floatval($_POST['cantidad_' . $num]); $linea->pvpunitario = floatval($_POST['pvp_' . $num]); $linea->dtopor = floatval($_POST['dto_' . $num]); $linea->pvpsindto = $linea->cantidad * $linea->pvpunitario; $linea->pvptotal = $linea->cantidad * $linea->pvpunitario * (100 - $linea->dtopor) / 100; $art0 = $articulo->get($_POST['referencia_' . $num]); if ($art0) { $linea->referencia = $art0->referencia; } if ($linea->save()) { $this->presupuesto->neto += $linea->pvptotal; $this->presupuesto->totaliva += $linea->pvptotal * $linea->iva / 100; $this->presupuesto->totalirpf += $linea->pvptotal * $linea->irpf / 100; $this->presupuesto->totalrecargo += $linea->pvptotal * $linea->recargo / 100; if ($linea->irpf > $this->presupuesto->irpf) { $this->presupuesto->irpf = $linea->irpf; } } else { $this->new_error_msg("¡Imposible guardar la línea del artículo " . $linea->referencia . "!"); } } } } /// redondeamos $this->presupuesto->neto = round($this->presupuesto->neto, FS_NF0); $this->presupuesto->totaliva = round($this->presupuesto->totaliva, FS_NF0); $this->presupuesto->totalirpf = round($this->presupuesto->totalirpf, FS_NF0); $this->presupuesto->totalrecargo = round($this->presupuesto->totalrecargo, FS_NF0); $this->presupuesto->total = $this->presupuesto->neto + $this->presupuesto->totaliva - $this->presupuesto->totalirpf + $this->presupuesto->totalrecargo; if (abs(floatval($_POST['atotal']) - $this->presupuesto->total) >= 0.02) { $this->new_error_msg("El total difiere entre el controlador y la vista (" . $this->presupuesto->total . " frente a " . $_POST['atotal'] . "). Debes informar del error."); } } } if ($this->presupuesto->save()) { $this->new_message(ucfirst(FS_PRESUPUESTO) . " modificado correctamente."); $this->new_change(ucfirst(FS_PRESUPUESTO) . ' Cliente ' . $this->presupuesto->codigo, $this->presupuesto->url()); } else { $this->new_error_msg("¡Imposible modificar el " . FS_PRESUPUESTO . "!"); } }
public function get_tarifas_articulo($ref) { $tarlist = array(); $articulo = new articulo(); $tarifa = new tarifa(); foreach ($tarifa->all() as $tar) { $art = $articulo->get($ref); if ($art) { $art->dtopor = 0; $aux = array($art); $tar->set_precios($aux); $tarlist[] = $aux[0]; } } return $tarlist; }
/** * @param asiento $asiento * @param divisa $divisa * @param fs_controller $controller * * @return bool Status de la importacion de las cajas */ public static function importar_caja(asiento $asiento, divisa $divisa, fs_controller $controller) { $art = new articulo(); $continuar = true; /** @var caja[] $cajas_importadas */ $cajas_importadas = array(); foreach ($_POST['cajas'] as $idcaja) { $caja = caja::get($idcaja); // Lo primero que tiene que haber en el asiento es una linea con el monto de la caja importada // Cuando importe muchas, lo que va a haber es una sola linea con el total de cajas contabilidad_asiento::add_partida($asiento, $divisa, '110101001', array('debe' => $caja->dinero_fin, 'haber' => 0, 'comprobante' => '<a hreh="' . $caja->url() . '">Caja #' . $caja->id . '</a>,')); foreach ($caja->get_recibos() as $recibo) { $factura = $recibo->getFactura(); // Obtengo las lineas de la factura $lineas = $factura->get_lineas(); // Después de acuerdo a la forma de pago del recibo tengo que agregar el pago a cada una de las cuentas switch ($recibo->codpago) { case 'CONT': // TODO: Cuando es de contado, a que cuenta va? break; case 'DBT MACRO': contabilidad_asiento::add_partida($asiento, $divisa, '110103001', array('debe' => 0, 'haber' => $recibo->importe, 'comprobante' => '')); break; case 'DBT S. RIO': case 'CTA CTE': contabilidad_asiento::add_partida($asiento, $divisa, '110103006', array('debe' => 0, 'haber' => $recibo->importe, 'comprobante' => '')); break; case 'TRF': case 'CHQ': case 'DEP': contabilidad_asiento::add_partida($asiento, $divisa, '110103003', array('debe' => 0, 'haber' => $recibo->importe, 'comprobante' => '')); break; case 'TC': case 'TD': contabilidad_asiento::add_partida($asiento, $divisa, '1102010000', array('debe' => 0, 'haber' => $recibo->importe, 'comprobante' => '')); break; default: $controller->new_error_msg("La forma de pago no está configurada para ser importada!"); break; } // Después de eso viene la parte "compleja": // Si la factura del recibo está pagada if ($factura->pagada) { // El monto total de la factura es igual al del recibo? if ($recibo->importe === $factura->total) { // tomamos todos los articulos y los importamos de acuerdo a la subcuenta de venta // que está declarada en cada articulo (este es el caso "normal", como por ejemplo // el de las COMIDAS_PERSONAL foreach ($lineas as $linea) { $articulo = $art->get($linea->referencia); // Si no hay articulo tengo un grave problema if ($articulo && $articulo->codsubcuentaven) { contabilidad_asiento::add_partida($asiento, $divisa, $articulo->codsubcuentaven, array('debe' => 0, 'haber' => $linea->pvptotal, 'comprobante' => '')); } else { $controller->new_error_msg('La factura: <a href="' . $factura->url() . '">#' . $factura->numero . '</a> tiene un un artículo inexistente: ' . $linea->referencia . 'o el artículo no tiene configurada la cuenta a la que deve ser cargada'); } } } else { // Si la factura está paga pero los totales difieren // Eso quiere decir que los pagos están dispersos entre varias cajas, por lo que tengo que // importar solamente el monto del recibo // si el artículo que tiene soalemente es una reserva if (count($lineas) === 1 && $lineas[0]->referencia === 'Reserva') { // se agrega la partida a la subcuenta 210101003 contabilidad_asiento::add_partida($asiento, $divisa, '210101003', array('debe' => 0, 'haber' => $recibo->importe, 'comprobante' => '')); contabilidad_asiento::add_partida($asiento, $divisa, '410101001', array('debe' => 0, 'haber' => $factura->total, 'comprobante' => '')); } else { // No se que hacer en estos casos $controller->new_error_msg('La factura <a href="' . $factura->url() . '">#' . $factura->numero . '</a> está paga pero el importe está distribuido y contiene otros articulos que no' . ', por lo que no puede ser importada en un asiento contable por favor ignore la caja #' . $caja->id); $continuar = false; } } } else { // Si la factura no está paga y el artículo es una reserva // entonces los recibos van a la subcuenta 210101003 if (count($lineas) === 1 && $lineas[0]->referencia === 'Reserva') { contabilidad_asiento::add_partida($asiento, $divisa, '210101003', array('debe' => 0, 'haber' => $recibo->importe, 'comprobante' => '')); } else { //No se que hacer en estos casos $controller->new_error_msg('La factura <a href="' . $factura->url() . '">#' . $factura->numero . '</a> no está paga y contiene otros articulos que no son una reserva, por lo que no ' . ' puede ser importada en un asiento contable por favor ignore la caja #' . $caja->id); $continuar = false; } } } if ($continuar) { $cajas_importadas[] = $caja; } } // Si todas las cajas fueron importadas correctamente if ($continuar) { // Guardo las partidas asociadas al asiento en la BBDD foreach (contabilidad_asiento::$partidas as $subcuenta => $partida) { // Creamos una nueva partida $part = new partida(); // Cargamos los valores en la partida foreach ($partida as $name => $value) { if (property_exists($part, $name)) { $part->{$name} = $value; } } $part->referencia = 'Caja importada el ' . date('Y-m-d H:i:s') . ' por ' . $controller->user->get_agente()->get_fullname(); // Al guardar la partida se actualiza automáticamente los valores de la subcuenta // Y el monto del asiento if ($part->save()) { $continuar = $continuar && true; } else { $continuar = false; } } if ($continuar) { foreach ($cajas_importadas as $caja) { $caja->setIdAsiento($asiento->idasiento); if (!$caja->save()) { $controller->new_error_msg("Error al actualizar la caja #" . $caja->id); $continuar = $continuar && true; } else { $continuar = false; } } if ($continuar) { $controller->new_message('Cajas importada correctamente'); } else { $controller->new_error_msg('Hubo algún error al vincular el asiento con las cajas'); } } else { // Creo que acá tendría que hacer rollback de toda la transacción $controller->new_error_msg("Error al guardar una partida al asiento"); } } else { $controller->new_error_msg("Error al importar cajas"); } return $continuar; }
function TrasladoBrutal($Motivo) { $IdComprobante = $this->_IdComprobante; $IdPedido = $this->_IdPedido; $linea = 0; $totalimporte = 0; $Origen = $this->_origen; $Destino = $this->_destino; $igv = getSesionDato("IGV"); $marcadotrans = getSesionDato("CarritoTrans"); $Trans = getSesionDato("CarritoMover"); $aSeries = getSesionDato("CarritoMoverSeries"); $almacenes = new almacenes(); $articulo = new articulo(); foreach ($marcadotrans as $idarticulo) { $oProducto = new producto(); $articulo->Load($idarticulo); $oProducto->Load($articulo->get("IdProducto")); $cantidad = 0; $idproducto = $articulo->get("IdProducto"); $precio = round($Trans['Precio' . $idarticulo], 2); $costo = round($Trans['Costo' . $idarticulo], 2); $mSeleccion = $Trans[$idarticulo]; $aSeleccion = explode("~", $mSeleccion); $esSerie = $aSeries[$idarticulo] ? true : false; foreach ($aSeleccion as $Pedido) { $aPedido = explode(":", $Pedido); $IdPedidoDet = $aPedido[0]; //Kardex $cantidad = $aPedido[1]; $LoteVence = isset($aPedido[3]) ? $aPedido[3] : 0; $totalimporte += $precio * $cantidad; $existencias = $almacenes->obtenerExistenciasKardex($idproducto, $Origen); //Control if ($existencias < $cantidad) { return; } //Ventas $IdComprobanteDet = registrarDetalleTrasladoSalida($idproducto, $cantidad, $costo, $precio, $IdComprobante, $IdPedidoDet, $esSerie, $LoteVence); //Compras $nwIdPedidoDet = registrarDetalleTrasladoEntrada($IdPedido, $idproducto, $LoteVence, $cantidad, $costo, $precio, $esSerie); //Numeros de Series registrarTrasladoSeries($Origen, $Destino, $IdPedido, $nwIdPedidoDet, $IdPedidoDet, $idarticulo, $idproducto, $IdComprobante); //Kardex registrarTrasladoKardexFifo($Origen, $idproducto, $IdPedidoDet, $IdComprobanteDet, $costo, $cantidad, $existencias, $Motivo); //Kadex costo almacen $almacenes->actualizarCosto($idproducto, $Origen); //Kadex resumen almacen actualizaResumenKardex($idproducto, $Origen); } } //Importes Compras & Ventas registrarImportesTraslado($totalimporte, $IdComprobante, $IdPedido, $Motivo); }
private function delete_factura() { $fact = $this->factura->get($_GET['delete']); if ($fact) { /// ¿Descontamos stock? $art0 = new articulo(); foreach ($fact->get_lineas() as $linea) { if (is_null($linea->idalbaran)) { $articulo = $art0->get($linea->referencia); if ($articulo) { $articulo->sum_stock($fact->codalmacen, 0 - $linea->cantidad, TRUE); } } } if ($fact->delete()) { $this->new_message("Factura de compra " . $fact->codigo . " eliminada correctamente.", TRUE); $this->clean_last_changes(); } else { $this->new_error_msg("¡Imposible eliminar la factura!"); } } else { $this->new_error_msg("Factura no encontrada."); } }
private function agrupar_pedidos() { $continuar = TRUE; $albaran = new albaran_cliente(); $albaran_rellenado = FALSE; $art0 = new articulo(); $num = 0; foreach ($this->resultados as $ped) { foreach ($ped->get_lineas() as $lin) { if (!isset($_POST['idl_' . $num]) or !$continuar) { } else { if ($lin->idlinea == intval($_POST['idl_' . $num])) { if (!$albaran_rellenado) { $albaran->codagente = $this->user->codagente; $albaran->codalmacen = $ped->codalmacen; $albaran->coddivisa = $ped->coddivisa; $albaran->tasaconv = $ped->tasaconv; $albaran->codejercicio = $ped->codejercicio; $albaran->codpago = $ped->codpago; $albaran->codserie = $ped->codserie; $albaran->irpf = $ped->irpf; $albaran->cifnif = $this->cliente->cifnif; $albaran->codcliente = $this->cliente->codcliente; $albaran->nombrecliente = $this->cliente->razonsocial; $albaran->apartado = ''; $albaran->ciudad = ''; $albaran->codpais = $this->empresa->codpais; $albaran->codpostal = ''; $albaran->direccion = ''; $albaran->provincia = ''; foreach ($this->cliente->get_direcciones() as $dir) { if ($dir->domfacturacion) { $albaran->apartado = $dir->apartado; $albaran->ciudad = $dir->ciudad; $albaran->coddir = $dir->id; $albaran->codpais = $dir->codpais; $albaran->codpostal = $dir->codpostal; $albaran->direccion = $dir->direccion; $albaran->provincia = $dir->provincia; break; } } if (!$albaran->save()) { $continuar = FALSE; $this->new_error_msg('Error al agrupar el pedido.'); } $albaran_rellenado = TRUE; } $linea = new linea_albaran_cliente(); $linea->idalbaran = $albaran->idalbaran; $linea->idpedido = $ped->idpedido; $linea->idlineapedido = $lin->idlinea; $linea->referencia = $lin->referencia; $linea->descripcion = $lin->descripcion; $linea->cantidad = floatval($_POST['cantidad_' . $num]); $linea->pvpunitario = $lin->pvpunitario; $linea->codimpuesto = $lin->codimpuesto; $linea->dtopor = $lin->dtopor; $linea->irpf = $lin->irpf; $linea->iva = $lin->iva; $linea->recargo = $lin->recargo; $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad; $linea->pvptotal = $linea->pvpunitario * $linea->cantidad * (100 - $linea->dtopor) / 100; if ($linea->save()) { /// desconamos el stock $articulo = $art0->get($linea->referencia); if ($articulo) { $articulo->sum_stock($albaran->codalmacen, 0 - $linea->cantidad); } $albaran->neto += $linea->pvptotal; $albaran->totaliva += $linea->pvptotal * $linea->iva / 100; $albaran->totalirpf += $linea->pvptotal * $linea->irpf / 100; $albaran->totalrecargo += $linea->pvptotal * $linea->recargo / 100; } else { $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia); $continuar = FALSE; } } } $num++; } if (isset($_POST['aprobado'])) { if (in_array($ped->idpedido, $_POST['aprobado'])) { $ped->editable = FALSE; $ped->idalbaran = $albaran->idalbaran; $ped->status = 1; $ped->save(); } } } if ($continuar) { /// redondeamos $albaran->neto = round($albaran->neto, FS_NF0); $albaran->totaliva = round($albaran->totaliva, FS_NF0); $albaran->totalirpf = round($albaran->totalirpf, FS_NF0); $albaran->totalrecargo = round($albaran->totalrecargo, FS_NF0); $albaran->total = $albaran->neto + $albaran->totaliva - $albaran->totalirpf + $albaran->totalrecargo; if ($albaran->save()) { $this->new_message('<a href="' . $albaran->url() . '">' . ucfirst(FS_ALBARAN) . '</a> generado correctamente.'); } else { $this->new_error_msg('Error al generar el ' . FS_ALBARAN); $albaran->delete(); } } else { if (!is_null($albaran->idalbaran)) { $albaran->delete(); } } }
private function nueva_rectificativa() { $frec = clone $this->factura; $frec->idfactura = NULL; $frec->numero = NULL; $frec->numero2 = NULL; $frec->codigo = NULL; $frec->idasiento = NULL; $frec->idfacturarect = $this->factura->idfactura; $frec->codigorect = $this->factura->codigo; $frec->codserie = $_POST['codserie']; $frec->fecha = $this->today(); $frec->hora = $this->hour(); $frec->observaciones = $_POST['motivo']; $frec->irpf = 0; $frec->neto = 0; $frec->total = 0; $frec->totalirpf = 0; $frec->totaliva = 0; $frec->totalrecargo = 0; $guardar = FALSE; foreach ($this->factura->get_lineas() as $value) { if (isset($_POST['devolver_' . $value->idlinea])) { if (floatval($_POST['devolver_' . $value->idlinea]) > 0) { $guardar = TRUE; } } } if ($guardar) { if ($frec->save()) { $art0 = new articulo(); foreach ($this->factura->get_lineas() as $value) { if (isset($_POST['devolver_' . $value->idlinea])) { if (floatval($_POST['devolver_' . $value->idlinea]) > 0) { $linea = clone $value; $linea->idlinea = NULL; $linea->idfactura = $frec->idfactura; $linea->idalbaran = NULL; $linea->cantidad = 0 - floatval($_POST['devolver_' . $value->idlinea]); $linea->pvpsindto = $linea->cantidad * $linea->pvpunitario; $linea->pvptotal = $linea->cantidad * $linea->pvpunitario * (100 - $linea->dtopor) / 100; if ($linea->save()) { $articulo = $art0->get($linea->referencia); if ($articulo) { $articulo->sum_stock($frec->codalmacen, 0 - $linea->cantidad); } $frec->neto += $linea->pvptotal; $frec->totaliva += $linea->pvptotal * $linea->iva / 100; $frec->totalirpf += $linea->pvptotal * $linea->irpf / 100; $frec->totalrecargo += $linea->pvptotal * $linea->recargo / 100; if ($linea->irpf > $frec->irpf) { $frec->irpf = $linea->irpf; } } } } } /// redondeamos $frec->neto = round($frec->neto, FS_NF0); $frec->totaliva = round($frec->totaliva, FS_NF0); $frec->totalirpf = round($frec->totalirpf, FS_NF0); $frec->totalrecargo = round($frec->totalrecargo, FS_NF0); $frec->total = $frec->neto + $frec->totaliva - $frec->totalirpf + $frec->totalrecargo; if ($frec->save()) { $this->generar_asiento($frec); $this->new_message(FS_FACTURA_RECTIFICATIVA . ' creada correctamente.'); } } else { $this->new_error_msg('Error al guardar la ' . FS_FACTURA_RECTIFICATIVA); } } else { $this->new_advice('Todas las cantidades a devolver están a 0.'); } }
private function generar_albaran() { $albaran = new albaran_cliente(); $albaran->apartado = $this->pedido->apartado; $albaran->automatica = TRUE; $albaran->cifnif = $this->pedido->cifnif; $albaran->ciudad = $this->pedido->ciudad; $albaran->codagente = $this->pedido->codagente; $albaran->codalmacen = $this->pedido->codalmacen; $albaran->codcliente = $this->pedido->codcliente; $albaran->coddir = $this->pedido->coddir; $albaran->coddivisa = $this->pedido->coddivisa; $albaran->tasaconv = $this->pedido->tasaconv; $albaran->codpago = $this->pedido->codpago; $albaran->codpais = $this->pedido->codpais; $albaran->codpostal = $this->pedido->codpostal; $albaran->codserie = $this->pedido->codserie; $albaran->direccion = $this->pedido->direccion; $albaran->editable = TRUE; $albaran->neto = $this->pedido->neto; $albaran->nombrecliente = $this->pedido->nombrecliente; $albaran->observaciones = $this->pedido->observaciones; $albaran->provincia = $this->pedido->provincia; $albaran->total = $this->pedido->total; $albaran->totaliva = $this->pedido->totaliva; $albaran->numero2 = $this->pedido->numero2; $albaran->irpf = $this->pedido->irpf; $albaran->porcomision = $this->pedido->porcomision; $albaran->recfinanciero = $this->pedido->recfinanciero; $albaran->totalirpf = $this->pedido->totalirpf; $albaran->totalrecargo = $this->pedido->totalrecargo; /** * Obtenemos el ejercicio para la fecha de hoy (puede que * no sea el mismo ejercicio que el del pedido, por ejemplo * si hemos cambiado de año) */ $eje0 = $this->ejercicio->get_by_fecha($albaran->fecha); $albaran->codejercicio = $eje0->codejercicio; $regularizacion = new regularizacion_iva(); if (!$eje0->abierto()) { $this->new_error_msg("El ejercicio está cerrado."); } else { if ($regularizacion->get_fecha_inside($albaran->fecha)) { $this->new_error_msg("El IVA de ese periodo ya ha sido regularizado. No se pueden añadir más " . FS_ALBARANES . " en esa fecha."); } else { if ($albaran->save()) { $continuar = TRUE; $art0 = new articulo(); foreach ($this->pedido->get_lineas() as $l) { $n = new linea_albaran_cliente(); $n->idpedido = $l->idpedido; $n->idalbaran = $albaran->idalbaran; $n->cantidad = $l->cantidad; $n->codimpuesto = $l->codimpuesto; $n->descripcion = $l->descripcion; $n->dtolineal = $l->dtolineal; $n->dtopor = $l->dtopor; $n->irpf = $l->irpf; $n->iva = $l->iva; $n->pvpsindto = $l->pvpsindto; $n->pvptotal = $l->pvptotal; $n->pvpunitario = $l->pvpunitario; $n->recargo = $l->recargo; $n->referencia = $l->referencia; if ($n->save()) { /// descontamos del stock if (!is_null($n->referencia)) { $articulo = $art0->get($n->referencia); $articulo->sum_stock($albaran->codalmacen, 0 - $l->cantidad); } } else { $continuar = FALSE; $this->new_error_msg("¡Imposible guardar la línea el artículo " . $n->referencia . "! "); break; } } if ($continuar) { $this->pedido->idalbaran = $albaran->idalbaran; $this->pedido->editable = FALSE; if ($this->pedido->save()) { $this->new_message("<a href='" . $albaran->url() . "'>" . ucfirst(FS_ALBARAN) . '</a> generado correctamente.'); } else { $this->new_error_msg("¡Imposible vincular el " . FS_PEDIDO . " con el nuevo " . FS_ALBARAN . "!"); if ($albaran->delete()) { $this->new_error_msg("El " . FS_ALBARAN . " se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!"); } } } else { if ($albaran->delete()) { $this->new_error_msg("El " . FS_ALBARAN . " se ha borrado."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_ALBARAN . "!"); } } } }
public function get_articulo() { if (is_null($this->referencia)) { return FALSE; } else { $art0 = new \articulo(); return $art0->get($this->referencia); } }
private function informe_facturacion() { $sumar = 'pvptotal'; if ($this->cantidades) { $sumar = 'cantidad'; } $sql = "SELECT l.referencia,f.fecha,SUM(" . $sumar . ") as total" . " FROM " . $this->documento . " f, lineas" . $this->documento . " l" . " WHERE f.idfactura = l.idfactura" . " AND referencia IS NOT NULL AND referencia != ''" . " AND fecha >= " . $this->empresa->var2str($this->desde) . " AND fecha <= " . $this->empresa->var2str($this->hasta); if (is_numeric($this->minimo)) { $sql .= " AND " . $sumar . " >= " . $this->empresa->var2str($this->minimo); } if ($this->codfamilia != '') { $sql .= " AND referencia IN (SELECT referencia FROM articulos" . " WHERE codfamilia IN ("; $coma = ''; foreach ($this->get_subfamilias($this->codfamilia) as $fam) { $sql .= $coma . $this->empresa->var2str($fam); $coma = ','; } $sql .= "))"; } $sql .= " GROUP BY referencia,fecha ORDER BY fecha DESC"; $data = $this->db->select($sql); if ($data) { $this->template = FALSE; header("content-type:application/csv;charset=UTF-8"); header("Content-Disposition: attachment; filename=\"informe_facturacion.csv\""); echo "referencia;descripcion;año;ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;total;%VAR\n"; $stats = array(); foreach ($data as $d) { $anyo = date('Y', strtotime($d['fecha'])); $mes = date('n', strtotime($d['fecha'])); if (!isset($stats[$d['referencia']][$anyo])) { $stats[$d['referencia']][$anyo] = array(1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0, 8 => 0, 9 => 0, 10 => 0, 11 => 0, 12 => 0, 13 => 0, 14 => 0); } $stats[$d['referencia']][$anyo][$mes] += floatval($d['total']); $stats[$d['referencia']][$anyo][13] += floatval($d['total']); } $art0 = new articulo(); foreach ($stats as $i => $value) { /// calculamos la variación $anterior = 0; foreach (array_reverse($value, TRUE) as $j => $value2) { if ($anterior > 0) { $value[$j][14] = $value2[13] * 100 / $anterior - 100; } $anterior = $value2[13]; } foreach ($value as $j => $value2) { $articulo = $art0->get($i); if ($articulo) { echo '"' . $i . '";"' . $this->fix_html($articulo->descripcion()) . '";' . $j; } else { echo '"' . $i . '";"";' . $j; } foreach ($value2 as $value3) { echo ';' . number_format($value3, FS_NF0, ',', ''); } echo "\n"; } echo ";;;;;;;;;;;;;;;;\n"; } } else { $this->new_message('Sin resultados.'); } }
protected function private_core() { $pedido = new pedido_cliente(); $this->agente = new agente(); $this->serie = new serie(); $this->offset = 0; if (isset($_REQUEST['offset'])) { $this->offset = intval($_REQUEST['offset']); } $this->mostrar = 'todo'; if (isset($_GET['mostrar'])) { $this->mostrar = $_GET['mostrar']; setcookie('ventas_ped_mostrar', $this->mostrar, time() + FS_COOKIES_EXPIRE); } else { if (isset($_COOKIE['ventas_ped_mostrar'])) { $this->mostrar = $_COOKIE['ventas_ped_mostrar']; } } $this->order = 'fecha DESC'; if (isset($_GET['order'])) { if ($_GET['order'] == 'fecha_desc') { $this->order = 'fecha DESC'; } else { if ($_GET['order'] == 'fecha_asc') { $this->order = 'fecha ASC'; } else { if ($_GET['order'] == 'codigo_desc') { $this->order = 'codigo DESC'; } else { if ($_GET['order'] == 'codigo_asc') { $this->order = 'codigo ASC'; } } } } setcookie('ventas_ped_order', $this->order, time() + FS_COOKIES_EXPIRE); } else { if (isset($_COOKIE['ventas_ped_order'])) { $this->order = $_COOKIE['ventas_ped_order']; } } if (isset($_POST['buscar_lineas'])) { $this->buscar_lineas(); } else { if (isset($_REQUEST['buscar_cliente'])) { $this->buscar_cliente(); } else { if (isset($_GET['ref'])) { $this->template = 'extension/ventas_pedidos_articulo'; $articulo = new articulo(); $this->articulo = $articulo->get($_GET['ref']); $linea = new linea_pedido_cliente(); $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset); } else { $this->share_extension(); $this->cliente = FALSE; $this->codagente = ''; $this->codserie = ''; $this->desde = ''; $this->hasta = ''; $this->num_resultados = ''; $this->total_resultados = ''; $this->total_resultados_txt = ''; if (isset($_POST['delete'])) { $this->delete_pedido(); } else { if (!isset($_GET['mostrar']) and (isset($_REQUEST['codagente']) or isset($_REQUEST['codcliente']))) { /** * si obtenermos un codagente o un codcliente pasamos direcatemente * a la pestaña de búsqueda, a menos que tengamos un mostrar, que * entonces nos indica donde tenemos que estar. */ $this->mostrar = 'buscar'; } if (isset($_REQUEST['codcliente'])) { if ($_REQUEST['codcliente'] != '') { $cli0 = new cliente(); $this->cliente = $cli0->get($_REQUEST['codcliente']); } } if (isset($_REQUEST['codagente'])) { $this->codagente = $_REQUEST['codagente']; } if (isset($_REQUEST['codserie'])) { $this->codserie = $_REQUEST['codserie']; $this->desde = $_REQUEST['desde']; $this->hasta = $_REQUEST['hasta']; } } /// añadimos segundo nivel de ordenación $order2 = ''; if ($this->order == 'fecha DESC') { $order2 = ', codigo DESC'; } else { if ($this->order == 'fecha ASC') { $order2 = ', codigo ASC'; } } if ($this->mostrar == 'pendientes') { $this->resultados = $pedido->all_ptealbaran($this->offset, $this->order . $order2); if ($this->offset == 0) { $this->total_resultados = 0; $this->total_resultados_txt = 'Suma total de esta página:'; foreach ($this->resultados as $alb) { $this->total_resultados += $alb->total; } } } else { if ($this->mostrar == 'rechazados') { $this->resultados = $pedido->all_rechazados($this->offset, $this->order . $order2); if ($this->offset == 0) { $this->total_resultados = 0; $this->total_resultados_txt = 'Suma total de esta página:'; foreach ($this->resultados as $alb) { $this->total_resultados += $alb->total; } } } else { if ($this->mostrar == 'buscar') { $this->buscar($order2); } else { /// ejecutamos el proceso del cron para pedidos. $pedido->cron_job(); $this->resultados = $pedido->all($this->offset, $this->order . $order2); } } } } } } }
private function delete_albaran() { $alb = new albaran_cliente(); $alb1 = $alb->get($_POST['delete']); if ($alb1) { /// ¿Actualizamos el stock de los artículos? if (isset($_POST['stock'])) { $articulo = new articulo(); foreach ($alb1->get_lineas() as $linea) { $art0 = $articulo->get($linea->referencia); if ($art0) { $art0->sum_stock($alb1->codalmacen, $linea->cantidad); $art0->save(); } } } if ($alb1->delete()) { $this->new_message(FS_ALBARAN . " " . $alb1->codigo . " borrado correctamente."); } else { $this->new_error_msg("¡Imposible borrar el " . FS_ALBARAN . "!"); } } else { $this->new_error_msg("¡" . FS_ALBARAN . " no encontrado!"); } }
private function nuevo_albaran_cliente($p) { // print_r($p); $continuar = TRUE; $respuesta = ""; $cliente = $this->cliente->get($p['cliente']); if (!$cliente) { $respuesta .= 'Cliente no encontrado.'; $continuar = FALSE; } $almacen = $this->almacen->get($p['almacen']); if ($almacen) { } else { $respuesta .= 'Almacén no encontrado.'; $continuar = FALSE; } $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($p['fecha'], FALSE); if (!$ejercicio) { $respuesta .= 'Ejercicio no encontrado.'; $continuar = FALSE; } $serie = $this->serie->get($p['serie']); if (!$serie) { $respuesta .= 'Serie no encontrada.'; $continuar = FALSE; } $forma_pago = $this->forma_pago->get($p['forma_pago']); if ($forma_pago) { } else { $respuesta .= 'Forma de pago no encontrada.'; $continuar = FALSE; } $divisa = $this->divisa->get($p['divisa']); if (!$divisa) { $respuesta .= 'Divisa no encontrada.'; $continuar = FALSE; } $albaran = new albaran_cliente(); if ($continuar) { $albaran->fecha = $p['fecha']; $albaran->hora = $p['hora']; $albaran->codalmacen = $almacen->codalmacen; $albaran->codejercicio = $ejercicio->codejercicio; $albaran->codserie = $serie->codserie; $albaran->codpago = $forma_pago->codpago; $albaran->coddivisa = $divisa->coddivisa; $albaran->tasaconv = $divisa->tasaconv; $albaran->codagente = $this->agente->codagente; $albaran->numero2 = $p['numero2']; $albaran->observaciones = $p['observaciones']; $albaran->porcomision = $this->agente->porcomision; $albaran->codcliente = $cliente->codcliente; $albaran->cifnif = $cliente->cifnif; $albaran->nombrecliente = $cliente->nombre; $direccion = array(); foreach ($cliente->get_direcciones() as $dir) { if ($dir->domfacturacion) { $direccion = $dir; break; } } $albaran->ciudad = $direccion->ciudad; $albaran->codpais = $direccion->codpais; $albaran->codpostal = $direccion->codpostal; $albaran->direccion = $direccion->direccion; $albaran->provincia = $direccion->provincia; if ($albaran->save()) { $art0 = new articulo(); $n = floatval($p['numlineas']); for ($i = 0; $i <= $n; $i++) { if (isset($p['referencia_' . $i])) { $linea = new linea_albaran_cliente(); $linea->idalbaran = $albaran->idalbaran; $linea->descripcion = $p['desc_' . $i]; if (!$serie->siniva and $cliente->regimeniva != 'Exento') { $imp0 = $this->impuesto->get_by_iva($p['iva_' . $i]); if ($imp0) { $linea->codimpuesto = $imp0->codimpuesto; $linea->iva = floatval($p['iva_' . $i]); $linea->recargo = floatval($p['recargo_' . $i]); } else { $linea->iva = floatval($p['iva_' . $i]); $linea->recargo = floatval($p['recargo_' . $i]); } } $linea->irpf = floatval($p['irpf_' . $i]); $linea->pvpunitario = floatval($p['pvp_' . $i]); $linea->cantidad = floatval($p['cantidad_' . $i]); $linea->dtopor = floatval($p['dto_' . $i]); $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad; $linea->pvptotal = floatval($p['neto_' . $i]); $articulo = $art0->get($p['referencia_' . $i]); if ($articulo) { $linea->referencia = $articulo->referencia; } if ($linea->save()) { if ($articulo and isset($p['stock'])) { /// descontamos del stock $articulo->sum_stock($albaran->codalmacen, 0 - $linea->cantidad); } $albaran->neto += $linea->pvptotal; $albaran->totaliva += $linea->pvptotal * $linea->iva / 100; $albaran->totalirpf += $linea->pvptotal * $linea->irpf / 100; $albaran->totalrecargo += $linea->pvptotal * $linea->recargo / 100; if ($linea->irpf > $albaran->irpf) { $albaran->irpf = $linea->irpf; } } else { $respuesta .= "¡Imposible guardar la linea con referencia: " . $linea->referencia; $continuar = FALSE; } } } if ($continuar) { /// redondeamos $albaran->neto = round($albaran->neto, FS_NF0); $albaran->totaliva = round($albaran->totaliva, FS_NF0); $albaran->totalirpf = round($albaran->totalirpf, FS_NF0); $albaran->totalrecargo = round($albaran->totalrecargo, FS_NF0); $albaran->total = $albaran->neto + $albaran->totaliva - $albaran->totalirpf + $albaran->totalrecargo; if ($albaran->save()) { $respuesta .= "Albarán correcto"; } else { $respuesta .= "¡Imposible actualizar el <a href='" . $albaran->url() . "'>" . FS_ALBARAN . "</a>!"; } } else { if ($albaran->delete()) { $respuesta .= FS_ALBARAN . " eliminado correctamente."; } else { $respuesta .= "¡Imposible eliminar el <a href='" . $albaran->url() . "'>" . FS_ALBARAN . "</a>!"; } } } else { $respuesta .= "¡Imposible guardar el " . FS_ALBARAN . "!"; } } return $respuesta; }
private function nuevo_pedido_cliente() { $continuar = TRUE; $cliente = $this->cliente->get($_POST['cliente']); if (!$cliente) { $this->new_error_msg('Cliente no encontrado.'); $continuar = FALSE; } $almacen = $this->almacen->get($_POST['almacen']); if ($almacen) { $this->save_codalmacen($_POST['almacen']); } else { $this->new_error_msg('Almacén no encontrado.'); $continuar = FALSE; } $eje0 = new ejercicio(); $ejercicio = $eje0->get_by_fecha($_POST['fecha']); if (!$ejercicio) { $this->new_error_msg('Ejercicio no encontrado.'); $continuar = FALSE; } $serie = $this->serie->get($_POST['serie']); if (!$serie) { $this->new_error_msg('Serie no encontrada.'); $continuar = FALSE; } $forma_pago = $this->forma_pago->get($_POST['forma_pago']); if ($forma_pago) { $this->save_codpago($_POST['forma_pago']); } else { $this->new_error_msg('Forma de pago no encontrada.'); $continuar = FALSE; } $divisa = $this->divisa->get($_POST['divisa']); if (!$divisa) { $this->new_error_msg('Divisa no encontrada.'); $continuar = FALSE; } $pedido = new pedido_cliente(); if ($this->duplicated_petition($_POST['petition_id'])) { $this->new_error_msg('Petición duplicada. Has hecho doble clic sobre el botón guardar y se han enviado dos peticiones. Mira en <a href="' . $pedido->url() . '">Pedidos</a> para ver si el pedido se ha guardado correctamente.'); $continuar = FALSE; } if ($continuar) { $pedido->fecha = $_POST['fecha']; $pedido->codalmacen = $almacen->codalmacen; $pedido->codejercicio = $ejercicio->codejercicio; $pedido->codserie = $serie->codserie; $pedido->codpago = $forma_pago->codpago; $pedido->coddivisa = $divisa->coddivisa; $pedido->tasaconv = $divisa->tasaconv; if ($_POST['tasaconv'] != '') { $pedido->tasaconv = floatval($_POST['tasaconv']); } $pedido->codagente = $this->agente->codagente; $pedido->observaciones = $_POST['observaciones']; $pedido->numero2 = $_POST['numero2']; $pedido->irpf = $serie->irpf; $pedido->porcomision = $this->agente->porcomision; $pedido->codcliente = $cliente->codcliente; $pedido->cifnif = $cliente->cifnif; $pedido->nombrecliente = $cliente->razonsocial; $pedido->ciudad = $_POST['ciudad']; $pedido->codpais = $_POST['codpais']; $pedido->codpostal = $_POST['codpostal']; $pedido->direccion = $_POST['direccion']; $pedido->provincia = $_POST['provincia']; if ($pedido->save()) { $art0 = new articulo(); $n = floatval($_POST['numlineas']); for ($i = 0; $i <= $n; $i++) { if (isset($_POST['referencia_' . $i])) { $linea = new linea_pedido_cliente(); $linea->idpedido = $pedido->idpedido; $linea->descripcion = $_POST['desc_' . $i]; if (!$serie->siniva and $cliente->regimeniva != 'Exento') { $imp0 = $this->impuesto->get_by_iva($_POST['iva_' . $i]); if ($imp0) { $linea->codimpuesto = $imp0->codimpuesto; $linea->iva = floatval($_POST['iva_' . $i]); $linea->recargo = floatval($_POST['recargo_' . $i]); } else { $linea->iva = floatval($_POST['iva_' . $i]); $linea->recargo = floatval($_POST['recargo_' . $i]); } } $linea->irpf = floatval($_POST['irpf_' . $i]); $linea->pvpunitario = floatval($_POST['pvp_' . $i]); $linea->cantidad = floatval($_POST['cantidad_' . $i]); $linea->dtopor = floatval($_POST['dto_' . $i]); $linea->pvpsindto = $linea->pvpunitario * $linea->cantidad; $linea->pvptotal = floatval($_POST['neto_' . $i]); $articulo = $art0->get($_POST['referencia_' . $i]); if ($articulo) { $linea->referencia = $articulo->referencia; } if ($linea->save()) { $pedido->neto += $linea->pvptotal; $pedido->totaliva += $linea->pvptotal * $linea->iva / 100; $pedido->totalirpf += $linea->pvptotal * $linea->irpf / 100; $pedido->totalrecargo += $linea->pvptotal * $linea->recargo / 100; } else { $this->new_error_msg("¡Imposible guardar la linea con referencia: " . $linea->referencia); $continuar = FALSE; } } } if ($continuar) { /// redondeamos $pedido->neto = round($pedido->neto, FS_NF0); $pedido->totaliva = round($pedido->totaliva, FS_NF0); $pedido->totalirpf = round($pedido->totalirpf, FS_NF0); $pedido->totalrecargo = round($pedido->totalrecargo, FS_NF0); $pedido->total = $pedido->neto + $pedido->totaliva - $pedido->totalirpf + $pedido->totalrecargo; if (abs(floatval($_POST['atotal']) - $pedido->total) >= 0.02) { $this->new_error_msg("El total difiere entre el controlador y la vista (" . $pedido->total . " frente a " . $_POST['atotal'] . "). Debes informar del error."); $pedido->delete(); } else { if ($pedido->save()) { $this->new_message("<a href='" . $pedido->url() . "'>" . ucfirst(FS_PEDIDO) . "</a> guardado correctamente."); $this->new_change(ucfirst(FS_PEDIDO) . " a Cliente " . $pedido->codigo, $pedido->url(), TRUE); if ($_POST['redir'] == 'TRUE') { header('Location: ' . $pedido->url()); } } else { $this->new_error_msg("¡Imposible actualizar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!"); } } } else { if ($pedido->delete()) { $this->new_message(ucfirst(FS_PEDIDO) . " eliminado correctamente."); } else { $this->new_error_msg("¡Imposible eliminar el <a href='" . $pedido->url() . "'>" . FS_PEDIDO . "</a>!"); } } } else { $this->new_error_msg("¡Imposible guardar el " . FS_PEDIDO . "!"); } } }
private function anular_factura() { /// generamos una factura rectificativa a partir de la actual $factura = clone $this->factura; $factura->idfactura = NULL; $factura->numero = NULL; $factura->numero2 = NULL; $factura->codigo = NULL; $factura->idasiento = NULL; $factura->idfacturarect = $this->factura->idfactura; $factura->codigorect = $this->factura->codigo; $factura->codserie = $_POST['codserie']; $factura->fecha = $this->today(); $factura->hora = $this->hour(); $factura->observaciones = $_POST['motivo']; $factura->neto = 0 - $factura->neto; $factura->totalirpf = 0 - $factura->totalirpf; $factura->totaliva = 0 - $factura->totaliva; $factura->totalrecargo = 0 - $factura->totalrecargo; $factura->total = $factura->neto + $factura->totaliva + $factura->totalrecargo - $factura->totalirpf; if ($factura->save()) { $articulo = new articulo(); $error = FALSE; /// copiamos las líneas en negativo foreach ($this->factura->get_lineas() as $lin) { /// actualizamos el stock $art = $articulo->get($lin->referencia); if ($art) { $art->sum_stock($factura->codalmacen, $lin->cantidad); } $lin->idlinea = NULL; $lin->idalbaran = NULL; $lin->idfactura = $factura->idfactura; $lin->cantidad = 0 - $lin->cantidad; $lin->pvpsindto = $lin->pvpunitario * $lin->cantidad; $lin->pvptotal = $lin->pvpunitario * (100 - $lin->dtopor) / 100 * $lin->cantidad; if (!$lin->save()) { $error = TRUE; } } if ($error) { $factura->delete(); $this->new_error_msg('Se han producido errores al crear la ' . FS_FACTURA_RECTIFICATIVA); } else { $this->new_message('<a href="' . $factura->url() . '">' . ucfirst(FS_FACTURA_RECTIFICATIVA) . '</a> creada correctamenmte.'); $this->generar_asiento($factura); $this->factura->anulada = TRUE; $this->factura->save(); } } else { $this->new_error_msg('Error al anular la factura.'); } }