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);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 2
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 8
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 9
0
 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']);
             }
         }
     }
 }
Ejemplo n.º 14
0
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 . "!");
             }
         }
     }
 }
Ejemplo n.º 16
0
 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 . "!");
     }
 }
Ejemplo n.º 17
0
 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;
 }
Ejemplo n.º 19
0
 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);
 }
Ejemplo n.º 20
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 27
0
 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!");
     }
 }
Ejemplo n.º 28
0
 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;
 }
Ejemplo n.º 29
0
 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.');
     }
 }