<commit_before><?php if (isset($Contribuyente)) : ?>
<ul class="nav nav-pills float-right">
    <li class="nav-item">
        <a href="<?=$_base?>/dte/contribuyentes/usuarios/<?=$Contribuyente->rut?>" title="Usuarios autorizados" class="nav-link">
            <i class="fa fa-users"></i>
            Usuarios
        </a>
    </li>
    <li class="nav-item">
        <a href="<?=$_base?>/dte/contribuyentes/seleccionar/<?=$Contribuyente->rut?>" title="Seleccionar empresa" class="nav-link">
            <i class="fa fa-check"></i>
            Seleccionar
        </a>
    </li>
</ul>
<?php endif; ?>

<div class="page-header"><h1><?=$titulo?></h1></div>
<p><?=$descripcion?></p>

<?php
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['id'=>$form_id, 'onsubmit'=>'Form.check() && Form.confirm(this)']);
?>

<script type="text/javascript">
var impuestos_adicionales_tasa = <?=json_encode($impuestos_adicionales_tasa)?>;
$(function() {
    var url = document.location.toString();
    if (url.match('#')) {
        $('#'+url.split('#')[1]+'-tab').tab('show');
    }
});
</script>

<div role="tabpanel">
    <ul class="nav nav-tabs" role="tablist">
        <li class="nav-item"><a href="#datos" aria-controls="datos" role="tab" data-toggle="tab" id="datos-tab" class="nav-link active" aria-selected="true">Empresa</a></li>
        <li class="nav-item"><a href="#ambientes" aria-controls="ambientes" role="tab" data-toggle="tab" id="ambientes-tab" class="nav-link">Ambientes</a></li>
        <li class="nav-item"><a href="#correos" aria-controls="correos" role="tab" data-toggle="tab" id="correos-tab" class="nav-link">Correos</a></li>
        <li class="nav-item"><a href="#facturacion" aria-controls="facturacion" role="tab" data-toggle="tab" id="facturacion-tab" class="nav-link">Facturación</a></li>
<?php if (isset($Contribuyente)) : ?>
        <li class="nav-item"><a href="#apps" aria-controls="apps" role="tab" data-toggle="tab" id="apps-tab" class="nav-link">Apps</a></li>
        <li class="nav-item"><a href="#general" aria-controls="general" role="tab" data-toggle="tab" id="general-tab" class="nav-link">General</a></li>
<?php endif; ?>
    </ul>
    <div class="tab-content pt-4">

<!-- INICIO DATOS EMPRESA -->
<div role="tabpanel" class="tab-pane active" id="datos" aria-labelledby="datos-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos básicos
        </div>
        <div class="card-body">
<?php
if ($form_id=='registrarContribuyente') {
    echo $f->input([
        'name' => 'rut',
        'label' => 'RUT',
        'check' => 'notempty rut',
        'attr' => 'maxlength="12" onblur="Contribuyente.setDatos(\'registrarContribuyente\')"',
    ]);
}
echo $f->input([
    'name' => 'razon_social',
    'label' => 'Razón social',
    'value' => isset($Contribuyente) ? $Contribuyente->razon_social : null,
    'check' => 'notempty',
    'attr' => 'maxlength="100"',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'actividad_economica',
    'label' => 'Actividad principal',
    'value' => isset($Contribuyente) ? $Contribuyente->actividad_economica : null,
    'help' => 'Indique la actividad económica principal de la empresa',
    'options' => [''=>'Seleccionar una actividad económica'] + $actividades_economicas,
    'check' => 'notempty',
    'attr'=>'onchange="document.getElementById(\'giroField\').value = this.options[this.selectedIndex].text.substr(this.options[this.selectedIndex].text.indexOf(\'-\')+1, 80)"',
]);
echo $f->input([
    'name' => 'giro',
    'label' => 'Giro',
    'value' => isset($Contribuyente) ? $Contribuyente->giro : null,
    'check' => 'notempty',
    'attr' => 'maxlength="80"',
    'help' => 'Indique el giro comercial principal de la empresa (sin utilizar abreviaciones)',
]);
echo $f->input([
    'name' => 'direccion',
    'label' => 'Dirección',
    'value' => isset($Contribuyente) ? $Contribuyente->direccion : null,
    'help' => 'Dirección casa matriz',
    'check' => 'notempty',
    'attr' => 'maxlength="70"',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'comuna',
    'label' => 'Comuna',
    'value' => isset($Contribuyente) ? $Contribuyente->comuna : null,
    'help' => 'Comuna casa matriz',
    'options' => [''=>'Seleccionar una comuna'] + $comunas,
    'check' => 'notempty',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos extras
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_extra_nombre_fantasia',
    'label' => 'Nombre fantasía',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_nombre_fantasia : null,
    'attr' => 'maxlength="100"',
]);
$config_extra_otras_actividades = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_otras_actividades) {
    foreach ($Contribuyente->config_extra_otras_actividades as $a) {
        $config_extra_otras_actividades[] = [
            'config_extra_otras_actividades_actividad' => is_object($a) ? $a->actividad : $a,
            'config_extra_otras_actividades_giro' => is_object($a) ? $a->giro : '',
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'otras_actividades',
    'label' => 'Otras actividades',
    'titles' => ['Actividad económica', 'Giro'],
    'inputs' => [
        [
            'type' => 'select',
            'name' => 'config_extra_otras_actividades_actividad',
            'options' => [''=>'Seleccionar una actividad económica'] + $actividades_economicas,
            'check' => 'notempty',
        ],
        [
            'name' => 'config_extra_otras_actividades_giro',
            'placeholder' => 'Mismo giro actividad principal',
            'attr' => 'maxlength="80" style="min-width:20em"',
        ]
    ],
    'values' => $config_extra_otras_actividades,
    'help' => 'Indique las actividades económicas secundarias de la empresa y los giros (si son diferentes al principal)',
]);
$config_extra_sucursales = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_sucursales) {
    foreach ($Contribuyente->config_extra_sucursales as $sucursal) {
        $config_extra_sucursales[] = [
            'config_extra_sucursales_codigo' => $sucursal->codigo,
            'config_extra_sucursales_sucursal' => $sucursal->sucursal,
            'config_extra_sucursales_direccion' => $sucursal->direccion,
            'config_extra_sucursales_comuna' => $sucursal->comuna,
            'config_extra_sucursales_actividad_economica' => !empty($sucursal->actividad_economica) ? $sucursal->actividad_economica : null,
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'sucursales',
    'label' => 'Sucursales',
    'titles' => ['Código SII', 'Nombre', 'Dirección', 'Comuna', 'Act. Económ.'],
    'inputs' => [
        [
            'name' => 'config_extra_sucursales_codigo',
            'check' => 'notempty integer',
            'attr' => 'style="max-width:8em"'
        ],
        [
            'name' => 'config_extra_sucursales_sucursal',
            'check' => 'notempty',
            'attr' => 'maxlength="20" style="max-width:12em"',
        ],
        [
            'name' => 'config_extra_sucursales_direccion',
            'check' => 'notempty',
            'attr' => 'maxlength="70"',
        ],
        [
            'type' => 'select',
            'name' => 'config_extra_sucursales_comuna',
            'options' => [''=>'Seleccionar una comuna'] + $comunas,
            'check' => 'notempty',
        ],
        [
            'type' => 'select',
            'name' => 'config_extra_sucursales_actividad_economica',
            'options' => [''=>'Misma casa matriz'] + (isset($Contribuyente)?$Contribuyente->getListActividades():[]),
            'attr' => 'style="max-width:14em"'
        ]
    ],
    'values' => $config_extra_sucursales,
    'help' => 'Sucursales de la empresa con código asignado por el SII',
]);
echo $f->input([
    'name' => 'telefono',
    'label' => 'Teléfono',
    'value' => isset($Contribuyente) ? $Contribuyente->telefono : null,
    'placeholder' => '+56 9 88776655',
    'help' => 'Ejemplos: celular +56 9 88776655 / Santiago +56 2 22334455 / Santa Cruz +56 72 2821122',
    'check' => 'telephone',
    'attr' => 'maxlength="20"',
]);
echo $f->input([
    'name' => 'email',
    'label' => 'Email',
    'value' => isset($Contribuyente) ? $Contribuyente->email : null,
    'check' => 'email',
    'attr' => 'maxlength="80"',
]);
echo $f->input([
    'name' => 'config_extra_web',
    'label' => 'Web',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_web : null,
    'attr' => 'maxlength="80"',
]);
echo $f->input([
    'type' => 'file',
    'name' => 'logo',
    'label' => 'Logo',
    'help' => 'Imagen en formato PNG con el logo de la empresa',
    'attr' => 'accept="image/png"',
]);
?>
<?php if (isset($Contribuyente)) : ?>
<div class="text-center">
    <img src="../logo/<?=$Contribuyente->rut?>.png" alt="Logo <?=$Contribuyente->razon_social?>" class="img-fluid img-thumbnail" />
    <br/><br/>
</div>
<?php endif; ?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos representante legal
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_extra_representante_run',
    'label' => 'RUN',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_representante_run : null,
    'check' => 'rut',
]);
echo $f->input([
    'name' => 'config_extra_representante_nombre',
    'label' => 'Nombre',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_representante_nombre : null,
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos SII empresa
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'text',
    'name' => 'config_sii_pass',
    'label' => 'Contraseña SII',
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_pass : null,
    'attr' => 'onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"',
    'help' => 'Permite acceder a ciertas funcionalidades que se conectan al SII',
]);
?>
        </div>
    </div>
