Ejemplo n.º 1
0
 protected function private_core()
 {
     $this->desde = Date('01-m-Y');
     if (isset($_POST['desde'])) {
         $this->desde = $_POST['desde'];
     }
     $this->hasta = Date('d-m-Y');
     if (isset($_POST['hasta'])) {
         $this->hasta = $_POST['hasta'];
     }
     $this->codproveedor = FALSE;
     if (isset($_POST['codproveedor'])) {
         $this->codproveedor = $_POST['codproveedor'];
         $pro0 = new proveedor();
         $this->proveedor = $pro0->get($this->codproveedor);
     }
     $this->serie = new serie();
     $this->codserie = FALSE;
     if (isset($_POST['codserie'])) {
         $this->codserie = $_POST['codserie'];
     }
     if (isset($_REQUEST['buscar_proveedor'])) {
         $this->buscar_proveedor();
     } else {
         if (isset($_POST['idfactura'])) {
             $this->pagar_facturas();
         } else {
             $this->share_extensions();
         }
     }
     $this->resultados = FALSE;
     if (isset($_POST['desde'])) {
         $this->resultados = $this->buscar_facturas();
     }
 }
 protected function private_core()
 {
     $this->share_extension();
     $this->proveedor = FALSE;
     $this->desde = Date('01-01-Y');
     $this->hasta = Date('t-m-Y');
     $this->resultados = FALSE;
     $this->serie = new serie();
     if (isset($_REQUEST['buscar_proveedor'])) {
         $this->buscar_proveedor();
     } else {
         if (isset($_REQUEST['codproveedor'])) {
             $prov0 = new proveedor();
             $this->proveedor = $prov0->get($_REQUEST['codproveedor']);
             if (isset($_REQUEST['codserie'])) {
                 $this->codserie = $_REQUEST['codserie'];
             }
             if (isset($_REQUEST['desde'])) {
                 $this->desde = $_REQUEST['desde'];
             }
             if (isset($_REQUEST['hasta'])) {
                 $this->hasta = $_REQUEST['hasta'];
             }
             if ($this->proveedor) {
                 $this->resultados = $this->buscar_pedidos();
                 if (isset($_POST['cantidad_0'])) {
                     $this->agrupar_pedidos();
                     $this->resultados = FALSE;
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
 protected function process()
 {
     $this->albaran = FALSE;
     $this->articulo_proveedor = new articulo_proveedor();
     $this->proveedor = FALSE;
     $this->factura = FALSE;
     $this->impuesto = new impuesto();
     if (isset($_REQUEST['albaran']) and isset($_REQUEST['id'])) {
         $alb = new albaran_proveedor();
         $this->albaran = $alb->get($_REQUEST['id']);
         if ($this->albaran) {
             $proveedor = new proveedor();
             $this->proveedor = $proveedor->get($this->albaran->codproveedor);
         }
         if (isset($_POST['email'])) {
             $this->enviar_email('albaran');
         } else {
             $this->generar_pdf_albaran();
         }
     } else {
         if (isset($_REQUEST['factura']) and isset($_REQUEST['id'])) {
             $fac = new factura_proveedor();
             $this->factura = $fac->get($_REQUEST['id']);
             if ($this->factura) {
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($this->factura->codproveedor);
             }
             $this->generar_pdf_factura();
         }
     }
     $this->share_extensions();
 }
Ejemplo n.º 4
0
function getNombreProveedor($idProv)
{
    $oProv = new proveedor();
    if (!$oProv->Load($idProv)) {
        return "???";
    }
    return $oProv->get("NombreComercial");
}
 protected function process()
 {
     $this->factura = new factura_proveedor();
     /// desactivamos la barra de botones
     $this->show_fs_toolbar = FALSE;
     $this->offset = 0;
     if (isset($_GET['offset'])) {
         $this->offset = intval($_GET['offset']);
     }
     if (isset($_POST['buscar_lineas'])) {
         $this->buscar_lineas();
     } else {
         if (isset($_GET['codagente'])) {
             $this->template = 'extension/compras_facturas_agente';
             $agente = new agente();
             $this->agente = $agente->get($_GET['codagente']);
             $this->resultados = $this->factura->all_from_agente($_GET['codagente'], $this->offset);
         } else {
             if (isset($_GET['codproveedor'])) {
                 $this->template = 'extension/compras_facturas_proveedor';
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($_GET['codproveedor']);
                 $this->resultados = $this->factura->all_from_proveedor($_GET['codproveedor'], $this->offset);
             } else {
                 if (isset($_GET['ref'])) {
                     $this->template = 'extension/compras_facturas_articulo';
                     $articulo = new articulo();
                     $this->articulo = $articulo->get($_GET['ref']);
                     $linea = new linea_factura_proveedor();
                     $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset);
                 } else {
                     $this->share_extension();
                     if (isset($_GET['delete'])) {
                         $fact = $this->factura->get($_GET['delete']);
                         if ($fact) {
                             if ($fact->delete()) {
                                 $this->new_message("Factura eliminada correctamente.");
                             } else {
                                 $this->new_error_msg("¡Imposible eliminar la factura!");
                             }
                         } else {
                             $this->new_error_msg("Factura no encontrada.");
                         }
                     }
                     if ($this->query != '') {
                         $this->resultados = $this->factura->search($this->query, $this->offset);
                     } else {
                         if (isset($_GET['sinpagar'])) {
                             $this->resultados = $this->factura->all_sin_pagar($this->offset);
                         } else {
                             $this->resultados = $this->factura->all($this->offset);
                         }
                     }
                 }
             }
         }
     }
 }
 protected function private_core()
 {
     $this->articulo_proveedor = new articulo_proveedor();
     $this->cliente = FALSE;
     $this->impuesto = new impuesto();
     $this->pedido = FALSE;
     $this->presupuesto = FALSE;
     $this->proveedor = FALSE;
     /// obtenemos los datos de configuración de impresión
     $this->impresion = array('print_ref' => '1', 'print_dto' => '1', 'print_alb' => '0');
     $fsvar = new fs_var();
     $this->impresion = $fsvar->array_get($this->impresion, FALSE);
     if (isset($_REQUEST['pedido_p']) and isset($_REQUEST['id'])) {
         $ped = new pedido_proveedor();
         $this->pedido = $ped->get($_REQUEST['id']);
         if ($this->pedido) {
             $proveedor = new proveedor();
             $this->proveedor = $proveedor->get($this->pedido->codproveedor);
         }
         if (isset($_POST['email'])) {
             $this->enviar_email_proveedor('pedio');
         } else {
             $this->generar_pdf_pedido_proveedor();
         }
     } else {
         if (isset($_REQUEST['pedido']) and isset($_REQUEST['id'])) {
             $ped = new pedido_cliente();
             $this->pedido = $ped->get($_REQUEST['id']);
             if ($this->pedido) {
                 $cliente = new cliente();
                 $this->cliente = $cliente->get($this->pedido->codcliente);
             }
             if (isset($_POST['email'])) {
                 $this->enviar_email('pedio');
             } else {
                 $this->generar_pdf_pedido();
             }
         } else {
             if (isset($_REQUEST['presupuesto']) and isset($_REQUEST['id'])) {
                 $pres = new presupuesto_cliente();
                 $this->presupuesto = $pres->get($_REQUEST['id']);
                 if ($this->presupuesto) {
                     $cliente = new cliente();
                     $this->cliente = $cliente->get($this->presupuesto->codcliente);
                 }
                 if (isset($_POST['email'])) {
                     $this->enviar_email('presupuesto');
                 } else {
                     $this->generar_pdf_presupuesto();
                 }
             }
         }
     }
     $this->share_extensions();
 }
 protected function process()
 {
     $this->albaran = FALSE;
     $this->articulo_proveedor = new articulo_proveedor();
     $this->proveedor = FALSE;
     $this->factura = FALSE;
     $this->impuesto = new impuesto();
     $this->fecha_hoy = Date('d-m-Y');
     if (isset($_REQUEST['albaran']) and isset($_REQUEST['id'])) {
         $alb = new albaran_proveedor();
         $this->albaran = $alb->get($_REQUEST['id']);
         if ($this->albaran) {
             $proveedor = new proveedor();
             $this->proveedor = $proveedor->get($this->albaran->codproveedor);
         }
         if (isset($_POST['email'])) {
             $this->enviar_email('albaran');
         } else {
             $this->generar_pdf_albaran();
         }
     } else {
         if (isset($_REQUEST['factura']) and isset($_REQUEST['id'])) {
             $fac = new factura_proveedor();
             $this->factura = $fac->get($_REQUEST['id']);
             if ($this->factura) {
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($this->factura->codproveedor);
             }
             $this->generar_pdf_factura();
         } else {
             if (isset($_REQUEST['ordenes'])) {
                 if ($_GET['forma'] == '1') {
                     $desde = $_GET['desde'];
                     $hasta = $_GET['hasta'];
                     $proveedor = $_GET['proveedor'];
                     $codproveedor = $_GET['codproveedor'];
                     $this->imprimir_ordenes($desde, $hasta, $proveedor, $codproveedor);
                 } else {
                     if (isset($_GET['forma']) == 2) {
                         $idorden = $_GET['idorden'];
                         $this->imprimir_ordenes_indiv($idorden);
                     }
                 }
             } else {
                 if (isset($_REQUEST['anticipos'])) {
                     $idanticipo = $_GET['idanticipo'];
                     $this->imprimir_anticipo($idanticipo);
                 }
             }
         }
     }
     $this->share_extensions();
 }
 protected function private_core()
 {
     $this->albaran = new albaran_proveedor();
     $this->codserie = $this->empresa->codserie;
     $this->ejercicio = new ejercicio();
     $this->forma_pago = new forma_pago();
     $this->proveedor = FALSE;
     $this->serie = new serie();
     $this->neto = 0;
     $this->total = 0;
     $this->desde = Date('01-01-Y');
     $this->hasta = Date('t-m-Y');
     if (isset($_REQUEST['buscar_proveedor'])) {
         $this->buscar_proveedor();
     } else {
         if (isset($_POST['idalbaran'])) {
             $this->proveedor = new proveedor();
             $this->agrupar();
         } else {
             if (isset($_REQUEST['codproveedor'])) {
                 $pr0 = new proveedor();
                 $this->proveedor = $pr0->get($_REQUEST['codproveedor']);
                 if (isset($_REQUEST['codserie'])) {
                     $this->codserie = $_REQUEST['codserie'];
                 }
                 if (isset($_REQUEST['desde'])) {
                     $this->desde = $_REQUEST['desde'];
                 }
                 if (isset($_REQUEST['hasta'])) {
                     $this->hasta = $_REQUEST['hasta'];
                 }
                 /// el desde no puede ser mayor que el hasta
                 if (strtotime($this->desde) > strtotime($this->hasta)) {
                     $this->hasta = $this->desde;
                 }
                 if ($this->proveedor) {
                     $this->resultados = $this->albaran->search_from_proveedor($this->proveedor->codproveedor, $this->desde, $this->hasta, $this->codserie);
                     if ($this->resultados) {
                         foreach ($this->resultados as $alb) {
                             $this->neto += $alb->neto;
                             $this->total += $alb->total;
                         }
                     }
                 }
             } else {
                 $this->share_extensions();
             }
         }
     }
 }
 protected function process()
 {
     $albaran = new albaran_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_albaranes_agente';
             $agente = new agente();
             $this->agente = $agente->get($_GET['codagente']);
             $this->resultados = $albaran->all_from_agente($_GET['codagente'], $this->offset);
         } else {
             if (isset($_GET['codproveedor'])) {
                 $this->template = 'extension/compras_albaranes_proveedor';
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($_GET['codproveedor']);
                 $this->resultados = $albaran->all_from_proveedor($_GET['codproveedor'], $this->offset);
             } else {
                 if (isset($_GET['ref'])) {
                     $this->template = 'extension/compras_albaranes_articulo';
                     $articulo = new articulo();
                     $this->articulo = $articulo->get($_GET['ref']);
                     $linea = new linea_albaran_proveedor();
                     $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset);
                 } else {
                     $this->share_extension();
                     if (isset($_POST['delete'])) {
                         $this->delete_albaran();
                     }
                     if ($this->query != '') {
                         $this->resultados = $albaran->search($this->query, $this->offset);
                     } else {
                         if (isset($_GET['ptefactura'])) {
                             $this->resultados = $albaran->all_ptefactura($this->offset);
                         } else {
                             $this->resultados = $albaran->all($this->offset);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 10
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.º 11
0
 protected function private_core()
 {
     $this->share_extension();
     $this->documentos = array();
     if (isset($_GET['folder']) and isset($_GET['cod'])) {
         //Primero cargamos el proveedor o cliente segun sea
         if ($_GET['folder'] == 'proveedor') {
             $proveedor = new proveedor();
             $this->proveedor = $proveedor->get($_GET['cod']);
             $this->cod = $_GET['cod'];
         } else {
             $cliente = new cliente();
             $this->cliente = $cliente->get($_GET['cod']);
             $this->cod = $_GET['cod'];
         }
         //Luego si no existen documentos crea directorios
         if (!file_exists('tmp/' . FS_TMP_NAME . 'documentos_procli')) {
             mkdir('tmp/' . FS_TMP_NAME . 'documentos_procli');
         }
         if (!file_exists('tmp/' . FS_TMP_NAME . 'documentos_procli/' . $_GET['folder'])) {
             mkdir('tmp/' . FS_TMP_NAME . 'documentos_procli/' . $_GET['folder']);
         }
         //PAra subir archivos
         if (isset($_POST['upload'])) {
             if (is_uploaded_file($_FILES['fdocumento']['tmp_name'])) {
                 if (!file_exists('tmp/' . FS_TMP_NAME . 'documentos_procli/' . $_GET['folder'] . '/' . $this->cod)) {
                     mkdir('tmp/' . FS_TMP_NAME . 'documentos_procli/' . $_GET['folder'] . '/' . $this->cod);
                 }
                 copy($_FILES['fdocumento']['tmp_name'], "tmp/" . FS_TMP_NAME . "documentos_procli/" . $_GET['folder'] . '/' . $this->cod . '/' . $_FILES['fdocumento']['name']);
                 $this->new_message('Documentos añadido correctamente.');
             }
         } else {
             if (isset($_GET['delete'])) {
                 if (file_exists('tmp/' . FS_TMP_NAME . 'documentos_procli/' . $_GET['folder'] . '/' . $this->cod . '/' . $_GET['delete'])) {
                     if (unlink('tmp/' . FS_TMP_NAME . 'documentos_procli/' . $_GET['folder'] . '/' . $this->cod . '/' . $_GET['delete'])) {
                         $this->new_message('Archivo ' . $_GET['delete'] . ' eliminado correctamente.');
                     } else {
                         $this->new_error_msg('Error al eliminar el archivo ' . $_GET['delete'] . '.');
                     }
                 } else {
                     $this->new_error_msg('Archivo no encontrado.');
                 }
             }
         }
         //Si no finalmente enseñamos todos los documentos para este cliente o proveedor
         $this->documentos = $this->get_documentos();
     }
 }
 protected function private_core()
 {
     $this->albaran = new albaran_proveedor();
     $this->codserie = NULL;
     $this->forma_pago = new forma_pago();
     $this->proveedor = FALSE;
     $this->serie = new serie();
     $this->neto = 0;
     $this->total = 0;
     $this->desde = Date('01-01-Y');
     $this->hasta = Date('t-m-Y');
     if (isset($_REQUEST['buscar_proveedor'])) {
         $this->buscar_proveedor();
     } else {
         if (isset($_POST['idalbaran'])) {
             $this->proveedor = new proveedor();
             $this->agrupar();
         } else {
             if (isset($_REQUEST['codproveedor'])) {
                 $pr0 = new proveedor();
                 $this->proveedor = $pr0->get($_REQUEST['codproveedor']);
                 if (isset($_REQUEST['codserie'])) {
                     $this->codserie = $_REQUEST['codserie'];
                 }
                 if (isset($_REQUEST['desde'])) {
                     $this->desde = $_REQUEST['desde'];
                 }
                 if (isset($_REQUEST['hasta'])) {
                     $this->hasta = $_REQUEST['hasta'];
                 }
                 if ($this->proveedor) {
                     $this->resultados = $this->albaran->search_from_proveedor($this->proveedor->codproveedor, $this->desde, $this->hasta, $this->codserie);
                     if ($this->resultados) {
                         foreach ($this->resultados as $alb) {
                             $this->neto += $alb->neto;
                             $this->total += $alb->total;
                         }
                     } else {
                         $this->new_message("Sin resultados.");
                     }
                 }
             } else {
                 $this->share_extensions();
             }
         }
     }
 }
Ejemplo n.º 13
0
 protected function private_core()
 {
     $this->albaran = FALSE;
     $this->articulo_proveedor = new articulo_proveedor();
     $this->proveedor = FALSE;
     $this->factura = FALSE;
     $this->impuesto = new impuesto();
     /// obtenemos los datos de configuración de impresión
     $this->impresion = array('print_ref' => '1', 'print_dto' => '1', 'print_alb' => '0');
     $fsvar = new fs_var();
     $this->impresion = $fsvar->array_get($this->impresion, FALSE);
     $this->logo = FALSE;
     if (file_exists('tmp/' . FS_TMP_NAME . 'logo.png')) {
         $this->logo = 'tmp/' . FS_TMP_NAME . 'logo.png';
     } else {
         if (file_exists('tmp/' . FS_TMP_NAME . 'logo.jpg')) {
             $this->logo = 'tmp/' . FS_TMP_NAME . 'logo.jpg';
         }
     }
     if (isset($_REQUEST['albaran']) and isset($_REQUEST['id'])) {
         $alb = new albaran_proveedor();
         $this->albaran = $alb->get($_REQUEST['id']);
         if ($this->albaran) {
             $proveedor = new proveedor();
             $this->proveedor = $proveedor->get($this->albaran->codproveedor);
         }
         if (isset($_POST['email'])) {
             $this->enviar_email('albaran');
         } else {
             $this->generar_pdf_albaran();
         }
     } else {
         if (isset($_REQUEST['factura']) and isset($_REQUEST['id'])) {
             $fac = new factura_proveedor();
             $this->factura = $fac->get($_REQUEST['id']);
             if ($this->factura) {
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($this->factura->codproveedor);
             }
             $this->generar_pdf_factura();
         }
     }
     $this->share_extensions();
 }
Ejemplo n.º 14
0
 protected function private_core()
 {
     $albaran = new albaran_proveedor();
     $this->agente = new agente();
     $this->serie = new serie();
     $this->mostrar = 'todo';
     if (isset($_GET['mostrar'])) {
         $this->mostrar = $_GET['mostrar'];
         setcookie('compras_alb_mostrar', $this->mostrar, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['compras_alb_mostrar'])) {
             $this->mostrar = $_COOKIE['compras_alb_mostrar'];
         }
     }
     $this->offset = 0;
     if (isset($_REQUEST['offset'])) {
         $this->offset = intval($_REQUEST['offset']);
     }
     $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('compras_alb_order', $this->order, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['compras_alb_order'])) {
             $this->order = $_COOKIE['compras_alb_order'];
         }
     }
     if (isset($_POST['buscar_lineas'])) {
         $this->buscar_lineas();
     } else {
         if (isset($_REQUEST['buscar_proveedor'])) {
             $this->buscar_proveedor();
         } else {
             if (isset($_GET['ref'])) {
                 $this->template = 'extension/compras_albaranes_articulo';
                 $articulo = new articulo();
                 $this->articulo = $articulo->get($_GET['ref']);
                 $linea = new linea_albaran_proveedor();
                 $this->resultados = $linea->all_from_articulo($_GET['ref'], $this->offset);
             } else {
                 $this->share_extension();
                 $this->codagente = '';
                 $this->codserie = '';
                 $this->desde = '';
                 $this->hasta = '';
                 $this->num_resultados = '';
                 $this->proveedor = FALSE;
                 $this->total_resultados = '';
                 $this->total_resultados_txt = '';
                 if (isset($_POST['delete'])) {
                     $this->delete_albaran();
                 } else {
                     if (!isset($_GET['mostrar']) and (isset($_REQUEST['codagente']) or isset($_REQUEST['codproveedor']))) {
                         /**
                          * si obtenermos un codagente o un codproveedor 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['codproveedor'])) {
                         if ($_REQUEST['codproveedor'] != '') {
                             $pro0 = new proveedor();
                             $this->proveedor = $pro0->get($_REQUEST['codproveedor']);
                         }
                     }
                     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 = $albaran->all_ptefactura($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 {
                         $this->resultados = $albaran->all($this->offset, $this->order . $order2);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 15
0
 protected function private_core()
 {
     $this->desde = Date('01-m-Y');
     if (isset($_POST['desde'])) {
         $this->desde = $_POST['desde'];
     }
     $this->hasta = Date('d-m-Y');
     if (isset($_POST['hasta'])) {
         $this->hasta = $_POST['hasta'];
     }
     $this->codproveedor = FALSE;
     if (!isset($_POST['todos']) and isset($_POST['codproveedor'])) {
         $this->codproveedor = $_POST['codproveedor'];
         $pro0 = new proveedor();
         $this->proveedor = $pro0->get($this->codproveedor);
     }
     $this->serie = new serie();
     $this->codserie = FALSE;
     if (isset($_POST['codserie'])) {
         $this->codserie = $_POST['codserie'];
     }
     if (isset($_REQUEST['buscar_proveedor'])) {
         $this->buscar_proveedor();
     } else {
         if (in_array('tesoreria', $GLOBALS['plugins'])) {
             $this->new_error_msg('Si usas el <b>plugin Tesorería</b> no puedes usar este' . ' asistente para pagar todas las facturas.');
         } else {
             if (isset($_POST['idfactura'])) {
                 /// ¿Marcamos ya las facturas?
                 $num = 0;
                 $asi0 = new asiento();
                 $asifac = new asiento_factura();
                 $fact0 = new factura_proveedor();
                 foreach ($_POST['idfactura'] as $id) {
                     $factura = $fact0->get($id);
                     if ($factura) {
                         $asiento = $asi0->get($factura->idasiento);
                         if ($asiento) {
                             $factura->idasientop = $asifac->generar_asiento_pago($asiento, $factura->codpago);
                             if ($factura->idasientop) {
                                 $factura->pagada = TRUE;
                                 if ($factura->save()) {
                                     $num++;
                                 }
                             }
                         } else {
                             $factura->pagada = TRUE;
                             if ($factura->save()) {
                                 $num++;
                             }
                         }
                     }
                 }
                 foreach ($asifac->errors as $err) {
                     $this->new_error_msg($err);
                 }
                 $this->new_message($num . ' facturas marcadas como pagadas, estas son las siguientes.');
             } else {
                 $this->share_extensions();
             }
         }
     }
     $this->resultados = FALSE;
     if (isset($_POST['desde'])) {
         $this->resultados = $this->buscar_facturas();
     }
 }
Ejemplo n.º 16
0
 public function proveedores()
 {
     $provelist = array();
     $data = $this->db->select("SELECT DISTINCT codproveedor FROM albaranesprov\n         WHERE idalbaran IN (SELECT DISTINCT idalbaran FROM lineasalbaranesprov WHERE referencia IN\n         (SELECT referencia FROM articulos WHERE codfamilia = " . $this->var2str($this->codfamilia) . "));");
     if ($data) {
         $pro0 = new proveedor();
         foreach ($data as $d) {
             $provelist[] = $pro0->get($d['codproveedor']);
         }
     }
     return $provelist;
 }
 /**
  * Genera el asiento contable para una factura de compra.
  * Devuelve TRUE si el asiento se ha generado correctamente, False en caso contrario.
  * Si genera el asiento, este es accesible desde $this->asiento.
  * @param type $factura
  */
 public function generar_asiento_compra(&$factura)
 {
     $ok = FALSE;
     $this->asiento = FALSE;
     $proveedor0 = new proveedor();
     $subcuenta_prov = FALSE;
     $proveedor = $proveedor0->get($factura->codproveedor);
     if ($proveedor) {
         $subcuenta_prov = $proveedor->get_subcuenta($factura->codejercicio);
     }
     if ($factura->totalirpf != 0 or $factura->totalrecargo != 0) {
         $this->new_error_msg('Todavía no se pueden generar asientos de facturas con IRPF o recargo.');
     } else {
         if (!$subcuenta_prov) {
             $eje0 = $this->ejercicio->get($factura->codejercicio);
             $this->new_message("No se ha podido generar una subcuenta para el proveedor\n            <a href='" . $eje0->url() . "'>¿Has importado los datos del ejercicio?</a>\n            Aun así la <a href='" . $factura->url() . "'>factura</a> se ha generado correctamente,\n            pero sin asiento contable.");
         } else {
             $asiento = new asiento();
             $asiento->codejercicio = $factura->codejercicio;
             $asiento->concepto = "Factura de compra " . $factura->codigo . " - " . $factura->nombre;
             $asiento->documento = $factura->codigo;
             $asiento->editable = FALSE;
             $asiento->fecha = $factura->fecha;
             $asiento->importe = $factura->total;
             $asiento->tipodocumento = "Factura de proveedor";
             if ($asiento->save()) {
                 $asiento_correcto = TRUE;
                 $subcuenta = new subcuenta();
                 $partida0 = new partida();
                 $partida0->idasiento = $asiento->idasiento;
                 $partida0->concepto = $asiento->concepto;
                 $partida0->idsubcuenta = $subcuenta_prov->idsubcuenta;
                 $partida0->codsubcuenta = $subcuenta_prov->codsubcuenta;
                 $partida0->haber = $factura->total;
                 $partida0->coddivisa = $factura->coddivisa;
                 $partida0->tasaconv = $factura->tasaconv;
                 if (!$partida0->save()) {
                     $asiento_correcto = FALSE;
                     $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida0->codsubcuenta . "!");
                 }
                 /// generamos una partida por cada impuesto
                 $subcuenta_iva = $subcuenta->get_cuentaesp('IVASOP', $asiento->codejercicio);
                 foreach ($factura->get_lineas_iva() as $li) {
                     if ($subcuenta_iva and $asiento_correcto) {
                         $partida1 = new partida();
                         $partida1->idasiento = $asiento->idasiento;
                         $partida1->concepto = $asiento->concepto;
                         $partida1->idsubcuenta = $subcuenta_iva->idsubcuenta;
                         $partida1->codsubcuenta = $subcuenta_iva->codsubcuenta;
                         $partida1->debe = $li->totaliva;
                         $partida1->idcontrapartida = $subcuenta_prov->idsubcuenta;
                         $partida1->codcontrapartida = $subcuenta_prov->codsubcuenta;
                         $partida1->cifnif = $proveedor->cifnif;
                         $partida1->documento = $asiento->documento;
                         $partida1->tipodocumento = $asiento->tipodocumento;
                         $partida1->codserie = $factura->codserie;
                         $partida1->factura = $factura->numero;
                         $partida1->baseimponible = $li->neto;
                         $partida1->iva = $li->iva;
                         $partida1->coddivisa = $factura->coddivisa;
                         $partida1->tasaconv = $factura->tasaconv;
                         if (!$partida1->save()) {
                             $asiento_correcto = FALSE;
                             $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida1->codsubcuenta . "!");
                         }
                     }
                 }
                 $subcuenta_compras = $subcuenta->get_cuentaesp('COMPRA', $asiento->codejercicio);
                 if ($subcuenta_compras and $asiento_correcto) {
                     $partida2 = new partida();
                     $partida2->idasiento = $asiento->idasiento;
                     $partida2->concepto = $asiento->concepto;
                     $partida2->idsubcuenta = $subcuenta_compras->idsubcuenta;
                     $partida2->codsubcuenta = $subcuenta_compras->codsubcuenta;
                     $partida2->debe = $factura->neto;
                     $partida2->coddivisa = $factura->coddivisa;
                     $partida2->tasaconv = $factura->tasaconv;
                     if (!$partida2->save()) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida2->codsubcuenta . "!");
                     }
                 }
                 if ($asiento_correcto) {
                     $factura->idasiento = $asiento->idasiento;
                     if ($factura->save()) {
                         $ok = TRUE;
                         $this->asiento = $asiento;
                     } else {
                         $this->new_error_msg("¡Imposible añadir el asiento a la factura!");
                     }
                 } else {
                     if ($asiento->delete()) {
                         $this->new_message("El asiento se ha borrado.");
                     } else {
                         $this->new_error_msg("¡Imposible borrar el asiento!");
                     }
                 }
             }
         }
     }
     return $ok;
 }
 protected function private_core()
 {
     $this->agente = new agente();
     $this->factura = new factura_proveedor();
     $this->serie = new serie();
     $albaran = new albaran_proveedor();
     $this->autorizar_factura = 1;
     if (isset($_GET['nueva'])) {
         if ($_GET['nueva'] == 1) {
             $this->new_message("Factura guardada correctamente.");
         }
         if ($_GET['nueva'] == 2) {
             $this->new_error_msg("La Factura no se guardó. La Fecha corresponde a un ejercicio Cerrado o Inexistente.");
         }
     }
     $this->mostrar = 'todo';
     if (isset($_GET['mostrar'])) {
         $this->mostrar = $_GET['mostrar'];
         setcookie('compras_fac_mostrar', $this->mostrar, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['compras_fac_mostrar'])) {
             $this->mostrar = $_COOKIE['compras_fac_mostrar'];
         }
     }
     $this->offset = 0;
     if (isset($_GET['offset'])) {
         $this->offset = intval($_GET['offset']);
     }
     $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 = 'numproveedor DESC';
                 } else {
                     if ($_GET['order'] == 'codigo_asc') {
                         $this->order = 'numproveedor ASC';
                     }
                 }
             }
         }
         setcookie('compras_fac_order', $this->order, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['compras_fac_order'])) {
             $this->order = $_COOKIE['compras_fac_order'];
         }
     }
     if (isset($_POST['buscar_lineas'])) {
         $this->buscar_lineas();
     } else {
         if (isset($_REQUEST['buscar_proveedor'])) {
             $this->buscar_proveedor();
         } 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();
                 $this->proveedor = 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_albaran();
                 }
                 if (isset($_GET['delete'])) {
                     $this->delete_factura();
                 } else {
                     if (!isset($_GET['mostrar']) and (isset($_REQUEST['codagente']) or isset($_REQUEST['codproveedor']))) {
                         /**
                          * si obtenermos un codagente o un codproveedor 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['codproveedor'])) {
                         if ($_REQUEST['codproveedor'] != '') {
                             $pro0 = new proveedor();
                             $this->proveedor = $pro0->get($_REQUEST['codproveedor']);
                         }
                     }
                     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 = ', numproveedor DESC';
                 } else {
                     if ($this->order == 'fecha ASC') {
                         $order2 = ', numproveedor ASC';
                     }
                 }
                 if ($this->mostrar == 'sinpagar') {
                     $this->resultados = $this->factura->all_sin_pagar($this->offset, FS_ITEM_LIMIT, $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 {
                         $this->resultados = $this->factura->all($this->offset, FS_ITEM_LIMIT, $this->order . $order2);
                     }
                 }
             }
         }
     }
     if ($this->mostrar == 'remitos') {
         $this->resultados = $albaran->all_ptefactura($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;
             }
         }
     }
 }
Ejemplo n.º 19
0
function FormularioAlta($esPopup = false)
{
    global $action;
    $oProveedor = new proveedor();
    $oProveedor->Crea();
    if (!$esPopup) {
        echo gas("cabecera", _("Gestion de Proveedores"));
    }
    $ot = getTemplate("FormAltaProveedor");
    if (!$ot) {
        error(__FILE__ . __LINE__, "Info: template no encontrado");
        return false;
    }
    $ot->fijar("action", $action);
    $ot->fijar("tTitulo", _("Alta proveedor"));
    $ot->fijar("tModPagoHabitual", _("Modo pago hab."));
    $ot->fijar("vIdModPagoHabitual", $oProveedor->get("IdModPagoHabitual"));
    $ot->fijar("comboModPagoHabitual", genComboModPagoHabitual($oProveedor->get("IdModPagoHabitual")));
    $ot->campo(_("Pagina web"), "PaginaWeb", $oProveedor);
    $ot->fijar("tIdPais", _("País"));
    $ot->fijar("comboIdPais", genComboPaises($oProveedor->get("IdPais")));
    $ot->campo(_("Nombre comercial"), "NombreComercial", $oProveedor);
    $ot->campo(_("Nombre legal"), "NombreLegal", $oProveedor);
    $ot->campo(_("Dirección"), "Direccion", $oProveedor);
    $ot->campo(_("Localidad"), "Localidad", $oProveedor);
    $ot->campo(_("Código postal"), "CP", $oProveedor);
    $ot->campo(_("Telf.(1)"), "Telefono1", $oProveedor);
    $ot->campo(_("Telf.(2)"), "Telefono2", $oProveedor);
    $ot->campo(_("Contacto"), "Contacto", $oProveedor);
    $ot->campo(_("Cargo"), "Cargo", $oProveedor);
    $ot->campo(_("Email"), "Email", $oProveedor);
    $ot->campo(_("Cuenta bancaria"), "CuentaBancaria", $oProveedor);
    $ot->campo(_("Número fiscal"), "NumeroFiscal", $oProveedor);
    $ot->campo(_("Comentarios"), "Comentarios", $oProveedor);
    if ($esPopup) {
        $ot->fijar("vesPopup", 1);
        $ot->fijar("onClose", "window.close()");
    } else {
        $ot->fijar("vesPopup", 0);
        $ot->fijar("onClose", "location.href='modproveedores.php'");
    }
    echo $ot->Output();
}
 /**
  * Genera el asiento contable para una factura de CRÉDITO de compra.
  * Devuelve TRUE si el asiento se ha generado correctamente, False en caso contrario.
  * Si genera el asiento, este es accesible desde $this->asiento.
  * @param type $factura
  */
 public function generar_asiento_compra_credito(&$factura)
 {
     $ok = FALSE;
     $this->asiento = FALSE;
     $proveedor0 = new proveedor();
     $subcuenta_prov = FALSE;
     $proveedor = $proveedor0->get($factura->codproveedor);
     if ($proveedor) {
         /// Obtengo subcuenta proveedor
         $subcuenta_prov = $proveedor->get_subcuenta($factura->codejercicio);
     }
     if (!$subcuenta_prov) {
         $eje0 = $this->ejercicio->get($factura->codejercicio);
         $this->new_message("No se ha podido generar una subcuenta para el proveedor\n            <a href='" . $eje0->url() . "'>¿Has importado los datos del ejercicio?</a>");
         if (!$this->soloasiento) {
             $this->new_message("Aun así la <a href='" . $factura->url() . "'>factura</a> se ha generado correctamente,\n            pero sin asiento contable.");
         }
     } else {
         $asiento = new asiento();
         $asiento->codejercicio = $factura->codejercicio;
         $asiento->concepto = "Factura de compra " . $factura->codigo . " - " . $factura->nombre;
         $asiento->documento = $factura->codigo;
         $asiento->editable = TRUE;
         $asiento->fecha = $factura->fecha;
         $asiento->importe = $factura->total;
         $asiento->tipodocumento = "Ingreso proveedor";
         if ($asiento->save()) {
             $asiento_correcto = TRUE;
             $subcuenta = new subcuenta();
             /////// Acá se genera la partida con cada subcuenta
             $subcuenta_compras = $subcuenta->get_cuentaesp('COMPRA', $asiento->codejercicio);
             ////////////////////////////////////////////////////////////////////////////////////////
             if ($subcuenta_compras and $asiento_correcto) {
                 $partida2 = new partida();
                 $partida2->idasiento = $asiento->idasiento;
                 $partida2->concepto = $asiento->concepto;
                 $partida2->idsubcuenta = $subcuenta_prov->idsubcuenta;
                 $partida2->codsubcuenta = $subcuenta_prov->codsubcuenta;
                 ///////// Proveedor compra debe  ////////////////////////
                 $partida2->debe = $factura->neto;
                 $partida2->coddivisa = $factura->coddivisa;
                 $partida2->tasaconv = $factura->tasaconv;
                 $partida2->codserie = $factura->codserie;
                 if (!$partida2->save()) {
                     $asiento_correcto = FALSE;
                     $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida2->codsubcuenta . "!");
                 }
             }
             /////////////////////////////////////////////////////////////////////////////////////////
             /// generamos una partida por cada impuesto
             $subcuenta_iva = $subcuenta->get_cuentaesp('IVASOP', $asiento->codejercicio);
             foreach ($factura->get_lineas_iva() as $li) {
                 if ($subcuenta_iva and $asiento_correcto) {
                     $partida1 = new partida();
                     $partida1->idasiento = $asiento->idasiento;
                     $partida1->concepto = $asiento->concepto;
                     $partida1->idsubcuenta = $subcuenta_iva->idsubcuenta;
                     $partida1->codsubcuenta = $subcuenta_iva->codsubcuenta;
                     $partida1->debe = $li->totaliva;
                     $partida1->idcontrapartida = $subcuenta_prov->idsubcuenta;
                     $partida1->codcontrapartida = $subcuenta_prov->codsubcuenta;
                     $partida1->cifnif = $proveedor->cifnif;
                     $partida1->documento = $asiento->documento;
                     $partida1->tipodocumento = $asiento->tipodocumento;
                     $partida1->codserie = $factura->codserie;
                     $partida1->factura = $factura->numero;
                     $partida1->baseimponible = $li->neto;
                     $partida1->iva = $li->iva;
                     $partida1->coddivisa = $factura->coddivisa;
                     $partida1->tasaconv = $factura->tasaconv;
                     if (!$partida1->save()) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida1->codsubcuenta . "!");
                     }
                     if ($li->recargo != 0) {
                         $partida11 = new partida();
                         $partida11->idasiento = $asiento->idasiento;
                         $partida11->concepto = $asiento->concepto;
                         $partida11->idsubcuenta = $subcuenta_iva->idsubcuenta;
                         $partida11->codsubcuenta = $subcuenta_iva->codsubcuenta;
                         $partida11->debe = $li->totalrecargo;
                         $partida11->idcontrapartida = $subcuenta_prov->idsubcuenta;
                         $partida11->codcontrapartida = $subcuenta_prov->codsubcuenta;
                         $partida11->cifnif = $proveedor->cifnif;
                         $partida11->documento = $asiento->documento;
                         $partida11->tipodocumento = $asiento->tipodocumento;
                         $partida11->codserie = $factura->codserie;
                         $partida11->factura = $factura->numero;
                         $partida11->baseimponible = $li->neto;
                         $partida11->recargo = $li->recargo;
                         $partida11->coddivisa = $factura->coddivisa;
                         $partida11->tasaconv = $factura->tasaconv;
                         if (!$partida11->save()) {
                             $asiento_correcto = FALSE;
                             $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida11->codsubcuenta . "!");
                         }
                     }
                 }
             }
             /////////////////////////////////////////////////////////////////////////////////////
             //////////////////////////////////////////////////////////
             ///  Separa las subcuentas de las facturas y crea los asientos
             //////////////////////////////////////////////////////////
             $partida0 = new partida();
             $lineas_f = new linea_factura_proveedor();
             $lineas_fact = $lineas_f->all_from_factura($factura->idfactura);
             for ($i = 0; $i < count($lineas_fact); $i++) {
                 $total_sub = 0;
                 $finaliza = 0;
                 $subcuenta1 = $lineas_fact[$i]->codsubcuenta;
                 $idsubcuen = $lineas_fact[$i]->idsubcuenta;
                 for ($j = 0; $j < $i; $j++) {
                     if ($subcuenta1 == $lineas_fact[$j]->codsubcuenta) {
                         $finaliza = 1;
                     }
                 }
                 if ($finaliza == 0) {
                     for ($k = 0; $k < count($lineas_fact); $k++) {
                         if ($subcuenta1 == $lineas_fact[$k]->codsubcuenta) {
                             $total_sub = $total_sub + $lineas_fact[$k]->pvptotal;
                         }
                     }
                     $partida0->idasiento = $asiento->idasiento;
                     $partida0->concepto = $asiento->concepto;
                     $partida0->idsubcuenta = $idsubcuen;
                     $partida0->codsubcuenta = $subcuenta1;
                     ///////////  Proveedor  haber			/////////
                     $partida0->haber = $total_sub;
                     $partida0->coddivisa = $factura->coddivisa;
                     $partida0->tasaconv = $factura->tasaconv;
                     $partida0->codserie = $factura->codserie;
                     if (!$partida0->save()) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida0->codsubcuenta . "!");
                     }
                 }
             }
             /////////////////////////////////////////////////////////
             ////////////////////////////////////////////////////////
             /////////////////////////////////////////////////////////
             ////////////////////////////////////////////////////////////////////////////////////////////
             /// ¿IRPF?
             if ($factura->totalirpf != 0 and $asiento_correcto) {
                 $subcuenta_irpf = $subcuenta->get_cuentaesp('IRPFPR', $asiento->codejercicio);
                 if ($subcuenta_irpf) {
                     $partida3 = new partida();
                     $partida3->idasiento = $asiento->idasiento;
                     $partida3->concepto = $asiento->concepto;
                     $partida3->idsubcuenta = $subcuenta_irpf->idsubcuenta;
                     $partida3->codsubcuenta = $subcuenta_irpf->codsubcuenta;
                     $partida3->haber = $factura->totalirpf;
                     $partida3->coddivisa = $factura->coddivisa;
                     $partida3->tasaconv = $factura->tasaconv;
                     $partida3->codserie = $factura->codserie;
                     if (!$partida3->save()) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida3->codsubcuenta . "!");
                     }
                 }
             }
             if ($asiento_correcto) {
                 $factura->idasiento = $asiento->idasiento;
                 if ($factura->save()) {
                     $ok = TRUE;
                     $this->asiento = $asiento;
                 } else {
                     $this->new_error_msg("¡Imposible añadir el asiento a la factura!");
                 }
             } else {
                 if ($asiento->delete()) {
                     $this->new_message("El asiento se ha borrado.");
                 } else {
                     $this->new_error_msg("¡Imposible borrar el asiento!");
                 }
             }
         }
     }
     return $ok;
 }
