本文整理汇总了PHP中factura_cliente类的典型用法代码示例。如果您正苦于以下问题:PHP factura_cliente类的具体用法?PHP factura_cliente怎么用?PHP factura_cliente使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了factura_cliente类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: private_core
protected function private_core()
{
$this->share_extensions();
/// obtenemos los datos de configuración de impresión
$this->impresion = array('print_ref' => '1', 'print_dto' => '1', 'print_alb' => '0', 'print_formapago' => '1');
$fsvar = new fs_var();
$this->impresion = $fsvar->array_get($this->impresion, FALSE);
$this->factura = FALSE;
if (isset($_GET['id'])) {
$factura = new factura_cliente();
$this->factura = $factura->get($_GET['id']);
}
if (isset($_GET['abreviatura'])) {
$traduccion = new traduccion_fac_det();
$this->traduccion = $traduccion->get($_GET['abreviatura']);
} else {
$traduccion = new traduccion_fac_det();
$this->traduccion = $traduccion->get('es_ES');
}
if ($this->factura) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
if (isset($_POST['email'])) {
$this->enviar_email('factura', $_REQUEST['tipo']);
} else {
$filename = 'factura_' . $this->factura->codigo . '.pdf';
$this->generar_pdf(FALSE, $filename);
}
} else {
$this->new_error_msg("¡Factura de cliente no encontrada!");
}
}
示例2: private_core
protected function private_core()
{
$this->cliente = 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';
}
}
$this->template = FALSE;
if (isset($_REQUEST['id'])) {
$recibo0 = new recibo_cliente();
$this->recibo = $recibo0->get($_REQUEST['id']);
if ($this->recibo) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->recibo->codcliente);
$fact0 = new factura_cliente();
$this->factura = $fact0->get($this->recibo->idfactura);
$this->generar_pdf_recibo();
} else {
echo 'ERROR - Recibo no encontrado.';
}
} else {
$this->share_extensions();
}
}
示例3: process
protected function process()
{
$this->share_extensions();
$this->factura = FALSE;
if (isset($_GET['id'])) {
$factura = new factura_cliente();
$this->factura = $factura->get($_GET['id']);
}
if ($this->factura) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
$this->generar_pdf();
} else {
$this->new_error_msg("¡Factura de cliente no encontrada!");
}
}
示例4: private_core
protected function private_core()
{
$this->albaran = FALSE;
$this->cliente = 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_cliente();
$this->albaran = $alb->get($_REQUEST['id']);
if ($this->albaran) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->albaran->codcliente);
}
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_cliente();
$this->factura = $fac->get($_REQUEST['id']);
if ($this->factura) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
}
if (isset($_POST['email'])) {
$this->enviar_email('factura', $_REQUEST['tipo']);
} else {
$this->generar_pdf_factura($_REQUEST['tipo']);
}
}
}
$this->share_extensions();
}
示例5: private_core
protected function private_core()
{
$this->share_extension();
$this->serie = new serie();
$fact0 = new factura_cliente();
$this->factura = FALSE;
if (isset($_REQUEST['id'])) {
$this->factura = $fact0->get($_REQUEST['id']);
}
if ($this->factura) {
if (isset($_POST['id'])) {
$this->nueva_rectificativa();
}
} else {
$this->new_error_msg('Factura no encontrada.');
}
}
示例6: process
protected function process()
{
$this->show_fs_toolbar = FALSE;
$this->serie = new serie();
$this->share_extensions();
if (isset($_REQUEST['buscar_cliente'])) {
$this->buscar_cliente();
}
$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->codcliente = FALSE;
if (!isset($_POST['todos']) and isset($_POST['codcliente'])) {
$this->codcliente = $_POST['codcliente'];
}
$this->codserie = FALSE;
if (isset($_POST['codserie'])) {
$this->codserie = $_POST['codserie'];
}
/// ¿Marcamos ya las facturas?
if (isset($_POST['idfactura'])) {
$num = 0;
$fact0 = new factura_cliente();
foreach ($_POST['idfactura'] as $id) {
$factura = $fact0->get($id);
if ($factura) {
$factura->pagada = TRUE;
$factura->save();
$num++;
}
}
$this->new_message($num . ' facturas marcadas como pagadas, estas son las siguientes.');
}
$this->resultados = FALSE;
if (isset($_POST['desde'])) {
$this->resultados = $this->buscar_facturas();
}
}
示例7: private_core
protected function private_core()
{
/// ¿El usuario tiene permiso para eliminar en esta página?
$this->allow_delete = $this->user->allow_delete_on(__CLASS__);
$this->share_extensions();
$this->modelonumero = new modelonumero();
$this->ppage = $this->page->get('ventas_facturas');
$this->ejercicio = new ejercicio();
$this->agente = FALSE;
$this->agentes = array();
$this->cliente = FALSE;
$this->divisa = new divisa();
$factura = new factura_cliente();
$this->factura = FALSE;
$this->forma_pago = new forma_pago();
$this->pais = new pais();
$this->rectificada = FALSE;
$this->rectificativa = FALSE;
$this->serie = new serie();
if (isset($_GET['id'])) {
$this->factura = $factura->get($_GET['id']);
}
if ($this->factura) {
$this->page->title = $this->factura->codigo;
/// cargamos el agente
$agente = new agente();
if (!is_null($this->factura->codagente)) {
$this->agente = $agente->get($this->factura->codagente);
}
$this->agentes = $agente->all();
/// cargamos el cliente
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
if ($this->factura->idfacturarect) {
$this->rectificada = $factura->get($this->factura->idfacturarect);
} else {
$this->get_factura_rectificativa();
}
} else {
$this->new_error_msg("¡Factura de cliente no encontrada!");
}
}
示例8: process
protected function process()
{
$this->show_fs_toolbar = FALSE;
$this->albaran = FALSE;
$this->cliente = FALSE;
$this->factura = FALSE;
$this->impuesto = new impuesto();
if (isset($_REQUEST['albaran']) and isset($_REQUEST['id'])) {
$alb = new albaran_cliente();
$this->albaran = $alb->get($_REQUEST['id']);
if ($this->albaran) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->albaran->codcliente);
}
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_cliente();
$this->factura = $fac->get($_REQUEST['id']);
if ($this->factura) {
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
}
if (isset($_POST['email'])) {
$this->enviar_email('factura', $_REQUEST['tipo']);
} else {
$this->generar_pdf_factura($_REQUEST['tipo']);
}
}
}
$this->share_extensions();
}
示例9: process
protected function process()
{
$this->ppage = $this->page->get('ventas_facturas');
$this->ejercicio = new ejercicio();
$this->agente = FALSE;
$this->cliente = FALSE;
$factura = new factura_cliente();
$this->factura = FALSE;
$this->forma_pago = new forma_pago();
/// ¿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;
}
}
/**
* ¿Modificamos la factura?
*/
if (isset($_POST['idfactura'])) {
$this->factura = $factura->get($_POST['idfactura']);
$this->factura->observaciones = $_POST['observaciones'];
$this->factura->numero2 = $_POST['numero2'];
/// 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.');
}
/// ¿cambiamos la forma de pago?
if ($this->factura->codpago != $_POST['forma_pago']) {
$this->factura->codpago = $_POST['forma_pago'];
$this->factura->vencimiento = $this->nuevo_vencimiento($this->factura->fecha, $this->factura->codpago);
} else {
$this->factura->vencimiento = $_POST['vencimiento'];
}
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 Cliente ' . $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 cliente
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
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($_GET['updatedir'])) {
$this->actualizar_direccion();
} 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 cliente no encontrada!");
}
}
示例10: get_factura
public function get_factura()
{
if ($this->tipodocumento == 'Factura de cliente') {
$fac = new factura_cliente();
return $fac->get_by_codigo($this->documento);
} else {
if ($this->tipodocumento == 'Factura de proveedor') {
$fac = new factura_proveedor();
return $fac->get_by_codigo($this->documento);
} else {
return FALSE;
}
}
}
示例11: private_core
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('ventas_facturas');
$this->ejercicio = new ejercicio();
$this->agente = FALSE;
$this->agentes = array();
$this->cliente = FALSE;
$this->divisa = new divisa();
$this->factura = FALSE;
$this->forma_pago = new forma_pago();
$this->pais = new pais();
$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;
}
}
/**
* ¿Modificamos la factura?
*/
$factura = new factura_cliente();
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
$agente = new agente();
if (!is_null($this->factura->codagente)) {
$this->agente = $agente->get($this->factura->codagente);
}
$this->agentes = $agente->all();
/// cargamos el cliente
$cliente = new cliente();
$this->cliente = $cliente->get($this->factura->codcliente);
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($_GET['updatedir'])) {
$this->actualizar_direccion();
} 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 cliente no encontrada!");
}
}
示例12: test_models
private function test_models()
{
$mpp = 100;
$last_errores = array();
switch ($this->informe['model']) {
default:
/// tablas
$this->test_tablas();
break;
case 'asiento':
$asiento = new asiento();
$asientos = $asiento->all($this->informe['offset'], $mpp);
if ($asientos) {
if ($this->informe['offset'] == 0) {
foreach ($this->check_partidas_erroneas() as $err) {
$last_errores[] = $err;
}
}
foreach ($asientos as $asi) {
if ($asi->codejercicio == $this->informe['ejercicio']) {
if ($this->informe['all']) {
$this->informe['model'] = 'factura cliente';
} else {
$this->informe['model'] = 'fin';
}
$this->informe['offset'] = 0;
break;
} else {
if (!$asi->full_test($this->informe['duplicados'])) {
$last_errores[] = array('error' => 'Fallo en full_test()', 'model' => $this->informe['model'], 'ejercicio' => $asi->codejercicio, 'id' => $asi->numero, 'url' => $asi->url(), 'fecha' => $asi->fecha, 'fix' => $asi->fix());
}
}
}
$this->informe['offset'] += $mpp;
} else {
if ($this->informe['all']) {
$this->informe['model'] = 'factura cliente';
$this->informe['offset'] = 0;
} else {
$this->informe['model'] = 'fin';
$this->informe['offset'] = 0;
}
}
break;
case 'factura cliente':
$factura = new factura_cliente();
$facturas = $factura->all($this->informe['offset'], $mpp);
if ($facturas) {
foreach ($facturas as $fac) {
if ($fac->codejercicio == $this->informe['ejercicio']) {
if ($this->informe['all']) {
$this->informe['model'] = 'factura proveedor';
} else {
$this->informe['model'] = 'fin';
}
$this->informe['offset'] = 0;
break;
} else {
if (!$fac->full_test($this->informe['duplicados'])) {
$last_errores[] = array('error' => 'Fallo en full_test()', 'model' => $this->informe['model'], 'ejercicio' => $fac->codejercicio, 'id' => $fac->codigo, 'url' => $fac->url(), 'fecha' => $fac->fecha, 'fix' => FALSE);
}
}
}
$this->informe['offset'] += $mpp;
} else {
if ($this->informe['all']) {
$this->informe['model'] = 'factura proveedor';
$this->informe['offset'] = 0;
} else {
$this->informe['model'] = 'fin';
$this->informe['offset'] = 0;
}
}
break;
case 'factura proveedor':
$factura = new factura_proveedor();
$facturas = $factura->all($this->informe['offset'], $mpp);
if ($facturas) {
foreach ($facturas as $fac) {
if ($fac->codejercicio == $this->informe['ejercicio']) {
if ($this->informe['all']) {
$this->informe['model'] = 'albaran cliente';
} else {
$this->informe['model'] = 'fin';
}
$this->informe['offset'] = 0;
break;
} else {
if (!$fac->full_test($this->informe['duplicados'])) {
$last_errores[] = array('error' => 'Fallo en full_test()', 'model' => $this->informe['model'], 'ejercicio' => $fac->codejercicio, 'id' => $fac->codigo, 'url' => $fac->url(), 'fecha' => $fac->fecha, 'fix' => FALSE);
}
}
}
$this->informe['offset'] += $mpp;
} else {
if ($this->informe['all']) {
$this->informe['model'] = 'albaran cliente';
$this->informe['offset'] = 0;
} else {
$this->informe['model'] = 'fin';
//.........这里部分代码省略.........
示例13: test_models
private function test_models()
{
$last_errores = array();
switch ($this->informe['model']) {
default:
/// tablas
$this->test_tablas();
break;
case 'asiento':
$asiento = new asiento();
$asientos = $asiento->all($this->informe['offset']);
if ($asientos) {
if ($this->informe['offset'] == 0) {
foreach ($this->check_partidas_erroneas() as $err) {
$last_errores[] = $err;
}
}
foreach ($asientos as $asi) {
if ($asi->codejercicio == $this->informe['ejercicio']) {
if ($this->informe['all']) {
$this->informe['model'] = 'factura cliente';
} else {
$this->informe['model'] = 'fin';
}
$this->informe['offset'] = 0;
break;
} else {
if (!$asi->full_test($this->informe['duplicados'])) {
$last_errores[] = array('error' => 'Fallo en full_test()', 'model' => $this->informe['model'], 'ejercicio' => $asi->codejercicio, 'id' => $asi->numero, 'url' => $asi->url(), 'fecha' => $asi->fecha, 'fix' => $asi->fix());
}
}
}
$this->informe['offset'] += FS_ITEM_LIMIT;
} else {
if ($this->informe['all']) {
$this->informe['model'] = 'factura cliente';
$this->informe['offset'] = 0;
} else {
$this->informe['model'] = 'fin';
$this->informe['offset'] = 0;
}
}
break;
case 'factura cliente':
$factura = new factura_cliente();
$facturas = $factura->all($this->informe['offset']);
if ($facturas) {
foreach ($facturas as $fac) {
if ($fac->codejercicio == $this->informe['ejercicio']) {
if ($this->informe['all']) {
$this->informe['model'] = 'factura proveedor';
} else {
$this->informe['model'] = 'fin';
}
$this->informe['offset'] = 0;
break;
} else {
if (!$fac->full_test($this->informe['duplicados'])) {
$last_errores[] = array('error' => 'Fallo en full_test()', 'model' => $this->informe['model'], 'ejercicio' => $fac->codejercicio, 'id' => $fac->codigo, 'url' => $fac->url(), 'fecha' => $fac->fecha, 'fix' => FALSE);
}
}
}
$this->informe['offset'] += FS_ITEM_LIMIT;
} else {
if ($this->informe['all']) {
$this->informe['model'] = 'factura proveedor';
$this->informe['offset'] = 0;
} else {
$this->informe['model'] = 'fin';
$this->informe['offset'] = 0;
}
}
break;
case 'factura proveedor':
$factura = new factura_proveedor();
$facturas = $factura->all($this->informe['offset']);
if ($facturas) {
foreach ($facturas as $fac) {
if ($fac->codejercicio == $this->informe['ejercicio']) {
if ($this->informe['all']) {
$this->informe['model'] = 'albaran cliente';
} else {
$this->informe['model'] = 'fin';
}
$this->informe['offset'] = 0;
break;
} else {
if (!$fac->full_test($this->informe['duplicados'])) {
$last_errores[] = array('error' => 'Fallo en full_test()', 'model' => $this->informe['model'], 'ejercicio' => $fac->codejercicio, 'id' => $fac->codigo, 'url' => $fac->url(), 'fecha' => $fac->fecha, 'fix' => FALSE);
}
}
}
$this->informe['offset'] += FS_ITEM_LIMIT;
} else {
if ($this->informe['all']) {
$this->informe['model'] = 'albaran cliente';
$this->informe['offset'] = 0;
} else {
$this->informe['model'] = 'fin';
$this->informe['offset'] = 0;
//.........这里部分代码省略.........
示例14: delete
public function delete()
{
if ($this->db->exec("DELETE FROM " . $this->table_name . " WHERE idalbaran = " . $this->var2str($this->idalbaran) . ";")) {
if ($this->idfactura) {
/**
* Delegamos la eliminación de la factura en la clase correspondiente,
* que tendrá que hacer más cosas.
*/
$factura = new factura_cliente();
$factura0 = $factura->get($this->idfactura);
if ($factura0) {
$factura0->delete();
}
}
return TRUE;
} else {
return FALSE;
}
}
示例15: generar_asiento_venta
/**
* Genera el asiento contable para una factura de venta.
* 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_cliente $factura
*/
public function generar_asiento_venta(&$factura)
{
$ok = FALSE;
$this->asiento = FALSE;
$cliente0 = new cliente();
$subcuenta_cli = 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) {
$divisa = $this->divisa->get($this->empresa->coddivisa);
if ($divisa) {
$tasaconv = $divisa->tasaconv / $factura->tasaconv;
$tasaconv2 = $divisa->tasaconv_compra;
}
}
/// obtenemos el clientes y su subcuenta
$cliente = $cliente0->get($factura->codcliente);
if ($cliente) {
$subcuenta_cli = $cliente->get_subcuenta($factura->codejercicio);
}
if (!$subcuenta_cli) {
$eje0 = $this->ejercicio->get($factura->codejercicio);
$this->new_message("No se ha podido generar una subcuenta para el cliente\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->codigo . " (ventas) - " . $factura->nombrecliente;
} else {
$asiento->concepto = "Factura de venta " . $factura->codigo . " - " . $factura->nombrecliente;
}
$asiento->documento = $factura->codigo;
$asiento->editable = FALSE;
$asiento->fecha = $factura->fecha;
$asiento->importe = abs($factura->total * $tasaconv);
$asiento->tipodocumento = 'Factura de cliente';
if ($asiento->save()) {
$asiento_correcto = TRUE;
$partida0 = new partida();
$partida0->idasiento = $asiento->idasiento;
$partida0->concepto = $asiento->concepto;
$partida0->idsubcuenta = $subcuenta_cli->idsubcuenta;
$partida0->codsubcuenta = $subcuenta_cli->codsubcuenta;
$partida0->debe = $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]->codsubcuentarep) {
$subcuenta_iva = $this->subcuenta->get_by_codigo($this->impuestos[$li->codimpuesto]->codsubcuentarep, $asiento->codejercicio);
}
}
if (!$subcuenta_iva) {
$subcuenta_iva = $this->subcuenta->get_cuentaesp('IVAREP', $asiento->codejercicio);
}
if ($li->totaliva == 0 and $li->totalrecargo == 0) {
/// no hacemos nada si no hay IVA ni RE
} else {
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->haber = $li->totaliva * $tasaconv;
$partida1->idcontrapartida = $subcuenta_cli->idsubcuenta;
$partida1->codcontrapartida = $subcuenta_cli->codsubcuenta;
$partida1->cifnif = $cliente->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();
//.........这里部分代码省略.........