</div>
<!-- FIN DATOS EMPRESA -->

<!-- INICIO AMBIENTES -->
<div role="tabpanel" class="tab-pane" id="ambientes" aria-labelledby="ambientes-tab">
<div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-university"></i>
            Ambiente de facturación en SII
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_ambiente_en_certificacion',
    'label' => 'Ambiente',
    'options' => ['Producción (documentos válidos)', 'Certificación / Pruebas (documentos no válidos)'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_en_certificacion : 1,
    'help' => 'Permite elegir entre un ambiente de pruebas o uno real para la emisión de los DTE',
    'check' => 'notempty',
    'attr' => 'onchange="ambiente_set(this.value)"',
]);
echo $f->input([
    'type' => 'date',
    'name' => 'config_ambiente_produccion_fecha',
    'label' => 'Fecha resolución',
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_produccion_fecha : null,
    'help' => 'Fecha de la resolución que autoriza la emisión de DTE en ambiente de producción. Se obtiene <a href="https://palena.sii.cl/cvc/dte/ee_empresas_dte.html" target="_blank">aquí</a>.',
    'check' => 'notempty date',
    'attr' => isset($Contribuyente) ? ($Contribuyente->config_ambiente_en_certificacion?'disabled="disabled"':'') : 'disabled="disabled"',
]);
echo $f->input([
    'name' => 'config_ambiente_produccion_numero',
    'label' => 'Número resolución',
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_produccion_numero : null,
    'help' => 'Número de la resolución que autoriza la emisión de DTE en ambiente de producción. Se obtiene en mismo lugar que fecha resolución producción.',
    'check' => 'notempty integer',
    'attr' => isset($Contribuyente) ? ($Contribuyente->config_ambiente_en_certificacion?'disabled="disabled"':'') : 'disabled="disabled"',
]);
echo $f->input([
    'type' => 'date',
    'name' => 'config_ambiente_certificacion_fecha',
    'label' => 'Fecha certificación',
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_certificacion_fecha : null,
    'help' => 'Fecha de la autorización para emisión de DTE en ambiente de certificación. Se obtiene <a href="https://maullin.sii.cl/cvc/dte/ee_empresas_dte.html" target="_blank">aquí</a>.',
    'check' => 'notempty date',
    'attr' => isset($Contribuyente) ? ($Contribuyente->config_ambiente_en_certificacion?'':'disabled="disabled"') : '',
]);
?>
        </div>
    </div>
</div>
<!-- FIN AMBIENTES -->

<!-- INICIO EMAILS -->
<div role="tabpanel" class="tab-pane" id="correos" aria-labelledby="correos-tab">
    <p>Aquí debe configurar las dos casillas de correo para operar con facturación electrónica. Puede revisar la <a href="http://wiki.libredte.cl/doku.php/faq/libredte/sowerphp/config/email">documentación de las casillas de correo</a> para obtener detalles de qué opciones debe usar.</p>
<?php if (isset($Contribuyente) and $Contribuyente->getFirma()) : ?>
    <p>Los correos deben coincidir con los registrados en el SII, los debe verificar en <a href="#" onclick="__.popup('<?=$_base?>/dte/sii/contribuyente_datos/<?=$Contribuyente->rut?>-<?=$Contribuyente->dv?>', 750, 550); return false" title="Ver datos del contribuyente en el SII">el sitio del web de impuestos internos</a>.</p>
<?php endif; ?>
    <div class="row">
        <div class="col-md-6">
            <div class="card mb-4">
                <div class="card-header">
                    <i class="fa fa-envelope"></i>
                    Correo contacto SII
                </div>
                <div class="card-body">
<?php
$f->setColsLabel(3);
echo $f->input([
    'name' => 'config_email_sii_user',
    'label' => 'Correo',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_user : null,
    'attr' => 'maxlength="50" onblur="config_email_set(this, \'sii\')"',
    'check' => 'notempty email',
]);
echo $f->input([
    'name' => 'config_email_sii_pass',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_pass : null,
    'label' => 'Contraseña',
    'check' => 'notempty',
    'attr' => 'onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"',
]);
echo $f->input([
    'name' => 'config_email_sii_smtp',
    'label' => 'Servidor SMTP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_smtp : null,
    'help' => 'Ejemplo: ssl://smtp.gmail.com:465'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/sii/smtp\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="50"',
    'check' => 'notempty',
]);
echo $f->input([
    'name' => 'config_email_sii_imap',
    'label' => 'Mailbox IMAP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_imap : null,
    'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/sii/imap\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="100"',
    'check' => 'notempty',
]);
?>
                </div>
            </div>
        </div>
        <div class="col-md-6">
            <div class="card mb-4">
                <div class="card-header">
                    <i class="far fa-envelope"></i>
                    Correo contacto empresas (intercambio)
                </div>
                <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_email_intercambio_user',
    'label' => 'Correo',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_user : null,
    'attr' => 'maxlength="50" onblur="config_email_set(this, \'intercambio\')"',
    'check' => 'notempty email',
]);
echo $f->input([
    'name' => 'config_email_intercambio_pass',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_pass : null,
    'label' => 'Contraseña',
    'check' => 'notempty',
    'attr' => 'onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"',
]);
echo $f->input([
    'name' => 'config_email_intercambio_smtp',
    'label' => 'Servidor SMTP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_smtp : null,
    'help' => 'Ejemplo: ssl://smtp.gmail.com:465'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/intercambio/smtp\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="50"',
    'check' => 'notempty',
]);
echo $f->input([
    'name' => 'config_email_intercambio_imap',
    'label' => 'Mailbox IMAP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_imap : null,
    'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/intercambio/imap\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="100"',
    'check' => 'notempty',
]);
$f->setColsLabel();
?>
                </div>
            </div>
        </div>
    </div>
</div>
<!-- FIN EMAILS -->

<!-- INICIO CONFIGURACIÓN FACTURACIÓN -->
<div role="tabpanel" class="tab-pane" id="facturacion" aria-labelledby="facturacion-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-paper-plane"></i>
            Emisión documentos
        </div>
        <div class="card-body">
            <div class="row">
                <div class="col-md-6">
<?php
$f->setColsLabel(4);
if (!empty($tipos_dte)) {
    echo $f->input([
        'type' => 'select',
        'name' => 'config_emision_dte_defecto',
        'label' => 'DTE defecto',
        'options' => $tipos_dte,
        'value' => isset($Contribuyente) ? $Contribuyente->config_emision_dte_defecto : 33,
        'help' => '¿Qué documento debe estar seleccionado por defecto al emitir?',
    ]);
}
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_solo_items_codificados',
    'label' => 'Sólo items codificados',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_solo_items_codificados : 0,
    'help' => '¿Restringir la creación de documentos sólo a items de productos o servicios que estén codificados?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_exenta',
    'label' => 'Empresa exenta',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_exenta : 0,
    'help' => '¿El contribuyente es exento de IVA en todas sus actividades económicas?',
]);
$IndServicio = [
    1 => 'Factura o boleta de servicios períodicos domiciliarios', // boleta es periodico no domiciliario (se ajusta)
    2 => 'Factura o boleta de otros servicios períodicos (no domiciliarios)',  // boleta es periodico domiciliario (se ajusta)
    3 => 'Factura de servicios o boleta de ventas y servicios',
    4 => 'Factura exportación de servicios de hotelería o boleta de espectáculos emitida por cuenta de terceros',
    5 => 'Factura exportación de servicios de transporte internacional',
];
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_indicador_servicio',
    'label' => 'Indicador servicio',
    'options' => [''=>'No'] + $IndServicio,
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_indicador_servicio : 0,
    'help' => '¿Se debe usar un indicador de servicio por defecto?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_asignar_folio',
    'label' => 'Folio manual',
    'options' => [
        'Ningún usuario puede asignar manualmente el folio',
        'Sólo administradores pueden asignar manualmente el folio',
        'Cualquier usuario con rol \'dte\' puede asignar manualmente el folio',
    ],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_asignar_folio : 0,
    'help' => '¿Es posible elegir manualmente qué folio se desea utilizar en un documento que se emitirá?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_forma_pago',
    'label' => 'Forma de pago',
    'options' => [''=>'Sin forma de pago', 1=>'Contado', 2=>'Crédito'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_forma_pago : 0,
    'help' => '¿Forma de pago por defecto?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_constructora',
    'label' => 'Empresa constructora',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_constructora : 0,
    'help' => '¿El contribuyente es una empresa constructora (para crédito del 65%)?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_agente_retenedor',
    'label' => 'Agente retenedor',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_agente_retenedor : 0,
    'help' => '¿El contribuyente actúa como agente retenedor de algún producto?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_sii_envio_automatico',
    'label' => 'Envío automático',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_envio_automatico : 0,
    'help' => '¿Se deben enviar automáticamente los DTE al SII sin pasar por previsualización?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_intercambio_automatico',
    'label' => 'Intercambio automático',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_intercambio_automatico : 0,
    'help' => '¿Enviar automáticamente al correo de intercambio el DTE emitido que no tiene recepción registrada? (no envía boletas, sólo DTEs aceptados por el SII)',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_email',
    'label' => 'Enviar email al emitir',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_email : 0,
    'help' => '¿Enviar automáticamente a los correos disponibles el DTE emitido que ha sido generado? (todos los documentos, sin importar el estado)',
]);
?>
                </div>
            </div>