Ejemplo n.º 21
0
 protected function private_core()
 {
     $this->agente = new agente();
     $this->factura = new factura_proveedor();
     $this->serie = new serie();
     $this->mostrar = 'todo';
     if (isset($_GET['mostrar'])) {
         $this->mostrar = $_GET['mostrar'];
         setcookie('compras_fac_mostrar', $this->mostrar, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['compras_fac_mostrar'])) {
             $this->mostrar = $_COOKIE['compras_fac_mostrar'];
         }
     }
     $this->offset = 0;
     if (isset($_GET['offset'])) {
         $this->offset = intval($_GET['offset']);
     }
     $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';
                     } else {
                         if ($_GET['order'] == 'total_desc') {
                             $this->order = 'total DESC';
                         }
                     }
                 }
             }
         }
         setcookie('compras_fac_order', $this->order, time() + FS_COOKIES_EXPIRE);
     } else {
         if (isset($_COOKIE['compras_fac_order'])) {
             $this->order = $_COOKIE['compras_fac_order'];
         }
     }
     if (isset($_POST['buscar_lineas'])) {
         $this->buscar_lineas();
     } else {
         if (isset($_REQUEST['buscar_proveedor'])) {
             $this->buscar_proveedor();
         } 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();
                 $this->proveedor = FALSE;
                 $this->codagente = '';
                 $this->codserie = '';
                 $this->desde = '';
                 $this->estado = '';
                 $this->hasta = '';
                 $this->num_resultados = '';
                 $this->total_resultados = array();
                 $this->total_resultados_txt = '';
                 if (isset($_GET['delete'])) {
                     $this->delete_factura();
                 } else {
                     if (!isset($_GET['mostrar']) and (isset($_REQUEST['codagente']) or isset($_REQUEST['codproveedor']) or isset($_REQUEST['codserie']))) {
                         /**
                          * si obtenermos un codagente, un codproveedor o un codserie 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['codproveedor'])) {
                         if ($_REQUEST['codproveedor'] != '') {
                             $pro0 = new proveedor();
                             $this->proveedor = $pro0->get($_REQUEST['codproveedor']);
                         }
                     }
                     if (isset($_REQUEST['codagente'])) {
                         $this->codagente = $_REQUEST['codagente'];
                     }
                     if (isset($_REQUEST['codserie'])) {
                         $this->codserie = $_REQUEST['codserie'];
                     }
                     if (isset($_REQUEST['desde'])) {
                         $this->desde = $_REQUEST['desde'];
                         $this->hasta = $_REQUEST['hasta'];
                         $this->estado = $_REQUEST['estado'];
                     }
                 }
                 /// añadimos segundo nivel de ordenación
                 $order2 = '';
                 if ($this->order == 'fecha DESC') {
                     $order2 = ', hora DESC, numero DESC';
                 } else {
                     if ($this->order == 'fecha ASC') {
                         $order2 = ', hora ASC, numero ASC';
                     }
                 }
                 if ($this->mostrar == 'sinpagar') {
                     $this->resultados = $this->factura->all_sin_pagar($this->offset, FS_ITEM_LIMIT, $this->order . $order2);
                     if ($this->offset == 0) {
                         /// calculamos el total, pero desglosando por divisa
                         $this->total_resultados = array();
                         $this->total_resultados_txt = 'Suma total de esta página:';
                         foreach ($this->resultados as $fac) {
                             if (!isset($this->total_resultados[$fac->coddivisa])) {
                                 $this->total_resultados[$fac->coddivisa] = array('coddivisa' => $fac->coddivisa, 'total' => 0);
                             }
                             $this->total_resultados[$fac->coddivisa]['total'] += $fac->total;
                         }
                     }
                 } else {
                     if ($this->mostrar == 'buscar') {
                         $this->buscar($order2);
                     } else {
                         $this->resultados = $this->factura->all($this->offset, FS_ITEM_LIMIT, $this->order . $order2);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 22
0
 /**
  * Genera el asiento contable para una factura de compra.
  * Devuelve TRUE si el asiento se ha generado correctamente, False en caso contrario.
  * Si genera el asiento, este es accesible desde $this->asiento.
  * @param factura_proveedor $factura
  */
 public function generar_asiento_compra(&$factura)
 {
     $ok = FALSE;
     $this->asiento = FALSE;
     $proveedor0 = new proveedor();
     $subcuenta_prov = FALSE;
     /// obtenemos las tasas de conversión, para las ocasiones en que la factura está en otra divisa
     $tasaconv = 1;
     $tasaconv2 = $factura->tasaconv;
     if ($factura->coddivisa != $this->empresa->coddivisa) {
         $div0 = new divisa();
         $divisa = $div0->get($this->empresa->coddivisa);
         if ($divisa) {
             $tasaconv = $divisa->tasaconv_compra / $factura->tasaconv;
             $tasaconv2 = $divisa->tasaconv_compra;
         }
     }
     /// obtenemos el proveedor de la factura y su subcuenta
     $proveedor = $proveedor0->get($factura->codproveedor);
     if ($proveedor) {
         $subcuenta_prov = $proveedor->get_subcuenta($factura->codejercicio);
     }
     if (!$subcuenta_prov) {
         $eje0 = $this->ejercicio->get($factura->codejercicio);
         $this->new_message("No se ha podido generar una subcuenta para el proveedor\n            <a href='" . $eje0->url() . "'>¿Has importado los datos del ejercicio?</a>");
         if (!$this->soloasiento) {
             $this->new_message("Aun así la <a href='" . $factura->url() . "'>factura</a> se ha generado correctamente,\n            pero sin asiento contable.");
         }
     } else {
         $asiento = new asiento();
         $asiento->codejercicio = $factura->codejercicio;
         if ($factura->idfacturarect) {
             $asiento->concepto = ucfirst(FS_FACTURA_RECTIFICATIVA) . " de " . $factura->codigorect . " (compras) - " . $factura->nombre;
         } else {
             $asiento->concepto = "Factura de compra " . $factura->codigo . " - " . $factura->nombre;
         }
         $asiento->documento = $factura->codigo;
         $asiento->editable = FALSE;
         $asiento->fecha = $factura->fecha;
         $asiento->importe = abs($factura->total * $tasaconv);
         $asiento->tipodocumento = "Factura de proveedor";
         if ($asiento->save()) {
             $asiento_correcto = TRUE;
             $subcuenta = new subcuenta();
             $partida0 = new partida();
             $partida0->idasiento = $asiento->idasiento;
             $partida0->concepto = $asiento->concepto;
             $partida0->idsubcuenta = $subcuenta_prov->idsubcuenta;
             $partida0->codsubcuenta = $subcuenta_prov->codsubcuenta;
             $partida0->haber = $factura->total * $tasaconv;
             $partida0->coddivisa = $this->empresa->coddivisa;
             $partida0->tasaconv = $tasaconv2;
             $partida0->codserie = $factura->codserie;
             if (!$partida0->save()) {
                 $asiento_correcto = FALSE;
                 $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida0->codsubcuenta . "!");
             }
             /// generamos una partida por cada impuesto
             foreach ($factura->get_lineas_iva() as $li) {
                 $subcuenta_iva = FALSE;
                 /// ¿El impuesto tiene una subcuenta específica?
                 if (isset($this->impuestos[$li->codimpuesto])) {
                     if ($this->impuestos[$li->codimpuesto]->codsubcuentasop) {
                         $subcuenta_iva = $subcuenta->get_by_codigo($this->impuestos[$li->codimpuesto]->codsubcuentasop, $asiento->codejercicio);
                     }
                 }
                 if (!$subcuenta_iva) {
                     $subcuenta_iva = $subcuenta->get_cuentaesp('IVASOP', $asiento->codejercicio);
                 }
                 if ($subcuenta_iva and $asiento_correcto) {
                     $partida1 = new partida();
                     $partida1->idasiento = $asiento->idasiento;
                     $partida1->concepto = $asiento->concepto;
                     $partida1->idsubcuenta = $subcuenta_iva->idsubcuenta;
                     $partida1->codsubcuenta = $subcuenta_iva->codsubcuenta;
                     $partida1->debe = $li->totaliva * $tasaconv;
                     $partida1->idcontrapartida = $subcuenta_prov->idsubcuenta;
                     $partida1->codcontrapartida = $subcuenta_prov->codsubcuenta;
                     $partida1->cifnif = $proveedor->cifnif;
                     $partida1->documento = $asiento->documento;
                     $partida1->tipodocumento = $asiento->tipodocumento;
                     $partida1->codserie = $factura->codserie;
                     $partida1->factura = $factura->numero;
                     $partida1->baseimponible = $li->neto * $tasaconv;
                     $partida1->iva = $li->iva;
                     $partida1->coddivisa = $this->empresa->coddivisa;
                     $partida1->tasaconv = $tasaconv2;
                     if (!$partida1->save()) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida1->codsubcuenta . "!");
                     }
                     if ($li->recargo != 0) {
                         $partida11 = new partida();
                         $partida11->idasiento = $asiento->idasiento;
                         $partida11->concepto = $asiento->concepto;
                         $partida11->idsubcuenta = $subcuenta_iva->idsubcuenta;
                         $partida11->codsubcuenta = $subcuenta_iva->codsubcuenta;
                         $partida11->debe = $li->totalrecargo * $tasaconv;
                         $partida11->idcontrapartida = $subcuenta_prov->idsubcuenta;
                         $partida11->codcontrapartida = $subcuenta_prov->codsubcuenta;
                         $partida11->cifnif = $proveedor->cifnif;
                         $partida11->documento = $asiento->documento;
                         $partida11->tipodocumento = $asiento->tipodocumento;
                         $partida11->codserie = $factura->codserie;
                         $partida11->factura = $factura->numero;
                         $partida11->baseimponible = $li->neto * $tasaconv;
                         $partida11->recargo = $li->recargo;
                         $partida11->coddivisa = $this->empresa->coddivisa;
                         $partida11->tasaconv = $tasaconv2;
                         if (!$partida11->save()) {
                             $asiento_correcto = FALSE;
                             $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida11->codsubcuenta . "!");
                         }
                     }
                 } else {
                     if (!$subcuenta_iva) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg('No se encuentra la subcuenta de ' . FS_IVA);
                     }
                 }
             }
             $subcuenta_compras = $subcuenta->get_cuentaesp('COMPRA', $asiento->codejercicio);
             if ($subcuenta_compras and $asiento_correcto) {
                 $partida2 = new partida();
                 $partida2->idasiento = $asiento->idasiento;
                 $partida2->concepto = $asiento->concepto;
                 $partida2->idsubcuenta = $subcuenta_compras->idsubcuenta;
                 $partida2->codsubcuenta = $subcuenta_compras->codsubcuenta;
                 $partida2->debe = $factura->neto * $tasaconv;
                 $partida2->coddivisa = $this->empresa->coddivisa;
                 $partida2->tasaconv = $tasaconv2;
                 $partida2->codserie = $factura->codserie;
                 if (!$partida2->save()) {
                     $asiento_correcto = FALSE;
                     $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida2->codsubcuenta . "!");
                 }
             } else {
                 if (!$subcuenta_compras) {
                     $asiento_correcto = FALSE;
                     $this->new_error_msg('No se encuentra la subcuenta de compras.');
                 }
             }
             /// ¿IRPF?
             if ($factura->totalirpf != 0 and $asiento_correcto) {
                 $subcuenta_irpf = $subcuenta->get_cuentaesp('IRPFPR', $asiento->codejercicio);
                 if ($subcuenta_irpf) {
                     $partida3 = new partida();
                     $partida3->idasiento = $asiento->idasiento;
                     $partida3->concepto = $asiento->concepto;
                     $partida3->idsubcuenta = $subcuenta_irpf->idsubcuenta;
                     $partida3->codsubcuenta = $subcuenta_irpf->codsubcuenta;
                     $partida3->haber = $factura->totalirpf * $tasaconv;
                     $partida3->coddivisa = $this->empresa->coddivisa;
                     $partida3->tasaconv = $tasaconv2;
                     $partida3->codserie = $factura->codserie;
                     if (!$partida3->save()) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta " . $partida3->codsubcuenta . "!");
                     }
                 } else {
                     if (!$subcuenta_irpf) {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg('No se encuentra la subcuenta de ' . FS_IRPF);
                     }
                 }
             }
             /// comprobamos si los artículos tienen subcuentas asociadas
             if ($asiento_correcto) {
                 $partidaA = new partida();
                 $partidaA->idasiento = $asiento->idasiento;
                 $partidaA->concepto = $asiento->concepto;
                 $partidaA->coddivisa = $this->empresa->coddivisa;
                 $partidaA->tasaconv = $tasaconv2;
                 /// importe a restar a la partida2
                 $restar = 0;
                 /**
                  * Para cada artículo de la factura, buscamos su subcuenta de compra o compra con irpf
                  */
                 $art0 = new articulo();
                 foreach ($factura->get_lineas() as $lin) {
                     $subcart = FALSE;
                     $articulo = $art0->get($lin->referencia);
                     if ($articulo) {
                         if ($lin->irpf != 0) {
                             $subcart = $subcuenta->get_by_codigo($articulo->codsubcuentairpfcom, $factura->codejercicio);
                         } else {
                             if ($articulo->codsubcuentacom) {
                                 $subcart = $subcuenta->get_by_codigo($articulo->codsubcuentacom, $factura->codejercicio);
                             }
                         }
                         if (!$subcart) {
                             /// no hay / no se encuentra ninguna subcuenta asignada al artículo
                         } else {
                             if ($subcart->idsubcuenta != $subcuenta_compras->idsubcuenta) {
                                 if (is_null($partidaA->idsubcuenta)) {
                                     $partidaA->idsubcuenta = $subcart->idsubcuenta;
                                     $partidaA->codsubcuenta = $subcart->codsubcuenta;
                                     $partidaA->debe = $lin->pvptotal * $tasaconv;
                                 } else {
                                     if ($partidaA->idsubcuenta == $subcart->idsubcuenta) {
                                         $partidaA->debe += $lin->pvptotal * $tasaconv;
                                     } else {
                                         $partidaA->debe = round($partidaA->debe, FS_NF0);
                                         $restar += $partidaA->debe;
                                         if (!$partidaA->save()) {
                                             $asiento_correcto = FALSE;
                                             $this->new_error_msg("¡Imposible generar la partida para la subcuenta del artículo " . $lin->referencia . "!");
                                         }
                                         $partidaA = new partida();
                                         $partidaA->idasiento = $asiento->idasiento;
                                         $partidaA->concepto = $asiento->concepto;
                                         $partidaA->idsubcuenta = $subcart->idsubcuenta;
                                         $partidaA->codsubcuenta = $subcart->codsubcuenta;
                                         $partidaA->debe = $lin->pvptotal * $tasaconv;
                                         $partidaA->coddivisa = $this->empresa->coddivisa;
                                         $partidaA->tasaconv = $tasaconv2;
                                     }
                                 }
                             }
                         }
                     }
                 }
                 if ($partidaA->idsubcuenta and $partidaA->codsubcuenta) {
                     $partidaA->debe = round($partidaA->debe, FS_NF0);
                     $restar += $partidaA->debe;
                     if ($partidaA->save()) {
                         $partida2->debe -= $restar;
                         $partida2->save();
                     } else {
                         $asiento_correcto = FALSE;
                         $this->new_error_msg("¡Imposible generar la partida para la subcuenta del artículo " . $lin->referencia . "!");
                     }
                 }
             }
             if ($asiento_correcto) {
                 /// si es una factura rectificativa, invertimos los importes
                 if ($factura->idfacturarect) {
                     $this->invertir_asiento($asiento);
                 }
                 $factura->idasiento = $asiento->idasiento;
                 if ($factura->save()) {
                     $ok = $this->check_asiento($asiento);
                     if (!$ok) {
                         $this->new_error_msg('El asiento está descuadrado.');
                     }
                     $this->asiento = $asiento;
                 } else {
                     $this->new_error_msg("¡Imposible añadir el asiento a la factura!");
                 }
             } else {
                 if ($asiento->delete()) {
                     $this->new_message("El asiento se ha borrado.");
                 } else {
                     $this->new_error_msg("¡Imposible borrar el asiento!");
                 }
             }
         }
     }
     return $ok;
 }