<?php
$f->setColsLabel();
$config_extra_impuestos_adicionales = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_impuestos_adicionales) {
    foreach ($Contribuyente->config_extra_impuestos_adicionales as $impuesto) {
        $config_extra_impuestos_adicionales[] = [
            'config_extra_impuestos_adicionales_codigo' => $impuesto->codigo,
            'config_extra_impuestos_adicionales_tasa' => $impuesto->tasa,
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'impuestos_adicionales',
    'label' => 'Impuestos adicionales',
    'titles' => ['Impuesto adicional', 'Tasa por defecto'],
    'inputs' => [
        [
            'type' => 'select',
            'name' => 'config_extra_impuestos_adicionales_codigo',
            'options' => [''=>'Seleccionar un impuesto adicional'] + $impuestos_adicionales,
            'check' => 'notempty',
            'onblur'=>'impuesto_adicional_sugerir_tasa(this, impuestos_adicionales_tasa)',
        ],
        [
            'name' => 'config_extra_impuestos_adicionales_tasa',
            'check' => 'notempty',
        ]
    ],
    'values' => $config_extra_impuestos_adicionales,
    'help' => 'Indique los impuestos adicionales o retenciones que desea utilizar en la emisión de documentos',
]);
if (!empty($tipos_dte)) {
    $config_emision_observaciones = [];
    if (isset($Contribuyente) and $Contribuyente->config_emision_observaciones) {
        foreach ($Contribuyente->config_emision_observaciones as $dte => $glosa) {
            $config_emision_observaciones[] = [
                'config_emision_observaciones_dte' => $dte,
                'config_emision_observaciones_glosa' => $glosa,
            ];
        }
    }
    echo $f->input([
        'type' => 'js',
        'id' => 'config_emision_observaciones',
        'label' => 'Observación emisión',
        'titles' => ['Documento', 'Observación'],
        'inputs' => [
            [
                'type' => 'select',
                'name' => 'config_emision_observaciones_dte',
                'options' => [''=>'Seleccionar un tipo de documento'] + $tipos_dte,
                'check' => 'notempty',
            ],
            [
                'name' => 'config_emision_observaciones_glosa',
                'check' => 'notempty',
                'attr' => 'maxlength="100"',
            ]
        ],
        'values' => $config_emision_observaciones,
        'help' => 'Observación por defecto según tipo de DTE emitido',
    ]);
}
$config_extra_impuestos_sin_credito = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_impuestos_sin_credito) {
    foreach ($Contribuyente->config_extra_impuestos_sin_credito as $impuesto) {
        $config_extra_impuestos_sin_credito[] = [
            'config_extra_impuestos_sin_credito_codigo' => $impuesto,
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'impuestos_sin_credito',
    'label' => 'Impuestos sin crédito',
    'titles' => ['Impuesto sin crédito'],
    'inputs' => [
        [
            'type' => 'select',
            'name' => 'config_extra_impuestos_sin_credito_codigo',
            'options' => [''=>'Seleccionar un impuesto'] + $impuestos_adicionales_todos,
            'check' => 'notempty',
        ],
    ],
    'values' => $config_extra_impuestos_sin_credito,
    'help' => 'Indique los impuestos que no dan derecho a ser usados como crédito (no son recuperables)',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-file-pdf"></i>
            Versión impresa del DTE
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_pdf_web_verificacion',
    'label' => 'Web verificación boletas electrónicas',
    'placeholder' => 'libredte.cl/boletas',
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_web_verificacion : '',
    'help' => 'Enlace que se incluirá en las boletas para que el cliente pueda realizar la verificación',
]);
?>
<?php $f->setColsLabel(4); ?>
            <div class="row">
                <div class="col-md-6">
<?php
echo $f->input([
    'name' => 'config_pdf_copias_tributarias',
    'label' => 'Copias tributarias',
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_copias_tributarias : 1,
    'help' => '¿Copias tributarias que se generarán por defecto?',
    'check' => 'notempty integer',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'name' => 'config_pdf_copias_cedibles',
    'label' => 'Copias cedibles',
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_copias_cedibles : 1,
    'help' => '¿Copias cedibles que se generarán por defecto?',
    'check' => 'notempty integer',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_dte_cedible',
    'label' => 'Incluir cedible',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_dte_cedible : 0,
    'help' => '¿Se debe incluir la copia cedible por defecto?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
$config_pdf_imprimir_options = [''=>'No, se imprimirá bajando el archivo', 'pdf'=>'Imprimir directamente el PDF'];
if (class_exists('\sasco\LibreDTE\Sii\Dte\ESCPOS\Dte')) {
    $config_pdf_imprimir_options['escpos'] = 'Imprimir directamente en impresora térmica';
}
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_imprimir',
    'label' => '¿Impresión directa?',
    'options' => $config_pdf_imprimir_options,
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_imprimir : '',
    'help' => '¿Se debe enviar a imprimir directamente a la impresora seleccionada?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_dte_papel',
    'label' => 'Formato PDF',
    'options' => \sasco\LibreDTE\Sii\Dte\PDF\Dte::$papel,
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_dte_papel : 0,
    'help' => 'Permite indicar si se usará hoja carta en las versiones en PDF del DTE o bien papel contínuo',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_disposition',
    'label' => 'Descargar PDF',
    'options' => ['Si, descargar PDF', 'No, mostrar PDF en el navegador'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_disposition : 0,
    'help' => '¿El PDF generado se debe descargar al equipo o se debe mostrar en el navegador?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_logo_posicion',
    'label' => 'Posición logo en PDF',
    'options' => ['Izquierda', 'Arriba'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_logo_posicion : 0,
    'help' => '¿El logo va a la izquierda o arriba de los datos del contribuyente?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_detalle_fuente',
    'label' => 'Fuente detalle PDF',
    'options' => [11=>11, 10=>10, 9=>9, 8=>8],
    'value' => (isset($Contribuyente) and $Contribuyente->config_pdf_detalle_fuente)? $Contribuyente->config_pdf_detalle_fuente : 10,
    'help' => 'Tamaño de la fuente a utilizar en el detalle del PDF ',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_item_detalle_posicion',
    'label' => 'Posición detalle PDF',
    'options' => ['Abajo', 'Derecha'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_item_detalle_posicion : 0,
    'help' => '¿El detalle del item va a abajo o a la derecha del nombre del item?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_timbre_posicion',
    'label' => 'Posición timbre PDF',
    'options' => ['Al pie de la página', 'Inmediatamente bajo el detalle'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_timbre_posicion : 0,
    'help' => '¿Dónde debe ir el timbre, acuse y totales?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_previsualizacion_automatica',
    'label' => 'Previsualización PDF',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_previsualizacion_automatica : 0,
    'help' => '¿Se debe mostrar automáticamente la previsualización del PDF en la pantalla de previsualización?',
]);
?>
                </div>
            </div>
<?php
$f->setColsLabel();
$f->setStyle(false);
?>
            <div class="form-group row required">
                <label class="col-sm-2 control-label">Ancho columnas PDF</label>
                <div class="col-sm-10">
                <?php new \sowerphp\general\View_Helper_Table([
                    ['Código', 'Cantidad', 'Precio', 'Descuento', 'Recargo', 'Subtotal'],
                    [
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_CdgItem',
                            'placeholder' => 20,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->CdgItem : 20),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_QtyItem',
                            'placeholder' => 15,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->QtyItem : 15),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_PrcItem',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->PrcItem : 22),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_DescuentoMonto',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->DescuentoMonto : 22),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_RecargoMonto',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->RecargoMonto : 22),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_MontoItem',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->MontoItem : 22),
                            'check'=>'notempty integer',
                        ]),
                    ]
                ]); ?>
                <p class="help-block">Ancho de las columnas del detalle del PDF en hoja carta</p>
                </div>
            </div>
<?php $f->setStyle('horizontal'); ?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-paper-plane"></i>
            Correo electrónico
        </div>
        <div class="card-body">
<?php
$template_email_dte = '';
if (isset($Contribuyente)) {
    if ($Contribuyente->getEmailFromTemplate('dte')) {
        $template_email_dte_url = \sowerphp\core\Configure::read('app.url_static').'/contribuyentes/'.$Contribuyente->rut.'/email/dte.html';
        $template_email_dte = '. <a href="'.$template_email_dte_url.'" target="_blank">Plantilla vigente</a>';
    }
}
echo $f->input([
    'type' => 'file',
    'name' => 'template_email_dte',
    'label' => 'Plantilla envío DTE',
    'help' => 'Archivo HTML con la plantilla para el correo electrónico de envío de DTE'.$template_email_dte,
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-file"></i>
            Recepción documentos
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_recepcion_intercambio_automatico',
    'label' => 'Responder intercambio automáticamente',
    'options' => ['No, se hará siempre manualmente o sincronizado con SII', 'Si, usar reglas definidas o servicio web propio para aceptar o reclamar los DTE'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_recepcion_intercambio_automatico : 0,
    'help' => '¿Se debe procesar y responder automáticamente un intercambio de DTE cuando es recibido?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_recepcion_omitir_verificacion_sii',
    'label' => 'Verificar DTE',
    'options' => ['Verificar documento recibido contra el SII (recomendado)', 'Permitir ingresar documentos sin verificar (no recomendado)'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_recepcion_omitir_verificacion_sii : 0,
    'help' => 'Permite omitir la verificación de un DTE contra el SII al ser agregado manualmente. Se recomienda nunca activar esta opción, ya que de acuerdo a la legislación sólo se deben incluir en los documentos recibidos aquellos que el SII tiene aceptados.',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fa fa-book"></i>
            Libros de compra y venta (IECV)
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_iecv_pestania_detalle',
    'label' => 'Mostrar pestaña con detalle',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_iecv_pestania_detalle : 0,
    'help' => '¿Se debe mostrar la pestaña con el detalle de los libros de compra/venta y guías de despacho?',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fa fa-eye"></i>
            SII
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_sii_timbraje_automatico',
    'label' => 'Timbraje automático',
    'options' => ['Nunca timbrar automáticamente', 'Timbrar automáticamente cuando se llegue a la alerta de folios'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_timbraje_automatico : 0,
    'help' => '¿Se debe timbrar automáticamente folios cuando se alcance la alerta? Si se activa, debe asignar multiplicador (abajo)',
]);
echo $f->input([
    'name' => 'config_sii_timbraje_multiplicador',
    'label' => 'Multiplicador de timbraje',
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_timbraje_multiplicador : 5,
    'help' => 'Se solicitará como cantidad de timbraje automático máximo: [alerta folio] x [multiplicador]',
]);
?>
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_sii_estado_dte_webservice',
    'label' => 'Estado DTE',
    'options' => ['Correo electrónico (más lento pero con detalles)', 'Servicio web (más rápido pero sin detalles)'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_estado_dte_webservice : 0,
    'help' => 'Permite definir cómo se consultará el estado de los DTE emitidos por defecto en la aplicación web',
]);
?>
        </div>
    </div>
</div>
<!-- FIN CONFIGURACIÓN FACTURACIÓN -->

<?php if (isset($Contribuyente)) : ?>

<!-- INICIO APPS -->
<div role="tabpanel" class="tab-pane" id="apps" aria-labelledby="apps-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-exchange-alt"></i>
            Servicios web del contribuyente
        </div>
        <div class="card-body">
            <p>LibreDTE puede comunicarse con la aplicación de su empresa u otros sitios a través de servicios web. A continuación puede ingresar las URL para consultas que se podrían hacer a su aplicación. Puede revisar la <a href="http://wiki.libredte.cl/doku.php/sowerphp/integracion">documentación de la integración</a> para obtener detalles de las entradas y salidas esperadas para cada consulta.</p>
<?php
$api_servicios_disponibles = (array)\sowerphp\core\Configure::read('api_contribuyentes');
$api = [];
foreach ($api_servicios_disponibles as $api_codigo => $api_servicio) {
    if (!empty($api_servicio['uses']) and !\sowerphp\core\Module::loaded($api_servicio['uses'])) {
        continue;
    }
    $api[] = [
        'config_api_codigo' => $api_codigo,
        'config_api_servicio' => $api_servicio['name'].'<br/><span class="small">'.$api_servicio['desc'].(!empty($api_servicio['link'])?(' (<a href="'.$api_servicio['link'].'">más info</a>)'):'').'</span>',
        'config_api_url' => isset($Contribuyente->config_api_servicios->$api_codigo->url) ? $Contribuyente->config_api_servicios->$api_codigo->url : null,
        'config_api_auth' => isset($Contribuyente->config_api_servicios->$api_codigo->auth) ? $Contribuyente->config_api_servicios->$api_codigo->auth : null,
        'config_api_credenciales' => isset($Contribuyente->config_api_servicios->$api_codigo->credenciales) ? $Contribuyente->config_api_servicios->$api_codigo->credenciales : null,
    ];
}
$f->setStyle(false);
echo $f->input([
    'type' => 'table',
    'id' => 'config_api',
    'label' => 'API',
    'titles' => ['Servicio', 'URL', 'Auth', 'Credenciales'],
    'inputs' => [
        ['name' => 'config_api_codigo', 'type'=>'hidden'],
        ['name' => 'config_api_servicio', 'type'=>'div', 'attr'=>'style="max-width:10em"'],
        ['name' => 'config_api_url', 'placeholder'=>'https://example.com/api/recurso'],
        ['name' => 'config_api_auth', 'type'=>'select', 'options'=>['http_auth_basic'=>'HTTP Auth Basic']],
        ['name' => 'config_api_credenciales', 'placeholder'=>'usuario:contraseña', 'attr' => 'maxlength="255" onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"'],
    ],
    'values' => $api,
    'help' => 'Datos para contacto comercial (ej: envío de cobros del servicio)',
]);
$f->setStyle('horizontal');
?>
        </div>
    </div>
    <!-- INICIO APPS -->
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-exchange-alt"></i>
            Aplicaciones de terceros
        </div>
        <div class="card-body">
            <p>LibreDTE puede utilizar aplicaciones de terceros para entregar mayores funcionalidades y características.</p>
<?php
$AppsConfigHelper = new \sowerphp\app\View_Helper_AppsConfig('apps', $f);
foreach($apps as $App) {
    $App->setVars([
        'url' => $_url,
    ]);
    echo $AppsConfigHelper->generate($App);
}
?>
        </div>
    </div>
    <!-- FIN APPS -->
</div>
<!-- FIN APPS -->

<!-- INICIO CONFIGURACIÓN GENERAL -->
<div role="tabpanel" class="tab-pane" id="general" aria-labelledby="general-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="fa fa-cogs"></i>
            Configuración LibreDTE
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'div',
    'label' => 'Administrador',
    'value' => $Contribuyente->getUsuario()->nombre.' ('.$Contribuyente->getUsuario()->usuario.')',
]);
if ($Contribuyente->getCuota()) {
    echo $f->input([
        'type' => 'div',
        'label' => 'Cuota',
        'value' => num($Contribuyente->getCuota()),
    ]);
}
echo $f->input([
    'type' => 'div',
    'label' => 'Modificado',
    'value' => \sowerphp\general\Utility_Date::format($Contribuyente->modificado, 'd/m/Y H:m'),
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header"><commit_msg>Se quitan datos que están en otros lados  y que no se usan en la versión comunidad<commit_after><?php if (isset($Contribuyente)) : ?>
<ul class="nav nav-pills float-right">
    <li class="nav-item">
        <a href="<?=$_base?>/dte/contribuyentes/usuarios/<?=$Contribuyente->rut?>" title="Usuarios autorizados" class="nav-link">
            <i class="fa fa-users"></i>
            Usuarios
        </a>
    </li>
    <li class="nav-item">
        <a href="<?=$_base?>/dte/contribuyentes/seleccionar/<?=$Contribuyente->rut?>" title="Seleccionar empresa" class="nav-link">
            <i class="fa fa-check"></i>
            Seleccionar
        </a>
    </li>
</ul>
<?php endif; ?>

<div class="page-header"><h1><?=$titulo?></h1></div>
<p><?=$descripcion?></p>

<?php
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['id'=>$form_id, 'onsubmit'=>'Form.check() && Form.confirm(this)']);
?>

<script type="text/javascript">
var impuestos_adicionales_tasa = <?=json_encode($impuestos_adicionales_tasa)?>;
$(function() {
    var url = document.location.toString();
    if (url.match('#')) {
        $('#'+url.split('#')[1]+'-tab').tab('show');
    }
});
</script>

<div role="tabpanel">
    <ul class="nav nav-tabs" role="tablist">
        <li class="nav-item"><a href="#datos" aria-controls="datos" role="tab" data-toggle="tab" id="datos-tab" class="nav-link active" aria-selected="true">Empresa</a></li>
        <li class="nav-item"><a href="#ambientes" aria-controls="ambientes" role="tab" data-toggle="tab" id="ambientes-tab" class="nav-link">Ambientes</a></li>
        <li class="nav-item"><a href="#correos" aria-controls="correos" role="tab" data-toggle="tab" id="correos-tab" class="nav-link">Correos</a></li>
        <li class="nav-item"><a href="#facturacion" aria-controls="facturacion" role="tab" data-toggle="tab" id="facturacion-tab" class="nav-link">Facturación</a></li>
<?php if (isset($Contribuyente)) : ?>
        <li class="nav-item"><a href="#apps" aria-controls="apps" role="tab" data-toggle="tab" id="apps-tab" class="nav-link">Apps</a></li>
        <li class="nav-item"><a href="#general" aria-controls="general" role="tab" data-toggle="tab" id="general-tab" class="nav-link">General</a></li>
<?php endif; ?>
    </ul>
    <div class="tab-content pt-4">

<!-- INICIO DATOS EMPRESA -->
<div role="tabpanel" class="tab-pane active" id="datos" aria-labelledby="datos-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos básicos
        </div>
        <div class="card-body">
<?php
if ($form_id=='registrarContribuyente') {
    echo $f->input([
        'name' => 'rut',
        'label' => 'RUT',
        'check' => 'notempty rut',
        'attr' => 'maxlength="12" onblur="Contribuyente.setDatos(\'registrarContribuyente\')"',
    ]);
}
echo $f->input([
    'name' => 'razon_social',
    'label' => 'Razón social',
    'value' => isset($Contribuyente) ? $Contribuyente->razon_social : null,
    'check' => 'notempty',
    'attr' => 'maxlength="100"',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'actividad_economica',
    'label' => 'Actividad principal',
    'value' => isset($Contribuyente) ? $Contribuyente->actividad_economica : null,
    'help' => 'Indique la actividad económica principal de la empresa',
    'options' => [''=>'Seleccionar una actividad económica'] + $actividades_economicas,
    'check' => 'notempty',
    'attr'=>'onchange="document.getElementById(\'giroField\').value = this.options[this.selectedIndex].text.substr(this.options[this.selectedIndex].text.indexOf(\'-\')+1, 80)"',
]);
echo $f->input([
    'name' => 'giro',
    'label' => 'Giro',
    'value' => isset($Contribuyente) ? $Contribuyente->giro : null,
    'check' => 'notempty',
    'attr' => 'maxlength="80"',
    'help' => 'Indique el giro comercial principal de la empresa (sin utilizar abreviaciones)',
]);
echo $f->input([
    'name' => 'direccion',
    'label' => 'Dirección',
    'value' => isset($Contribuyente) ? $Contribuyente->direccion : null,
    'help' => 'Dirección casa matriz',
    'check' => 'notempty',
    'attr' => 'maxlength="70"',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'comuna',
    'label' => 'Comuna',
    'value' => isset($Contribuyente) ? $Contribuyente->comuna : null,
    'help' => 'Comuna casa matriz',
    'options' => [''=>'Seleccionar una comuna'] + $comunas,
    'check' => 'notempty',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos extras
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_extra_nombre_fantasia',
    'label' => 'Nombre fantasía',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_nombre_fantasia : null,
    'attr' => 'maxlength="100"',
]);
$config_extra_otras_actividades = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_otras_actividades) {
    foreach ($Contribuyente->config_extra_otras_actividades as $a) {
        $config_extra_otras_actividades[] = [
            'config_extra_otras_actividades_actividad' => is_object($a) ? $a->actividad : $a,
            'config_extra_otras_actividades_giro' => is_object($a) ? $a->giro : '',
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'otras_actividades',
    'label' => 'Otras actividades',
    'titles' => ['Actividad económica', 'Giro'],
    'inputs' => [
        [
            'type' => 'select',
            'name' => 'config_extra_otras_actividades_actividad',
            'options' => [''=>'Seleccionar una actividad económica'] + $actividades_economicas,
            'check' => 'notempty',
        ],
        [
            'name' => 'config_extra_otras_actividades_giro',
            'placeholder' => 'Mismo giro actividad principal',
            'attr' => 'maxlength="80" style="min-width:20em"',
        ]
    ],
    'values' => $config_extra_otras_actividades,
    'help' => 'Indique las actividades económicas secundarias de la empresa y los giros (si son diferentes al principal)',
]);
$config_extra_sucursales = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_sucursales) {
    foreach ($Contribuyente->config_extra_sucursales as $sucursal) {
        $config_extra_sucursales[] = [
            'config_extra_sucursales_codigo' => $sucursal->codigo,
            'config_extra_sucursales_sucursal' => $sucursal->sucursal,
            'config_extra_sucursales_direccion' => $sucursal->direccion,
            'config_extra_sucursales_comuna' => $sucursal->comuna,
            'config_extra_sucursales_actividad_economica' => !empty($sucursal->actividad_economica) ? $sucursal->actividad_economica : null,
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'sucursales',
    'label' => 'Sucursales',
    'titles' => ['Código SII', 'Nombre', 'Dirección', 'Comuna', 'Act. Económ.'],
    'inputs' => [
        [
            'name' => 'config_extra_sucursales_codigo',
            'check' => 'notempty integer',
            'attr' => 'style="max-width:8em"'
        ],
        [
            'name' => 'config_extra_sucursales_sucursal',
            'check' => 'notempty',
            'attr' => 'maxlength="20" style="max-width:12em"',
        ],
        [
            'name' => 'config_extra_sucursales_direccion',
            'check' => 'notempty',
            'attr' => 'maxlength="70"',
        ],
        [
            'type' => 'select',
            'name' => 'config_extra_sucursales_comuna',
            'options' => [''=>'Seleccionar una comuna'] + $comunas,
            'check' => 'notempty',
        ],
        [
            'type' => 'select',
            'name' => 'config_extra_sucursales_actividad_economica',
            'options' => [''=>'Misma casa matriz'] + (isset($Contribuyente)?$Contribuyente->getListActividades():[]),
            'attr' => 'style="max-width:14em"'
        ]
    ],
    'values' => $config_extra_sucursales,
    'help' => 'Sucursales de la empresa con código asignado por el SII',
]);
echo $f->input([
    'name' => 'telefono',
    'label' => 'Teléfono',
    'value' => isset($Contribuyente) ? $Contribuyente->telefono : null,
    'placeholder' => '+56 9 88776655',
    'help' => 'Ejemplos: celular +56 9 88776655 / Santiago +56 2 22334455 / Santa Cruz +56 72 2821122',
    'check' => 'telephone',
    'attr' => 'maxlength="20"',
]);
echo $f->input([
    'name' => 'email',
    'label' => 'Email',
    'value' => isset($Contribuyente) ? $Contribuyente->email : null,
    'check' => 'email',
    'attr' => 'maxlength="80"',
]);
echo $f->input([
    'name' => 'config_extra_web',
    'label' => 'Web',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_web : null,
    'attr' => 'maxlength="80"',
]);
echo $f->input([
    'type' => 'file',
    'name' => 'logo',
    'label' => 'Logo',
    'help' => 'Imagen en formato PNG con el logo de la empresa',
    'attr' => 'accept="image/png"',
]);
?>
<?php if (isset($Contribuyente)) : ?>
<div class="text-center">
    <img src="../logo/<?=$Contribuyente->rut?>.png" alt="Logo <?=$Contribuyente->razon_social?>" class="img-fluid img-thumbnail" />
    <br/><br/>
</div>
<?php endif; ?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos representante legal
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_extra_representante_run',
    'label' => 'RUN',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_representante_run : null,
    'check' => 'rut',
]);
echo $f->input([
    'name' => 'config_extra_representante_nombre',
    'label' => 'Nombre',
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_representante_nombre : null,
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-info"></i>
            Datos SII empresa
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'text',
    'name' => 'config_sii_pass',
    'label' => 'Contraseña SII',
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_pass : null,
    'attr' => 'onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"',
    'help' => 'Permite acceder a ciertas funcionalidades que se conectan al SII',
]);
?>
        </div>
    </div>