Ejemplo n.º 23
0
 protected function private_core()
 {
     $this->ppage = $this->page->get('compras_facturas');
     $this->agente = FALSE;
     $this->ejercicio = new ejercicio();
     $factura = new factura_proveedor();
     $this->factura = FALSE;
     $this->forma_pago = new forma_pago();
     $this->proveedor = FALSE;
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     /**
      * Si hay alguna extensión de tipo config y texto no_button_pagada,
      * desactivamos el botón de pagada/sin pagar.
      */
     $this->mostrar_boton_pagada = TRUE;
     foreach ($this->extensions as $ext) {
         if ($ext->type == 'config' and $ext->text == 'no_button_pagada') {
             $this->mostrar_boton_pagada = FALSE;
             break;
         }
     }
     if (isset($_POST['idfactura'])) {
         $this->factura = $factura->get($_POST['idfactura']);
         $this->factura->numproveedor = $_POST['numproveedor'];
         $this->factura->observaciones = $_POST['observaciones'];
         $this->factura->codpago = $_POST['forma_pago'];
         /// obtenemos el ejercicio para poder acotar la fecha
         $eje0 = $this->ejercicio->get($this->factura->codejercicio);
         if ($eje0) {
             $this->factura->fecha = $eje0->get_best_fecha($_POST['fecha'], TRUE);
             $this->factura->hora = $_POST['hora'];
         } else {
             $this->new_error_msg('No se encuentra el ejercicio asociado a la factura.');
         }
         if ($this->factura->save()) {
             $asiento = $this->factura->get_asiento();
             if ($asiento) {
                 $asiento->fecha = $this->factura->fecha;
                 if (!$asiento->save()) {
                     $this->new_error_msg("Imposible modificar la fecha del asiento.");
                 }
             }
             $this->new_message("Factura modificada correctamente.");
             $this->new_change('Factura Proveedor ' . $this->factura->codigo, $this->factura->url());
         } else {
             $this->new_error_msg("¡Imposible modificar la factura!");
         }
     } else {
         if (isset($_GET['id'])) {
             $this->factura = $factura->get($_GET['id']);
         }
     }
     if ($this->factura) {
         $this->page->title = $this->factura->codigo;
         /// cargamos el agente
         if (!is_null($this->factura->codagente)) {
             $agente = new agente();
             $this->agente = $agente->get($this->factura->codagente);
         }
         /// cargamos el proveedor
         $proveedor = new proveedor();
         $this->proveedor = $proveedor->get($this->factura->codproveedor);
         if (isset($_GET['gen_asiento']) and isset($_GET['petid'])) {
             if ($this->duplicated_petition($_GET['petid'])) {
                 $this->new_error_msg('Petición duplicada. Evita hacer doble clic sobre los botones.');
             } else {
                 $this->generar_asiento();
             }
         } else {
             if (isset($_REQUEST['pagada'])) {
                 $this->factura->pagada = $_REQUEST['pagada'] == 'TRUE';
                 if ($this->factura->save()) {
                     $this->new_message("Factura modificada correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible modificar la factura!");
                 }
             }
         }
         /// comprobamos la factura
         $this->factura->full_test();
     } else {
         $this->new_error_msg("¡Factura de proveedor no encontrada!");
     }
 }
 protected function private_core()
 {
     $this->tipo = FALSE;
     $this->subcuenta = FALSE;
     $this->cuenta = new cuenta();
     /// seleccionamos el ejercicio
     $ejercicio = new ejercicio();
     $eje0 = $ejercicio->get_by_fecha(date('d-m-Y'));
     if (isset($_POST['codejercicio'])) {
         $this->codejercicio = $_POST['codejercicio'];
     } else {
         if ($eje0) {
             $this->codejercicio = $eje0->codejercicio;
         } else {
             $this->codejercicio = $this->default_items->codejercicio();
         }
     }
     if (isset($_POST['ejercicio']) and isset($_POST['query'])) {
         $this->new_search();
     } else {
         if (isset($_REQUEST['cli'])) {
             $this->tipo = 'cli';
             $cliente = new cliente();
             $this->cliente = $cliente->get($_REQUEST['cli']);
             if ($this->cliente) {
                 $subcuenta_cliente = new subcuenta_cliente();
                 if (isset($_GET['delete_sca'])) {
                     $aux_sca = $subcuenta_cliente->get2($_GET['delete_sca']);
                     if ($aux_sca) {
                         if ($aux_sca->delete()) {
                             $this->new_message('El cliente ya no está asocuado a esa subcuenta.');
                         } else {
                             $this->new_error_msg('Imposible quitar la subcuenta.');
                         }
                     } else {
                         $this->new_error_msg('Relación con la subcuenta no encontrada.');
                     }
                 } else {
                     if (isset($_GET['idsc'])) {
                         $this->subcuenta_a = $subcuenta_cliente->get($_GET['cli'], $_GET['idsc']);
                         if ($this->subcuenta_a) {
                             $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                             $this->codejercicio = $this->subcuenta_a->codejercicio;
                         }
                     } else {
                         if (isset($_POST['idsc'])) {
                             $this->subcuenta_a = $subcuenta_cliente->get($_POST['cli'], $_POST['idsc']);
                             if ($this->subcuenta_a) {
                                 $subc = new subcuenta();
                                 $subc0 = $subc->get($_POST['idsc2']);
                                 if ($subc0) {
                                     $this->subcuenta_a->idsubcuenta = $subc0->idsubcuenta;
                                     $this->subcuenta_a->codsubcuenta = $subc0->codsubcuenta;
                                     $this->subcuenta_a->codejercicio = $subc0->codejercicio;
                                     if ($this->subcuenta_a->save()) {
                                         $this->new_message('Datos guardados correctamente.');
                                     } else {
                                         $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                     }
                                     $this->subcuenta = $subc0;
                                 } else {
                                     $this->new_error_msg('Subcuenta no encontrada.');
                                     $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                                 }
                             }
                         } else {
                             if (isset($_POST['idsc2'])) {
                                 $subc = new subcuenta();
                                 $subc0 = $subc->get($_POST['idsc2']);
                                 if ($subc0) {
                                     $subcuenta_cliente->codcliente = $this->cliente->codcliente;
                                     $subcuenta_cliente->idsubcuenta = $subc0->idsubcuenta;
                                     $subcuenta_cliente->codsubcuenta = $subc0->codsubcuenta;
                                     $subcuenta_cliente->codejercicio = $subc0->codejercicio;
                                     if ($subcuenta_cliente->save()) {
                                         $this->new_message('Datos guardados correctamente.');
                                     } else {
                                         $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                     }
                                     $this->subcuenta = $subc0;
                                 } else {
                                     $this->new_error_msg('Subcuenta no encontrada.');
                                 }
                             } else {
                                 if (isset($_POST['cuenta'])) {
                                     $cuenta0 = $this->cuenta->get($_POST['cuenta']);
                                     if ($cuenta0) {
                                         $subc0 = new subcuenta();
                                         $subc0->codcuenta = $cuenta0->codcuenta;
                                         $subc0->coddivisa = $this->default_items->coddivisa();
                                         $subc0->codejercicio = $cuenta0->codejercicio;
                                         $subc0->codsubcuenta = $_POST['codsubcuenta'];
                                         $subc0->descripcion = $this->cliente->nombre;
                                         $subc0->idcuenta = $cuenta0->idcuenta;
                                         if ($subc0->save()) {
                                             $subcuenta_cliente->codcliente = $this->cliente->codcliente;
                                             $subcuenta_cliente->idsubcuenta = $subc0->idsubcuenta;
                                             $subcuenta_cliente->codsubcuenta = $subc0->codsubcuenta;
                                             $subcuenta_cliente->codejercicio = $subc0->codejercicio;
                                             if ($subcuenta_cliente->save()) {
                                                 $this->new_message('Datos guardados correctamente.');
                                             } else {
                                                 $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                             }
                                             $this->subcuenta = $subc0;
                                         } else {
                                             $this->new_error_msg('Imposible crear la sucuenta.');
                                         }
                                     } else {
                                         $this->new_error_msg('Cuenta no encontrada.');
                                     }
                                 } else {
                                     foreach ($subcuenta_cliente->all_from_cliente($_REQUEST['cli']) as $sca) {
                                         if ($sca->codejercicio == $this->codejercicio) {
                                             $this->subcuenta_a = $sca;
                                             $this->subcuenta = $sca->get_subcuenta();
                                             break;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             if (isset($_REQUEST['pro'])) {
                 $this->tipo = 'pro';
                 $proveedor = new proveedor();
                 $this->proveedor = $proveedor->get($_REQUEST['pro']);
                 if ($this->proveedor) {
                     $subcuenta_proveedor = new subcuenta_proveedor();
                     if (isset($_GET['delete_sca'])) {
                         $aux_sca = $subcuenta_proveedor->get2($_GET['delete_sca']);
                         if ($aux_sca) {
                             if ($aux_sca->delete()) {
                                 $this->new_message('El proveedor ya no está asocuado a esa subcuenta.');
                             } else {
                                 $this->new_error_msg('Imposible quitar la subcuenta.');
                             }
                         } else {
                             $this->new_error_msg('Relación con la subcuenta no encontrada.');
                         }
                     } else {
                         if (isset($_GET['idsc'])) {
                             $this->subcuenta_a = $subcuenta_proveedor->get($_GET['pro'], $_GET['idsc']);
                             if ($this->subcuenta_a) {
                                 $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                                 $this->codejercicio = $this->subcuenta_a->codejercicio;
                             }
                         } else {
                             if (isset($_POST['idsc'])) {
                                 $this->subcuenta_a = $subcuenta_proveedor->get($_POST['pro'], $_POST['idsc']);
                                 if ($this->subcuenta_a) {
                                     $subc = new subcuenta();
                                     $subc0 = $subc->get($_POST['idsc2']);
                                     if ($subc0) {
                                         $this->subcuenta_a->idsubcuenta = $subc0->idsubcuenta;
                                         $this->subcuenta_a->codsubcuenta = $subc0->codsubcuenta;
                                         $this->subcuenta_a->codejercicio = $subc0->codejercicio;
                                         if ($this->subcuenta_a->save()) {
                                             $this->new_message('Datos guardados correctamente.');
                                         } else {
                                             $this->new_error_msg('Imposible asignar la subcuenta al proveedor.');
                                         }
                                         $this->subcuenta = $subc0;
                                     } else {
                                         $this->new_error_msg('Subcuenta no encontrada.');
                                         $this->subcuenta = $this->subcuenta_a->get_subcuenta();
                                     }
                                 }
                             } else {
                                 if (isset($_POST['idsc2'])) {
                                     $subc = new subcuenta();
                                     $subc0 = $subc->get($_POST['idsc2']);
                                     if ($subc0) {
                                         $subcuenta_proveedor->codproveedor = $this->proveedor->codproveedor;
                                         $subcuenta_proveedor->idsubcuenta = $subc0->idsubcuenta;
                                         $subcuenta_proveedor->codsubcuenta = $subc0->codsubcuenta;
                                         $subcuenta_proveedor->codejercicio = $subc0->codejercicio;
                                         if ($subcuenta_proveedor->save()) {
                                             $this->new_message('Datos guardados correctamente.');
                                         } else {
                                             $this->new_error_msg('Imposible asignar la subcuenta al cliente.');
                                         }
                                         $this->subcuenta = $subc0;
                                     } else {
                                         $this->new_error_msg('Subcuenta no encontrada.');
                                     }
                                 } else {
                                     if (isset($_POST['cuenta'])) {
                                         $cuenta0 = $this->cuenta->get($_POST['cuenta']);
                                         if ($cuenta0) {
                                             $subc0 = new subcuenta();
                                             $subc0->codcuenta = $cuenta0->codcuenta;
                                             $subc0->coddivisa = $this->default_items->coddivisa();
                                             $subc0->codejercicio = $cuenta0->codejercicio;
                                             $subc0->codsubcuenta = $_POST['codsubcuenta'];
                                             $subc0->descripcion = $this->proveedor->nombre;
                                             $subc0->idcuenta = $cuenta0->idcuenta;
                                             if ($subc0->save()) {
                                                 $subcuenta_proveedor->codproveedor = $this->proveedor->codproveedor;
                                                 $subcuenta_proveedor->idsubcuenta = $subc0->idsubcuenta;
                                                 $subcuenta_proveedor->codsubcuenta = $subc0->codsubcuenta;
                                                 $subcuenta_proveedor->codejercicio = $subc0->codejercicio;
                                                 if ($subcuenta_proveedor->save()) {
                                                     $this->new_message('Datos guardados correctamente.');
                                                 } else {
                                                     $this->new_error_msg('Imposible asignar la subcuenta al proveedor.');
                                                 }
                                                 $this->subcuenta = $subc0;
                                             } else {
                                                 $this->new_error_msg('Imposible crear la sucuenta.');
                                             }
                                         } else {
                                             $this->new_error_msg('Cuenta no encontrada.');
                                         }
                                     } else {
                                         foreach ($subcuenta_proveedor->all_from_proveedor($_REQUEST['pro']) as $sca) {
                                             if ($sca->codejercicio == $this->codejercicio) {
                                                 $this->subcuenta_a = $sca;
                                                 $this->subcuenta = $sca->get_subcuenta();
                                                 break;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 25
0
 private function informe_compras_unidades()
 {
     $sql = "SELECT f.codproveedor,f.fecha,l.referencia,SUM(l.cantidad) as total" . " FROM facturasprov f, lineasfacturasprov l" . " WHERE f.idfactura = l.idfactura AND l.referencia IS NOT NULL" . " AND f.fecha >= " . $this->empresa->var2str($_POST['desde']) . " AND f.fecha <= " . $this->empresa->var2str($_POST['hasta']);
     if ($_POST['codserie'] != '') {
         $sql .= " AND f.codserie = " . $this->empresa->var2str($_POST['codserie']);
     }
     if ($_POST['codagente'] != '') {
         $sql .= " AND f.codagente = " . $this->empresa->var2str($_POST['codagente']);
     }
     if ($_POST['codproveedor'] != '') {
         $sql .= " AND codproveedor = " . $this->empresa->var2str($_POST['codproveedor']);
     }
     if ($_POST['minimo'] != '') {
         $sql .= " AND l.cantidad > " . $this->empresa->var2str($_POST['minimo']);
     }
     $sql .= " GROUP BY f.codproveedor,f.fecha,l.referencia ORDER BY f.codproveedor ASC, l.referencia ASC, f.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_compras_unidades.csv\"");
         echo "codproveedor;nombre;referencia;año;ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;total;%VAR\n";
         $proveedor = new proveedor();
         $stats = array();
         foreach ($data as $d) {
             $anyo = date('Y', strtotime($d['fecha']));
             $mes = date('n', strtotime($d['fecha']));
             if (!isset($stats[$d['codproveedor']][$d['referencia']][$anyo])) {
                 $stats[$d['codproveedor']][$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['codproveedor']][$d['referencia']][$anyo][$mes] += floatval($d['total']);
             $stats[$d['codproveedor']][$d['referencia']][$anyo][13] += floatval($d['total']);
         }
         foreach ($stats as $i => $value) {
             $pro = $proveedor->get($i);
             foreach ($value as $j => $value2) {
                 /// calculamos la variación
                 $anterior = 0;
                 foreach (array_reverse($value2, TRUE) as $k => $value3) {
                     if ($anterior > 0) {
                         $value2[$k][14] = $value3[13] * 100 / $anterior - 100;
                     }
                     $anterior = $value3[13];
                 }
                 foreach ($value2 as $k => $value3) {
                     if ($pro) {
                         echo '"' . $i . '";' . $this->fix_html($pro->nombre) . ';"' . $j . '";' . $k;
                     } else {
                         echo '"' . $i . '";-;"' . $j . '";' . $k;
                     }
                     foreach ($value3 as $value4) {
                         echo ';' . number_format($value4, FS_NF0, ',', '');
                     }
                     echo "\n";
                 }
                 echo ";;;;;;;;;;;;;;;\n";
             }
             echo ";;;;;;;;;;;;;;;\n";
         }
     } else {
         $this->new_error_msg('Sin resultados.');
     }
 }
Ejemplo n.º 26
0
 protected function private_core()
 {
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     $this->ppage = $this->page->get('compras_facturas');
     $this->agente = FALSE;
     $this->divisa = new divisa();
     $this->ejercicio = new ejercicio();
     $factura = new factura_proveedor();
     $this->factura = FALSE;
     $this->forma_pago = new forma_pago();
     $this->proveedor = FALSE;
     $this->rectificada = FALSE;
     $this->rectificativa = FALSE;
     $this->serie = new serie();
     /**
      * Si hay alguna extensión de tipo config y texto no_button_pagada,
      * desactivamos el botón de pagada/sin pagar.
      */
     $this->mostrar_boton_pagada = TRUE;
     foreach ($this->extensions as $ext) {
         if ($ext->type == 'config' and $ext->text == 'no_button_pagada') {
             $this->mostrar_boton_pagada = FALSE;
             break;
         }
     }
     if (isset($_POST['idfactura'])) {
         $this->factura = $factura->get($_POST['idfactura']);
         $this->modificar();
     } else {
         if (isset($_GET['id'])) {
             $this->factura = $factura->get($_GET['id']);
         }
     }
     if ($this->factura) {
         $this->page->title = $this->factura->codigo;
         /// cargamos el agente
         if (!is_null($this->factura->codagente)) {
             $agente = new agente();
             $this->agente = $agente->get($this->factura->codagente);
         }
         /// cargamos el proveedor
         $proveedor = new proveedor();
         $this->proveedor = $proveedor->get($this->factura->codproveedor);
         if (isset($_GET['gen_asiento']) and isset($_GET['petid'])) {
             if ($this->duplicated_petition($_GET['petid'])) {
                 $this->new_error_msg('Petición duplicada. Evita hacer doble clic sobre los botones.');
             } else {
                 $this->generar_asiento($this->factura);
             }
         } else {
             if (isset($_REQUEST['pagada'])) {
                 $this->pagar($_REQUEST['pagada'] == 'TRUE');
             } else {
                 if (isset($_POST['anular'])) {
                     $this->anular_factura();
                 }
             }
         }
         if ($this->factura->idfacturarect) {
             $this->rectificada = $factura->get($this->factura->idfacturarect);
         } else {
             $this->get_factura_rectificativa();
         }
         /// comprobamos la factura
         $this->factura->full_test();
     } else {
         $this->new_error_msg("¡Factura de proveedor no encontrada!");
     }
 }
Ejemplo n.º 27
0
 protected function process()
 {
     $this->ppage = $this->page->get('compras_proveedores');
     $this->cuenta_banco = new cuenta_banco_proveedor();
     $this->divisa = new divisa();
     $this->forma_pago = new forma_pago();
     $this->pais = new pais();
     $this->serie = new serie();
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     /// cargamos el proveedor
     $proveedor = new proveedor();
     $this->proveedor = FALSE;
     if (isset($_POST['codproveedor'])) {
         $this->proveedor = $proveedor->get($_POST['codproveedor']);
     } else {
         if (isset($_GET['cod'])) {
             $this->proveedor = $proveedor->get($_GET['cod']);
         }
     }
     /// ¿Hay que hacer algo más?
     if (isset($_GET['delete_cuenta'])) {
         $cuenta = $this->cuenta_banco->get($_GET['delete_cuenta']);
         if ($cuenta) {
             if ($cuenta->delete()) {
                 $this->new_message('Cuenta bancaria eliminada correctamente.');
             } else {
                 $this->new_error_msg('Imposible eliminar la cuenta bancaria.');
             }
         } else {
             $this->new_error_msg('Cuenta bancaria no encontrada.');
         }
     } else {
         if (isset($_GET['delete_dir'])) {
             $dir = new direccion_proveedor();
             $dir0 = $dir->get($_GET['delete_dir']);
             if ($dir0) {
                 if ($dir0->delete()) {
                     $this->new_message('Dirección eliminada correctamente.');
                 } else {
                     $this->new_error_msg('Imposible eliminar la dirección.');
                 }
             } else {
                 $this->new_error_msg('Dirección no encontrada.');
             }
         } else {
             if (isset($_POST['coddir'])) {
                 $direccion = new direccion_proveedor();
                 if ($_POST['coddir'] != '') {
                     $direccion = $direccion->get($_POST['coddir']);
                 }
                 $direccion->apartado = $_POST['apartado'];
                 $direccion->ciudad = $_POST['ciudad'];
                 $direccion->codpais = $_POST['pais'];
                 $direccion->codpostal = $_POST['codpostal'];
                 $direccion->codproveedor = $this->proveedor->codproveedor;
                 $direccion->descripcion = $_POST['descripcion'];
                 $direccion->direccion = $_POST['direccion'];
                 $direccion->direccionppal = isset($_POST['direccionppal']);
                 $direccion->provincia = $_POST['provincia'];
                 if ($direccion->save()) {
                     $this->new_message("Dirección guardada correctamente.");
                 } else {
                     $this->new_error_msg("¡Imposible guardar la dirección!");
                 }
             } else {
                 if (isset($_POST['iban'])) {
                     if (isset($_POST['codcuenta'])) {
                         $cuentab = $this->cuenta_banco->get($_POST['codcuenta']);
                     } else {
                         $cuentab = new cuenta_banco_proveedor();
                         $cuentab->codproveedor = $this->proveedor->codproveedor;
                     }
                     $cuentab->descripcion = $_POST['descripcion'];
                     if ($_POST['ciban'] != '') {
                         $cuentab->iban = $this->calcular_iban($_POST['ciban']);
                     } else {
                         $cuentab->iban = $_POST['iban'];
                     }
                     $cuentab->swift = $_POST['swift'];
                     if ($cuentab->save()) {
                         $this->new_message('Cuenta bancaria guardada correctamente.');
                     } else {
                         $this->new_error_msg('Imposible guardar la cuenta bancaria.');
                     }
                 } else {
                     if (isset($_POST['codproveedor'])) {
                         $this->proveedor->nombre = $_POST['nombre'];
                         $this->proveedor->razonsocial = $_POST['razonsocial'];
                         $this->proveedor->cifnif = $_POST['cifnif'];
                         $this->proveedor->telefono1 = $_POST['telefono1'];
                         $this->proveedor->telefono2 = $_POST['telefono2'];
                         $this->proveedor->fax = $_POST['fax'];
                         $this->proveedor->email = $_POST['email'];
                         $this->proveedor->web = $_POST['web'];
                         $this->proveedor->observaciones = $_POST['observaciones'];
                         $this->proveedor->codserie = $_POST['codserie'];
                         $this->proveedor->codpago = $_POST['codpago'];
                         $this->proveedor->coddivisa = $_POST['coddivisa'];
                         $this->proveedor->regimeniva = $_POST['regimeniva'];
                         $this->proveedor->acreedor = isset($_POST['acreedor']);
                         if ($this->proveedor->save()) {
                             $this->new_message('Datos del proveedor modificados correctamente.');
                         } else {
                             $this->new_error_msg('¡Imposible modificar los datos del proveedor!');
                         }
                     }
                 }
             }
         }
     }
     if ($this->proveedor) {
         $this->page->title = $this->proveedor->codproveedor;
     } else {
         $this->new_error_msg("¡Proveedor no encontrado!");
     }
 }
 private function informe_proveedores()
 {
     $informe = array('filas' => array(), 'totales' => array(0, 0, 0, 0, 0));
     if (strtolower(FS_DB_TYPE) == 'postgresql') {
         $data = $this->db->select("SELECT codproveedor, to_char(fecha,'FMMM') as mes, sum(total) as total\n            FROM facturasprov WHERE to_char(fecha,'FMYYYY') = " . $this->ejercicio->var2str($this->sejercicio) . "\n            GROUP BY codproveedor, to_char(fecha,'FMMM') ORDER BY codproveedor;");
     } else {
         $data = $this->db->select("SELECT codproveedor, DATE_FORMAT(fecha, '%m') as mes, sum(total) as total\n            FROM facturasprov WHERE DATE_FORMAT(fecha, '%Y') = " . $this->ejercicio->var2str($this->sejercicio) . "\n            GROUP BY codproveedor, DATE_FORMAT(fecha, '%m') ORDER BY codproveedor;");
     }
     $fila = array('codproveedor' => '', 'proveedor' => '', 't1' => 0, 't2' => 0, 't3' => 0, 't4' => 0, 'total' => 0);
     if ($data) {
         foreach ($data as $d) {
             if ($fila['codproveedor'] == '') {
                 $fila['codproveedor'] = $d['codproveedor'];
             } else {
                 if ($d['codproveedor'] != $fila['codproveedor']) {
                     if ($fila['total'] > $this->cantidad) {
                         $informe['filas'][] = $fila;
                     }
                     $fila['codproveedor'] = $d['codproveedor'];
                     $fila['t1'] = 0;
                     $fila['t2'] = 0;
                     $fila['t3'] = 0;
                     $fila['t4'] = 0;
                     $fila['total'] = 0;
                 }
             }
             if (in_array($d['mes'], array('1', '2', '3', '01', '02', '03'))) {
                 $fila['t1'] += floatval($d['total']);
             } else {
                 if (in_array($d['mes'], array('4', '5', '6', '04', '05', '06'))) {
                     $fila['t2'] += floatval($d['total']);
                 } else {
                     if (in_array($d['mes'], array('7', '8', '9', '07', '08', '09'))) {
                         $fila['t3'] += floatval($d['total']);
                     } else {
                         $fila['t4'] += floatval($d['total']);
                     }
                 }
             }
             $fila['total'] = $fila['t1'] + $fila['t2'] + $fila['t3'] + $fila['t4'];
         }
         if ($fila['total'] > $this->cantidad) {
             $informe['filas'][] = $fila;
         }
         $proveedor = new proveedor();
         foreach ($informe['filas'] as $i => $value) {
             $pro0 = $proveedor->get($value['codproveedor']);
             if ($pro0) {
                 $informe['filas'][$i]['proveedor'] = $pro0;
             }
             $informe['totales'][0] += $value['t1'];
             $informe['totales'][1] += $value['t2'];
             $informe['totales'][2] += $value['t3'];
             $informe['totales'][3] += $value['t4'];
         }
         $informe['totales'][4] = $informe['totales'][0] + $informe['totales'][1] + $informe['totales'][2] + $informe['totales'][3];
     }
     return $informe;
 }
Ejemplo n.º 29
0
 protected function private_core()
 {
     $this->offset = 0;
     $this->articulo_s = FALSE;
     $this->agente = new agente();
     $this->tarifas = new tarifas_proveedores();
     $this->share_extension();
     /// ¿El usuario tiene permiso para eliminar en esta página?
     $this->allow_delete = $this->user->allow_delete_on(__CLASS__);
     if (isset($_GET['codproveedor'])) {
         //Primero seleccionamos proveedor
         $proveedor = new proveedor();
         $this->proveedor = $proveedor->get($_GET['codproveedor']);
         //Ahora buscamos un articulo
         if (isset($_REQUEST['buscar_articulo'])) {
             /// desactivamos la plantilla HTML
             $this->template = FALSE;
             $json = array();
             $articulo = new articulo();
             $this->articulos = $articulo->search($_REQUEST['buscar_articulo']);
             foreach ($this->articulos as $art) {
                 $json[] = array('value' => $art->descripcion, 'data' => $art->referencia);
             }
             header('Content-Type: application/json');
             echo json_encode(array('query' => $_REQUEST['buscar_articulo'], 'suggestions' => $json));
         } else {
             if (isset($_POST['tarifa_pvp'])) {
                 $this->nueva_tarifa();
                 //Luego Seleccionamos las tarifas mas recientes de los articulos para este proveedor
                 $this->tarifas_select = $this->tarifas->get_tarifas_proveedor_select($_GET['codproveedor']);
                 //Por ultimo seleccinamos todas las tarias de precios para este proveedor
                 $this->tarifas_all = $this->tarifas->get_tarifas_proveedor($_GET['codproveedor']);
                 //Para eliminar
             } else {
                 if (isset($_GET['delete_tarifa'])) {
                     $tarifa = $this->tarifas->get($_GET['delete_tarifa']);
                     if ($tarifa) {
                         if ($tarifa->delete()) {
                             $this->new_message('Tarifa eliminada correctamente.');
                         } else {
                             $this->new_error_msg('Imposible eliminar la tarifa.');
                         }
                     } else {
                         $this->new_error_msg('Tarifa no encontrada.');
                     }
                     //Luego Seleccionamos las tarifas mas recientes de los articulos para este proveedor
                     $this->tarifas_select = $this->tarifas->get_tarifas_proveedor_select($_GET['codproveedor']);
                     //Por ultimo seleccinamos todas las tarias de precios para este proveedor
                     $this->tarifas_all = $this->tarifas->get_tarifas_proveedor($_GET['codproveedor']);
                 } else {
                     //Luego Seleccionamos las tarifas mas recientes de los articulos para este proveedor
                     $this->tarifas_select = $this->tarifas->get_tarifas_proveedor_select($_GET['codproveedor']);
                     //Por ultimo seleccinamos todas las tarias de precios para este proveedor
                     $this->tarifas_all = $this->tarifas->get_tarifas_proveedor($_GET['codproveedor']);
                 }
             }
         }
     } else {
         $this->new_error_msg('Imposible enseñar tarifas, proveedor no seleccionado.');
     }
 }
Ejemplo n.º 30
0
 protected function private_core()
 {
     $this->share_extenstion();
     $recibo = new recibo_proveedor();
     $this->check_vencimiento = FALSE;
     $this->desde = '';
     $this->estado = '';
     $this->hasta = '';
     $this->num_pendientes = 0;
     $this->num_resultados = 0;
     $this->num_vencidos = 0;
     $this->proveedor = FALSE;
     $this->total_resultados = 0;
     $this->total_resultados_txt = '';
     $this->vencimiento = Date('d-m-Y', strtotime('+1month'));
     if (isset($_REQUEST['buscar_proveedor'])) {
         $this->buscar_proveedor();
     } else {
         if (isset($_POST['fecha'])) {
             $this->nuevo_recibo();
         } else {
             if (isset($_REQUEST['id'])) {
                 /// pestaña recibos de una factura
                 $this->template = 'tab_factura_proveedor';
                 $factura = new factura_proveedor();
                 $this->factura = $factura->get($_REQUEST['id']);
                 if ($this->factura) {
                     $this->resultados = $recibo->all_from_factura($_REQUEST['id']);
                     if (isset($_GET['regenerar'])) {
                         foreach ($this->resultados as $res) {
                             $res->delete();
                         }
                         $this->factura->pagada = FALSE;
                         $this->factura->save();
                         $this->sync_factura(TRUE);
                     }
                     $this->pagada_previamente = FALSE;
                     if ($this->factura->pagada and count($this->resultados) == 0) {
                         $this->pagada_previamente = TRUE;
                     } else {
                         $this->sync_factura(TRUE);
                     }
                 }
             } else {
                 $this->mostrar = 'todo';
                 if (isset($_GET['mostrar'])) {
                     $this->mostrar = $_GET['mostrar'];
                 }
                 $this->offset = 0;
                 if (isset($_GET['offset'])) {
                     $this->offset = intval($_GET['offset']);
                 }
                 if (isset($_GET['delete'])) {
                     $recibo2 = $recibo->get($_GET['delete']);
                     if ($recibo2) {
                         if ($recibo2->delete()) {
                             $this->new_message('Recibo eliminado correctamente.');
                         } else {
                             $this->new_message('Error al eliminar el recibo.');
                         }
                     } else {
                         $this->new_message('Recibo no encontrado.');
                     }
                 } else {
                     if (!isset($_GET['mostrar']) and isset($_REQUEST['codproveedor'])) {
                         $this->mostrar = 'buscar';
                     }
                 }
                 if (isset($_REQUEST['codproveedor'])) {
                     if ($_REQUEST['codproveedor'] != '') {
                         $pro0 = new proveedor();
                         $this->proveedor = $pro0->get($_REQUEST['codproveedor']);
                     }
                 }
                 if (isset($_REQUEST['desde'])) {
                     $this->desde = $_REQUEST['desde'];
                     $this->estado = $_REQUEST['estado'];
                     $this->hasta = $_REQUEST['hasta'];
                     $this->check_vencimiento = isset($_REQUEST['vencimiento']);
                 }
                 $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'] == 'fechav_desc') {
                                 $this->order = 'fechav DESC';
                             } else {
                                 if ($_GET['order'] == 'fechav_asc') {
                                     $this->order = 'fechav ASC';
                                 } else {
                                     if ($_GET['order'] == 'codigo_desc') {
                                         $this->order = 'codigo DESC';
                                     } else {
                                         if ($_GET['order'] == 'codigo_asc') {
                                             $this->order = 'codigo ASC';
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     setcookie('compras_recibos_order', $this->order, time() + FS_COOKIES_EXPIRE);
                 } else {
                     if (isset($_COOKIE['compras_recibos_order'])) {
                         $this->order = $_COOKIE['compras_recibos_order'];
                     }
                 }
                 $this->cron_job();
                 $this->buscar();
             }
         }
     }
 }