</div>
<!-- FIN DATOS EMPRESA -->

<!-- INICIO AMBIENTES -->
<div role="tabpanel" class="tab-pane" id="ambientes" aria-labelledby="ambientes-tab">
<div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-university"></i>
            Ambiente de facturación en SII
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_ambiente_en_certificacion',
    'label' => 'Ambiente',
    'options' => ['Producción (documentos válidos)', 'Certificación / Pruebas (documentos no válidos)'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_en_certificacion : 1,
    'help' => 'Permite elegir entre un ambiente de pruebas o uno real para la emisión de los DTE',
    'check' => 'notempty',
    'attr' => 'onchange="ambiente_set(this.value)"',
]);
echo $f->input([
    'type' => 'date',
    'name' => 'config_ambiente_produccion_fecha',
    'label' => 'Fecha resolución',
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_produccion_fecha : null,
    'help' => 'Fecha de la resolución que autoriza la emisión de DTE en ambiente de producción. Se obtiene <a href="https://palena.sii.cl/cvc/dte/ee_empresas_dte.html" target="_blank">aquí</a>.',
    'check' => 'notempty date',
    'attr' => isset($Contribuyente) ? ($Contribuyente->config_ambiente_en_certificacion?'disabled="disabled"':'') : 'disabled="disabled"',
]);
echo $f->input([
    'name' => 'config_ambiente_produccion_numero',
    'label' => 'Número resolución',
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_produccion_numero : null,
    'help' => 'Número de la resolución que autoriza la emisión de DTE en ambiente de producción. Se obtiene en mismo lugar que fecha resolución producción.',
    'check' => 'notempty integer',
    'attr' => isset($Contribuyente) ? ($Contribuyente->config_ambiente_en_certificacion?'disabled="disabled"':'') : 'disabled="disabled"',
]);
echo $f->input([
    'type' => 'date',
    'name' => 'config_ambiente_certificacion_fecha',
    'label' => 'Fecha certificación',
    'value' => isset($Contribuyente) ? $Contribuyente->config_ambiente_certificacion_fecha : null,
    'help' => 'Fecha de la autorización para emisión de DTE en ambiente de certificación. Se obtiene <a href="https://maullin.sii.cl/cvc/dte/ee_empresas_dte.html" target="_blank">aquí</a>.',
    'check' => 'notempty date',
    'attr' => isset($Contribuyente) ? ($Contribuyente->config_ambiente_en_certificacion?'':'disabled="disabled"') : '',
]);
?>
        </div>
    </div>
</div>
<!-- FIN AMBIENTES -->

<!-- INICIO EMAILS -->
<div role="tabpanel" class="tab-pane" id="correos" aria-labelledby="correos-tab">
    <p>Aquí debe configurar las dos casillas de correo para operar con facturación electrónica. Puede revisar la <a href="http://wiki.libredte.cl/doku.php/faq/libredte/sowerphp/config/email">documentación de las casillas de correo</a> para obtener detalles de qué opciones debe usar.</p>
<?php if (isset($Contribuyente) and $Contribuyente->getFirma()) : ?>
    <p>Los correos deben coincidir con los registrados en el SII, los debe verificar en <a href="#" onclick="__.popup('<?=$_base?>/dte/sii/contribuyente_datos/<?=$Contribuyente->rut?>-<?=$Contribuyente->dv?>', 750, 550); return false" title="Ver datos del contribuyente en el SII">el sitio del web de impuestos internos</a>.</p>
<?php endif; ?>
    <div class="row">
        <div class="col-md-6">
            <div class="card mb-4">
                <div class="card-header">
                    <i class="fa fa-envelope"></i>
                    Correo contacto SII
                </div>
                <div class="card-body">
<?php
$f->setColsLabel(3);
echo $f->input([
    'name' => 'config_email_sii_user',
    'label' => 'Correo',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_user : null,
    'attr' => 'maxlength="50" onblur="config_email_set(this, \'sii\')"',
    'check' => 'notempty email',
]);
echo $f->input([
    'name' => 'config_email_sii_pass',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_pass : null,
    'label' => 'Contraseña',
    'check' => 'notempty',
    'attr' => 'onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"',
]);
echo $f->input([
    'name' => 'config_email_sii_smtp',
    'label' => 'Servidor SMTP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_smtp : null,
    'help' => 'Ejemplo: ssl://smtp.gmail.com:465'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/sii/smtp\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="50"',
    'check' => 'notempty',
]);
echo $f->input([
    'name' => 'config_email_sii_imap',
    'label' => 'Mailbox IMAP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_sii_imap : null,
    'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/sii/imap\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="100"',
    'check' => 'notempty',
]);
?>
                </div>
            </div>
        </div>
        <div class="col-md-6">
            <div class="card mb-4">
                <div class="card-header">
                    <i class="far fa-envelope"></i>
                    Correo contacto empresas (intercambio)
                </div>
                <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_email_intercambio_user',
    'label' => 'Correo',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_user : null,
    'attr' => 'maxlength="50" onblur="config_email_set(this, \'intercambio\')"',
    'check' => 'notempty email',
]);
echo $f->input([
    'name' => 'config_email_intercambio_pass',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_pass : null,
    'label' => 'Contraseña',
    'check' => 'notempty',
    'attr' => 'onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"',
]);
echo $f->input([
    'name' => 'config_email_intercambio_smtp',
    'label' => 'Servidor SMTP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_smtp : null,
    'help' => 'Ejemplo: ssl://smtp.gmail.com:465'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/intercambio/smtp\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="50"',
    'check' => 'notempty',
]);
echo $f->input([
    'name' => 'config_email_intercambio_imap',
    'label' => 'Mailbox IMAP',
    'value' => isset($Contribuyente) ? $Contribuyente->config_email_intercambio_imap : null,
    'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX'.(isset($Contribuyente)?('<br/><a href="#" onclick="__.popup(\''.$_base.'/dte/contribuyentes/config_email_test/'.$Contribuyente->rut.'/intercambio/imap\', 750, 550); return false" class="small">[probar correo]</a>'):''),
    'attr' => 'maxlength="100"',
    'check' => 'notempty',
]);
$f->setColsLabel();
?>
                </div>
            </div>
        </div>
    </div>
</div>
<!-- FIN EMAILS -->

<!-- INICIO CONFIGURACIÓN FACTURACIÓN -->
<div role="tabpanel" class="tab-pane" id="facturacion" aria-labelledby="facturacion-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-paper-plane"></i>
            Emisión documentos
        </div>
        <div class="card-body">
            <div class="row">
                <div class="col-md-6">
<?php
$f->setColsLabel(4);
if (!empty($tipos_dte)) {
    echo $f->input([
        'type' => 'select',
        'name' => 'config_emision_dte_defecto',
        'label' => 'DTE defecto',
        'options' => $tipos_dte,
        'value' => isset($Contribuyente) ? $Contribuyente->config_emision_dte_defecto : 33,
        'help' => '¿Qué documento debe estar seleccionado por defecto al emitir?',
    ]);
}
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_solo_items_codificados',
    'label' => 'Sólo items codificados',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_solo_items_codificados : 0,
    'help' => '¿Restringir la creación de documentos sólo a items de productos o servicios que estén codificados?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_exenta',
    'label' => 'Empresa exenta',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_exenta : 0,
    'help' => '¿El contribuyente es exento de IVA en todas sus actividades económicas?',
]);
$IndServicio = [
    1 => 'Factura o boleta de servicios períodicos domiciliarios', // boleta es periodico no domiciliario (se ajusta)
    2 => 'Factura o boleta de otros servicios períodicos (no domiciliarios)',  // boleta es periodico domiciliario (se ajusta)
    3 => 'Factura de servicios o boleta de ventas y servicios',
    4 => 'Factura exportación de servicios de hotelería o boleta de espectáculos emitida por cuenta de terceros',
    5 => 'Factura exportación de servicios de transporte internacional',
];
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_indicador_servicio',
    'label' => 'Indicador servicio',
    'options' => [''=>'No'] + $IndServicio,
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_indicador_servicio : 0,
    'help' => '¿Se debe usar un indicador de servicio por defecto?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_asignar_folio',
    'label' => 'Folio manual',
    'options' => [
        'Ningún usuario puede asignar manualmente el folio',
        'Sólo administradores pueden asignar manualmente el folio',
        'Cualquier usuario con rol \'dte\' puede asignar manualmente el folio',
    ],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_asignar_folio : 0,
    'help' => '¿Es posible elegir manualmente qué folio se desea utilizar en un documento que se emitirá?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_forma_pago',
    'label' => 'Forma de pago',
    'options' => [''=>'Sin forma de pago', 1=>'Contado', 2=>'Crédito'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_forma_pago : 0,
    'help' => '¿Forma de pago por defecto?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_constructora',
    'label' => 'Empresa constructora',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_constructora : 0,
    'help' => '¿El contribuyente es una empresa constructora (para crédito del 65%)?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_extra_agente_retenedor',
    'label' => 'Agente retenedor',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_extra_agente_retenedor : 0,
    'help' => '¿El contribuyente actúa como agente retenedor de algún producto?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_sii_envio_automatico',
    'label' => 'Envío automático',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_envio_automatico : 0,
    'help' => '¿Se deben enviar automáticamente los DTE al SII sin pasar por previsualización?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_intercambio_automatico',
    'label' => 'Intercambio automático',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_intercambio_automatico : 0,
    'help' => '¿Enviar automáticamente al correo de intercambio el DTE emitido que no tiene recepción registrada? (no envía boletas, sólo DTEs aceptados por el SII)',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_email',
    'label' => 'Enviar email al emitir',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_email : 0,
    'help' => '¿Enviar automáticamente a los correos disponibles el DTE emitido que ha sido generado? (todos los documentos, sin importar el estado)',
]);
?>
                </div>
            </div>
<?php
$f->setColsLabel();
$config_extra_impuestos_adicionales = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_impuestos_adicionales) {
    foreach ($Contribuyente->config_extra_impuestos_adicionales as $impuesto) {
        $config_extra_impuestos_adicionales[] = [
            'config_extra_impuestos_adicionales_codigo' => $impuesto->codigo,
            'config_extra_impuestos_adicionales_tasa' => $impuesto->tasa,
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'impuestos_adicionales',
    'label' => 'Impuestos adicionales',
    'titles' => ['Impuesto adicional', 'Tasa por defecto'],
    'inputs' => [
        [
            'type' => 'select',
            'name' => 'config_extra_impuestos_adicionales_codigo',
            'options' => [''=>'Seleccionar un impuesto adicional'] + $impuestos_adicionales,
            'check' => 'notempty',
            'onblur'=>'impuesto_adicional_sugerir_tasa(this, impuestos_adicionales_tasa)',
        ],
        [
            'name' => 'config_extra_impuestos_adicionales_tasa',
            'check' => 'notempty',
        ]
    ],
    'values' => $config_extra_impuestos_adicionales,
    'help' => 'Indique los impuestos adicionales o retenciones que desea utilizar en la emisión de documentos',
]);
if (!empty($tipos_dte)) {
    $config_emision_observaciones = [];
    if (isset($Contribuyente) and $Contribuyente->config_emision_observaciones) {
        foreach ($Contribuyente->config_emision_observaciones as $dte => $glosa) {
            $config_emision_observaciones[] = [
                'config_emision_observaciones_dte' => $dte,
                'config_emision_observaciones_glosa' => $glosa,
            ];
        }
    }
    echo $f->input([
        'type' => 'js',
        'id' => 'config_emision_observaciones',
        'label' => 'Observación emisión',
        'titles' => ['Documento', 'Observación'],
        'inputs' => [
            [
                'type' => 'select',
                'name' => 'config_emision_observaciones_dte',
                'options' => [''=>'Seleccionar un tipo de documento'] + $tipos_dte,
                'check' => 'notempty',
            ],
            [
                'name' => 'config_emision_observaciones_glosa',
                'check' => 'notempty',
                'attr' => 'maxlength="100"',
            ]
        ],
        'values' => $config_emision_observaciones,
        'help' => 'Observación por defecto según tipo de DTE emitido',
    ]);
}
$config_extra_impuestos_sin_credito = [];
if (isset($Contribuyente) and $Contribuyente->config_extra_impuestos_sin_credito) {
    foreach ($Contribuyente->config_extra_impuestos_sin_credito as $impuesto) {
        $config_extra_impuestos_sin_credito[] = [
            'config_extra_impuestos_sin_credito_codigo' => $impuesto,
        ];
    }
}
echo $f->input([
    'type' => 'js',
    'id' => 'impuestos_sin_credito',
    'label' => 'Impuestos sin crédito',
    'titles' => ['Impuesto sin crédito'],
    'inputs' => [
        [
            'type' => 'select',
            'name' => 'config_extra_impuestos_sin_credito_codigo',
            'options' => [''=>'Seleccionar un impuesto'] + $impuestos_adicionales_todos,
            'check' => 'notempty',
        ],
    ],
    'values' => $config_extra_impuestos_sin_credito,
    'help' => 'Indique los impuestos que no dan derecho a ser usados como crédito (no son recuperables)',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-file-pdf"></i>
            Versión impresa del DTE
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'name' => 'config_pdf_web_verificacion',
    'label' => 'Web verificación boletas electrónicas',
    'placeholder' => 'libredte.cl/boletas',
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_web_verificacion : '',
    'help' => 'Enlace que se incluirá en las boletas para que el cliente pueda realizar la verificación',
]);
?>
<?php $f->setColsLabel(4); ?>
            <div class="row">
                <div class="col-md-6">
<?php
echo $f->input([
    'name' => 'config_pdf_copias_tributarias',
    'label' => 'Copias tributarias',
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_copias_tributarias : 1,
    'help' => '¿Copias tributarias que se generarán por defecto?',
    'check' => 'notempty integer',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'name' => 'config_pdf_copias_cedibles',
    'label' => 'Copias cedibles',
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_copias_cedibles : 1,
    'help' => '¿Copias cedibles que se generarán por defecto?',
    'check' => 'notempty integer',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_dte_cedible',
    'label' => 'Incluir cedible',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_dte_cedible : 0,
    'help' => '¿Se debe incluir la copia cedible por defecto?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
$config_pdf_imprimir_options = [''=>'No, se imprimirá bajando el archivo', 'pdf'=>'Imprimir directamente el PDF'];
if (class_exists('\sasco\LibreDTE\Sii\Dte\ESCPOS\Dte')) {
    $config_pdf_imprimir_options['escpos'] = 'Imprimir directamente en impresora térmica';
}
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_imprimir',
    'label' => '¿Impresión directa?',
    'options' => $config_pdf_imprimir_options,
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_imprimir : '',
    'help' => '¿Se debe enviar a imprimir directamente a la impresora seleccionada?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_dte_papel',
    'label' => 'Formato PDF',
    'options' => \sasco\LibreDTE\Sii\Dte\PDF\Dte::$papel,
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_dte_papel : 0,
    'help' => 'Permite indicar si se usará hoja carta en las versiones en PDF del DTE o bien papel contínuo',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_disposition',
    'label' => 'Descargar PDF',
    'options' => ['Si, descargar PDF', 'No, mostrar PDF en el navegador'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_disposition : 0,
    'help' => '¿El PDF generado se debe descargar al equipo o se debe mostrar en el navegador?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_logo_posicion',
    'label' => 'Posición logo en PDF',
    'options' => ['Izquierda', 'Arriba'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_logo_posicion : 0,
    'help' => '¿El logo va a la izquierda o arriba de los datos del contribuyente?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_detalle_fuente',
    'label' => 'Fuente detalle PDF',
    'options' => [11=>11, 10=>10, 9=>9, 8=>8],
    'value' => (isset($Contribuyente) and $Contribuyente->config_pdf_detalle_fuente)? $Contribuyente->config_pdf_detalle_fuente : 10,
    'help' => 'Tamaño de la fuente a utilizar en el detalle del PDF ',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_item_detalle_posicion',
    'label' => 'Posición detalle PDF',
    'options' => ['Abajo', 'Derecha'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_item_detalle_posicion : 0,
    'help' => '¿El detalle del item va a abajo o a la derecha del nombre del item?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_pdf_timbre_posicion',
    'label' => 'Posición timbre PDF',
    'options' => ['Al pie de la página', 'Inmediatamente bajo el detalle'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_pdf_timbre_posicion : 0,
    'help' => '¿Dónde debe ir el timbre, acuse y totales?',
]);
?>
                </div>
                <div class="col-md-6">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_emision_previsualizacion_automatica',
    'label' => 'Previsualización PDF',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_emision_previsualizacion_automatica : 0,
    'help' => '¿Se debe mostrar automáticamente la previsualización del PDF en la pantalla de previsualización?',
]);
?>
                </div>
            </div>
<?php
$f->setColsLabel();
$f->setStyle(false);
?>
            <div class="form-group row required">
                <label class="col-sm-2 control-label">Ancho columnas PDF</label>
                <div class="col-sm-10">
                <?php new \sowerphp\general\View_Helper_Table([
                    ['Código', 'Cantidad', 'Precio', 'Descuento', 'Recargo', 'Subtotal'],
                    [
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_CdgItem',
                            'placeholder' => 20,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->CdgItem : 20),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_QtyItem',
                            'placeholder' => 15,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->QtyItem : 15),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_PrcItem',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->PrcItem : 22),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_DescuentoMonto',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->DescuentoMonto : 22),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_RecargoMonto',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->RecargoMonto : 22),
                            'check'=>'notempty integer',
                        ]),
                        $f->input([
                            'name'=>'config_pdf_detalle_ancho_MontoItem',
                            'placeholder' => 22,
                            'value'=>((isset($Contribuyente) and $Contribuyente->config_pdf_detalle_ancho)? $Contribuyente->config_pdf_detalle_ancho->MontoItem : 22),
                            'check'=>'notempty integer',
                        ]),
                    ]
                ]); ?>
                <p class="help-block">Ancho de las columnas del detalle del PDF en hoja carta</p>
                </div>
            </div>
<?php $f->setStyle('horizontal'); ?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-paper-plane"></i>
            Correo electrónico
        </div>
        <div class="card-body">
<?php
$template_email_dte = '';
if (isset($Contribuyente)) {
    if ($Contribuyente->getEmailFromTemplate('dte')) {
        $template_email_dte_url = \sowerphp\core\Configure::read('app.url_static').'/contribuyentes/'.$Contribuyente->rut.'/email/dte.html';
        $template_email_dte = '. <a href="'.$template_email_dte_url.'" target="_blank">Plantilla vigente</a>';
    }
}
echo $f->input([
    'type' => 'file',
    'name' => 'template_email_dte',
    'label' => 'Plantilla envío DTE',
    'help' => 'Archivo HTML con la plantilla para el correo electrónico de envío de DTE'.$template_email_dte,
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="far fa-file"></i>
            Recepción documentos
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_recepcion_intercambio_automatico',
    'label' => 'Responder intercambio automáticamente',
    'options' => ['No, se hará siempre manualmente o sincronizado con SII', 'Si, usar reglas definidas o servicio web propio para aceptar o reclamar los DTE'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_recepcion_intercambio_automatico : 0,
    'help' => '¿Se debe procesar y responder automáticamente un intercambio de DTE cuando es recibido?',
]);
echo $f->input([
    'type' => 'select',
    'name' => 'config_recepcion_omitir_verificacion_sii',
    'label' => 'Verificar DTE',
    'options' => ['Verificar documento recibido contra el SII (recomendado)', 'Permitir ingresar documentos sin verificar (no recomendado)'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_recepcion_omitir_verificacion_sii : 0,
    'help' => 'Permite omitir la verificación de un DTE contra el SII al ser agregado manualmente. Se recomienda nunca activar esta opción, ya que de acuerdo a la legislación sólo se deben incluir en los documentos recibidos aquellos que el SII tiene aceptados.',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fa fa-book"></i>
            Libros de compra y venta (IECV)
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_iecv_pestania_detalle',
    'label' => 'Mostrar pestaña con detalle',
    'options' => ['No', 'Si'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_iecv_pestania_detalle : 0,
    'help' => '¿Se debe mostrar la pestaña con el detalle de los libros de compra/venta y guías de despacho?',
]);
?>
        </div>
    </div>
    <div class="card mb-4">
        <div class="card-header">
            <i class="fa fa-eye"></i>
            SII
        </div>
        <div class="card-body">
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_sii_timbraje_automatico',
    'label' => 'Timbraje automático',
    'options' => ['Nunca timbrar automáticamente', 'Timbrar automáticamente cuando se llegue a la alerta de folios'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_timbraje_automatico : 0,
    'help' => '¿Se debe timbrar automáticamente folios cuando se alcance la alerta? Si se activa, debe asignar multiplicador (abajo)',
]);
echo $f->input([
    'name' => 'config_sii_timbraje_multiplicador',
    'label' => 'Multiplicador de timbraje',
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_timbraje_multiplicador : 5,
    'help' => 'Se solicitará como cantidad de timbraje automático máximo: [alerta folio] x [multiplicador]',
]);
?>
<?php
echo $f->input([
    'type' => 'select',
    'name' => 'config_sii_estado_dte_webservice',
    'label' => 'Estado DTE',
    'options' => ['Correo electrónico (más lento pero con detalles)', 'Servicio web (más rápido pero sin detalles)'],
    'value' => isset($Contribuyente) ? $Contribuyente->config_sii_estado_dte_webservice : 0,
    'help' => 'Permite definir cómo se consultará el estado de los DTE emitidos por defecto en la aplicación web',
]);
?>
        </div>
    </div>
</div>
<!-- FIN CONFIGURACIÓN FACTURACIÓN -->

<?php if (isset($Contribuyente)) : ?>

<!-- INICIO APPS -->
<div role="tabpanel" class="tab-pane" id="apps" aria-labelledby="apps-tab">
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-exchange-alt"></i>
            Servicios web del contribuyente
        </div>
        <div class="card-body">
            <p>LibreDTE puede comunicarse con la aplicación de su empresa u otros sitios a través de servicios web. A continuación puede ingresar las URL para consultas que se podrían hacer a su aplicación. Puede revisar la <a href="http://wiki.libredte.cl/doku.php/sowerphp/integracion">documentación de la integración</a> para obtener detalles de las entradas y salidas esperadas para cada consulta.</p>
<?php
$api_servicios_disponibles = (array)\sowerphp\core\Configure::read('api_contribuyentes');
$api = [];
foreach ($api_servicios_disponibles as $api_codigo => $api_servicio) {
    if (!empty($api_servicio['uses']) and !\sowerphp\core\Module::loaded($api_servicio['uses'])) {
        continue;
    }
    $api[] = [
        'config_api_codigo' => $api_codigo,
        'config_api_servicio' => $api_servicio['name'].'<br/><span class="small">'.$api_servicio['desc'].(!empty($api_servicio['link'])?(' (<a href="'.$api_servicio['link'].'">más info</a>)'):'').'</span>',
        'config_api_url' => isset($Contribuyente->config_api_servicios->$api_codigo->url) ? $Contribuyente->config_api_servicios->$api_codigo->url : null,
        'config_api_auth' => isset($Contribuyente->config_api_servicios->$api_codigo->auth) ? $Contribuyente->config_api_servicios->$api_codigo->auth : null,
        'config_api_credenciales' => isset($Contribuyente->config_api_servicios->$api_codigo->credenciales) ? $Contribuyente->config_api_servicios->$api_codigo->credenciales : null,
    ];
}
$f->setStyle(false);
echo $f->input([
    'type' => 'table',
    'id' => 'config_api',
    'label' => 'API',
    'titles' => ['Servicio', 'URL', 'Auth', 'Credenciales'],
    'inputs' => [
        ['name' => 'config_api_codigo', 'type'=>'hidden'],
        ['name' => 'config_api_servicio', 'type'=>'div', 'attr'=>'style="max-width:10em"'],
        ['name' => 'config_api_url', 'placeholder'=>'https://example.com/api/recurso'],
        ['name' => 'config_api_auth', 'type'=>'select', 'options'=>['http_auth_basic'=>'HTTP Auth Basic']],
        ['name' => 'config_api_credenciales', 'placeholder'=>'usuario:contraseña', 'attr' => 'maxlength="255" onmouseover="this.type=\'text\'" onmouseout="this.type=\'password\'"'],
    ],
    'values' => $api,
    'help' => 'Datos para contacto comercial (ej: envío de cobros del servicio)',
]);
$f->setStyle('horizontal');
?>
        </div>
    </div>
    <!-- INICIO APPS -->
    <div class="card mb-4">
        <div class="card-header">
            <i class="fas fa-exchange-alt"></i>
            Aplicaciones de terceros
        </div>
        <div class="card-body">
            <p>LibreDTE puede utilizar aplicaciones de terceros para entregar mayores funcionalidades y características.</p>
<?php
$AppsConfigHelper = new \sowerphp\app\View_Helper_AppsConfig('apps', $f);
foreach($apps as $App) {
    $App->setVars([
        'url' => $_url,
    ]);
    echo $AppsConfigHelper->generate($App);
}
?>
        </div>
    </div>
    <!-- FIN APPS -->
</div>
<!-- FIN APPS -->

<!-- INICIO CONFIGURACIÓN GENERAL -->
<div role="tabpanel" class="tab-pane" id="general" aria-labelledby="general-tab">
    <div class="card mb-4">
        <div class="card-header">
{'fraction_non_alphanumeric': 0.1807761774649192, 'fraction_numerical': 0.0059857361181864495, 'mean_word_length': 3.1028405852175567, 'pattern_counts': {'":': 0, '<': 686, '<?xml version=': 0, '>': 2093, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3620066', 'n_tokens_mistral': 30768, 'n_tokens_neox': 30273, 'n_words': 5940}