Example #1
0
?>
 envió a <?php 
echo $Emisor->razon_social;
?>
.</p>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['action' => $_base . '/dte/dte_intercambios/responder/' . $DteIntercambio->codigo, 'onsubmit' => 'Form.check() && Form.checkSend()']);
echo $f->input(['name' => 'NmbContacto', 'label' => 'Contacto', 'value' => substr($_Auth->User->nombre, 0, 40), 'attr' => 'maxlength="40"', 'check' => 'notempty']);
echo $f->input(['name' => 'MailContacto', 'label' => 'Email contacto', 'value' => substr($_Auth->User->email, 0, 80), 'attr' => 'maxlength="80"', 'check' => 'notempty email']);
echo $f->input(['name' => 'Recinto', 'label' => 'Recinto', 'value' => substr($Emisor->direccion . ', ' . $Emisor->getComuna()->comuna, 0, 80), 'check' => 'notempty', 'attr' => 'maxlength="80"', 'help' => 'Lugar donde se recibieron los productos o prestaron los servicios']);
echo $f->input(['name' => 'responder_a', 'label' => 'Responder a', 'value' => $DteIntercambio->de, 'check' => 'notempty email']);
$estado = $EnvioDte->getEstadoValidacion(['RutReceptor' => $Emisor->rut . '-' . $Emisor->dv]);
echo $f->input(['type' => 'select', 'name' => 'EstadoRecepEnv', 'label' => 'Estado envío', 'options' => \sasco\LibreDTE\Sii\RespuestaEnvio::$estados['envio'], 'value' => $estado, 'check' => 'notempty', 'attr' => 'onchange="document.getElementById(\'RecepEnvGlosaField\').value=this.selectedOptions[0].textContent"']);
echo $f->input(['name' => 'RecepEnvGlosa', 'label' => 'Glosa estado envío', 'value' => \sasco\LibreDTE\Sii\RespuestaEnvio::$estados['envio'][$estado], 'check' => 'notempty']);
// Recepción de envío
$RecepcionDTE = [];
foreach ($Documentos as $Dte) {
    $estado_sii = !isset($DteIntercambio->estado) ? $Dte->getEstado($Firma) : ['GLOSA' => ''];
    $estado = $Dte->getEstadoValidacion(['RUTEmisor' => $DteIntercambio->getEmisor()->rut . '-' . $DteIntercambio->getEmisor()->dv, 'RUTRecep' => $Emisor->rut . '-' . $Emisor->dv]);
    $RecepcionDTE[] = ['TipoDTE' => $Dte->getTipo(), 'Folio' => $Dte->getFolio(), 'FchEmis' => $Dte->getFechaEmision(), 'RUTEmisor' => $Dte->getEmisor(), 'RUTRecep' => $Dte->getReceptor(), 'MntTotal' => $Dte->getMontoTotal(), 'estado_sii' => isset($estado_sii['GLOSA']) ? $estado_sii['GLOSA'] : (isset($estado_sii['GLOSA_ERR']) ? $estado_sii['GLOSA_ERR'] : 'No determinado'), 'EstadoRecepDTE' => $estado, 'RecepDTEGlosa' => \sasco\LibreDTE\Sii\RespuestaEnvio::$estados['documento'][$estado], 'acuse' => (int) (bool) (!$estado)];
}
echo $f->input(['type' => 'js', 'id' => 'documentos', 'label' => 'Documentos', 'titles' => ['DTE', 'Folio', 'Total', 'Estado SII', 'Estado', 'Glosa', 'Acuse'], 'inputs' => [['name' => 'TipoDTE', 'attr' => 'readonly="readonly" size="3"'], ['name' => 'Folio', 'attr' => 'readonly="readonly" size="10"'], ['name' => 'FchEmis', 'type' => 'hidden'], ['name' => 'RUTEmisor', 'type' => 'hidden'], ['name' => 'RUTRecep', 'type' => 'hidden'], ['name' => 'MntTotal', 'attr' => 'readonly="readonly" size="10"'], ['name' => 'estado_sii'], ['name' => 'EstadoRecepDTE', 'type' => 'select', 'options' => \sasco\LibreDTE\Sii\RespuestaEnvio::$estados['documento'], 'attr' => 'style="width:12em" onchange="this.parentNode.parentNode.parentNode.childNodes[8].firstChild.firstChild.value=this.selectedOptions[0].textContent"'], ['name' => 'RecepDTEGlosa'], ['name' => 'acuse', 'type' => 'select', 'options' => [1 => 'Si', 0 => 'No'], 'attr' => 'style="width:5em"']], 'values' => $RecepcionDTE, 'help' => 'Si el estado es diferente a "DTE Recibido OK" entonces el DTE será rechazado (no hay aceptado con reparos). Aquellos DTE con acuse de recibo serán agregados a los DTEs recibidos de ' . $Emisor->razon_social]);
echo $f->end('Generar y enviar respuesta del intercambio');
?>
</div>
<!-- FIN DOCUMENTOS -->

    </div>
</div>
<h1>Usuario empresa <?php 
echo $Contribuyente->razon_social;
?>
</h1>
<p>Aquí podrá modificar los usuarios autorizados a operar con la empresa <?php 
echo $Contribuyente->razon_social;
?>
 RUT <?php 
echo num($Contribuyente->rut) . '-' . $Contribuyente->dv;
?>
, para la cual usted es el usuario administrador.</p>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check() && Form.checkSend()']);
echo $f->input(['type' => 'js', 'id' => 'usuarios', 'label' => 'Usuarios autorizados', 'titles' => ['Usuario', 'Permiso'], 'inputs' => [['name' => 'usuario'], ['type' => 'select', 'name' => 'permiso', 'options' => $permisos_usuarios]], 'values' => $Contribuyente->getUsuarios(), 'help' => 'Debe ingresar el nombre del usuario que desea autorizar y el permiso. Si quiere asignar varios permisos a un usuario deberá agregarlo varias veces.']);
echo $f->end('Modificar usuarios autorizados');
<h1>Crear mantenedor de folios</h1>
<p>Aquí podrá agregar un mantenedor de folios para un nuevo tipo de documento. En el paso siguiente se le pedirá que suba el primer archio CAF.</p>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'select', 'name' => 'dte', 'label' => 'Tipo de DTE', 'options' => ['' => 'Seleccione un tipo de DTE'] + $dte_tipos, 'check' => 'notempty']);
echo $f->input(['name' => 'alerta', 'label' => 'Cantidad alerta', 'value' => 0, 'help' => 'Cuando los folios disponibles sean igual a esta cantidad se notificará al administrador de la empresa', 'check' => 'notempty integer']);
echo $f->end('Crear mantenedor de folios e ir al paso siguiente');
Example #4
0
</div>
<!-- FIN DETALLES -->

<!-- INICIO ESTADÍSTICAS -->
<div role="tabpanel" class="tab-pane" id="estadisticas">
    <img src="<?php 
    echo $_base . '/dte/dte_guias/grafico_documentos_diarios/' . $Libro->periodo;
    ?>
" alt="Gráfico guías diarias del período" class="img-responsive thumbnail center" />
</div>
<!-- FIN ESTADÍSTICAS -->

<?php 
}
?>

<!-- INICIO REVISIÓN -->
<div role="tabpanel" class="tab-pane" id="revision">
<p>Aquí puede subir el XML con el resultado de la revisión del libro de guías de despacho envíado al SII.</p>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['action' => $_base . '/dte/dte_guias/subir_revision/' . $Libro->periodo, 'onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'file', 'name' => 'xml', 'label' => 'XML revisión', 'check' => 'notempty', 'attr' => 'accept=".xml"']);
echo $f->end('Subir XML de revisión');
?>
</div>
<!-- FIN REVISIÓN -->

    </div>
</div>
" />
    <?php 
    echo $info['name'];
    ?>
  </a>
<?php 
}
?>
</div>

<h1>Proceso de certificación &raquo; Etapa 3: intercambio</h1>

<div class="panel panel-default">
    <div class="panel-heading">Instrucciones SII</div>
    <div class="panel-body">
        <p class="lead">En esta etapa el SII envía documentos tributarios electrónicos al contribuyente postulante para comprobar que éste entrega un acuse de recibo del envío y la aceptación o rechazo de los documentos enviados, de acuerdo a las definiciones que el SII ha establecido para el intercambio de información entre contribuyentes autorizados.</p>
        <p>La descarga de los documentos tributarios electrónicos y la posterior carga de los archivos con las respuestas se hace a través del <a href="https://www4.sii.cl/pfeInternet">Menú Set de Intercambio</a>.</p>
        <p>Una vez que el SII haya revisado y verificado la consistencia de las respuestas enviadas, se considera que la empresa ha superado la prueba de Intercambio de Información y la empresa pasará a la siguiente etapa del proceso de certificación, <a href="muestras_impresas">las pruebas de impresión</a>.</p>
    </div>
</div>

<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'file', 'name' => 'xml', 'label' => 'XML EnvioDTE', 'help' => 'Archivo XML de EnvioDTE envíados por el SII para intercambio', 'check' => 'notempty', 'attr' => 'accept=".xml"']);
echo $f->input(['name' => 'emisor', 'label' => 'Emisor esperado', 'value' => '88888888-8', 'placeholder' => '88888888-8', 'help' => 'RUT del emisor esperado del DTE', 'check' => 'notempty rut']);
echo $f->input(['name' => 'receptor', 'label' => 'Receptor esperado', 'placeholder' => '11222333-4', 'help' => 'RUT empresa que se está certificando', 'check' => 'notempty rut']);
echo $f->input(['type' => 'file', 'name' => 'firma', 'label' => 'Firma electrónica', 'help' => 'Certificado digital con extensión .p12', 'check' => 'notempty', 'attr' => 'accept=".p12,.pfx"']);
echo $f->input(['type' => 'password', 'name' => 'contrasenia', 'label' => 'Contraseña firma', 'help' => 'Contraseña que permite abrir el certificado digital de la firma electrónica', 'check' => 'notempty']);
echo $f->end('Generar XML de respuesta a envío');
<a href="<?php 
echo $_base;
?>
/dte/dte_compras" title="Volver a IEC" class="pull-right"><span class="btn btn-default">Volver a IEC</span></a>
<h1>Importar libro de compras (IEC) desde archivo CSV</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check() && Form.checkSend(\'¿Está seguro de importar el libro seleccionado?\')']);
echo $f->input(['type' => 'file', 'name' => 'archivo', 'label' => 'Libro CSV', 'help' => 'Libro de compras en formato CSV. Puede consultar un <a href="https://raw.githubusercontent.com/LibreDTE/libredte-lib/master/examples/libros/libro_compras.csv">ejemplo del libro</a> o bien revisar la <a href="http://wiki.libredte.cl/doku.php/faq/libredte/general/libro_compras_ventas#detalle_libro_compra">documentación de las columnas</a>.', 'check' => 'notempty', 'attr' => 'accept="csv"']);
echo $f->end('Importar libro de compras');
echo $f->begin(['action' => $_base . '/certificacion/set_pruebas_dte', 'id' => 'form_dte', 'onsubmit' => 'Form.check(\'form_dte\')']);
echo $f->input(['type' => 'file', 'name' => 'archivo', 'label' => 'Set pruebas ventas', 'check' => 'notempty', 'help' => 'Archivo del set de pruebas con los casos (de un mismo SET) que se desean generar, debe estar codificado en ISO-8859-1. Puedes ver un ejemplo del archivo que se espera <a href="https://github.com/sascocl/LibreDTE/blob/master/examples/set_pruebas/001-basico.txt" target="_blank">para el set básico</a> o <a href="https://github.com/sascocl/LibreDTE/blob/master/examples/set_pruebas/004-factura_exenta.txt" target="_blank">para el set de factura exenta</a>', 'attr' => 'accept=".txt"']);
echo $f->input(['type' => 'js', 'name' => 'folios', 'label' => 'Folios a usar', 'titles' => ['Tipo documento', 'Folio desde'], 'inputs' => [['name' => 'folios'], ['name' => 'desde']], 'check' => 'notempty', 'help' => 'Se debe indicar el código del tipo de documento y el folio desde el cual se generarán los documentos']);
echo $f->end('Siguiente &raquo;');
?>
</div>
<!-- FIN EMISIÓN DTE -->

<!-- INICIO VENTAS -->
<div role="tabpanel" class="tab-pane" id="ventas">
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['action' => $_base . '/certificacion/set_pruebas_ventas', 'id' => 'form_ventas', 'onsubmit' => 'Form.check(\'form_ventas\')']);
echo $f->input(['type' => 'file', 'name' => 'archivo', 'label' => 'XML EnvioDTE', 'check' => 'notempty', 'help' => 'Archivo XML del EnvioDTE generado a partir del caso de prueba que se desea crear su libro de ventas', 'attr' => 'accept=".xml"']);
echo $f->input(['name' => 'PeriodoTributario', 'label' => 'Periodo tributario', 'value' => '1980-01', 'placeholder' => '1980-01', 'check' => 'notempty', 'help' => 'Debe ser un mes del año 1980']);
echo $f->end('Descargar Libro de Ventas');
?>
</div>
<!-- FIN VENTAS -->

<!-- INICIO COMPRAS -->
<div role="tabpanel" class="tab-pane" id="compras">
    <p>Para generar el libro de compras deberá crear un archivo en formato CSV que contendrá los datos de las compras del set de pruebas entregado por el SII. Luego deberá cargar dicho archivo CSV en el <a href="<?php 
echo $_base;
?>
/utilidades/generar_libro">Generador de XML de Libro de Compra</a> de LibreDTE.</p>
    <p>Ejemplos archivos:</p>
    <ul>
        <li><a href="https://github.com/sascocl/LibreDTE/blob/master/examples/set_pruebas/003-compras.txt">Ejemplo set de pruebas de compras entregado por el SII</a></li>
        <li><a href="https://raw.githubusercontent.com/LibreDTE/libredte-lib/master/examples/libros/libro_compras.csv">Ejemplo archivo CSV generado con los datos del set de pruebas</a></li>
    </ul>
<a href="<?php 
echo $_base;
?>
/dte/dte_compras" title="Volver a IEC" class="pull-right"><span class="btn btn-default">Volver a IEC</span></a>

<h1>Enviar libro de compras (IEC) sin movimientos</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check() && Form.checkSend(\'¿Está seguro de enviar el libro sin movimientos?\')']);
echo $f->input(['name' => 'periodo', 'label' => 'Período', 'placeholder' => date('Ym'), 'help' => 'Período en formato AAAAMM, ejemplo: ' . date('Ym'), 'check' => 'notempty integer']);
echo $f->end('Enviar libro sin movimientos');
<h1>Consultar documento tributario electrónico (DTE)</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['focus' => 'emisorField', 'onsubmit' => 'Form.check()']);
echo $f->input(['name' => 'emisor', 'label' => 'RUT emisor', 'check' => 'notempty rut']);
echo $f->input(['type' => 'select', 'name' => 'dte', 'label' => 'Tipo DTE', 'options' => ['' => 'Seleccionar un tipo de documento'] + $dtes, 'value' => $dte, 'check' => 'notempty']);
echo $f->input(['name' => 'folio', 'label' => 'Folio DTE', 'check' => 'notempty integer']);
echo $f->input(['type' => 'date', 'name' => 'fecha', 'label' => 'Fecha emisión', 'check' => 'notempty date']);
echo $f->input(['name' => 'total', 'label' => 'Monto total', 'check' => 'notempty integer']);
echo $f->end('Consultar DTE');
// si se encontró un DTE se muestra
if (isset($DteEmitido)) {
    ?>
<h2><?php 
    echo $DteEmitido->getTipo()->tipo;
    ?>
 #<?php 
    echo $DteEmitido->folio;
    ?>
 a <?php 
    echo \sowerphp\app\Utility_Rut::addDV($DteEmitido->receptor);
    ?>
</h2>
<div class="row">
    <div class="col-md-9">
<?php 
    new \sowerphp\general\View_Helper_Table([['Documento', 'Folio', 'Receptor', 'Exento', 'Neto', 'IVA', 'Total'], [$DteEmitido->getTipo()->tipo, $DteEmitido->folio, $DteEmitido->getReceptor()->razon_social, num($DteEmitido->exento), num($DteEmitido->neto), num($DteEmitido->iva), num($DteEmitido->total)]]);
    ?>
        <div class="row">
            <div class="col-md-6">
                <a class="btn btn-default btn-lg btn-block" href="<?php 
<h1>Firmar XML</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'file', 'name' => 'xml', 'label' => 'Archivo XML', 'check' => 'notempty', 'help' => 'Archivo XML que se desea firmar', 'attr' => 'accept=".xml"']);
echo $f->input(['type' => 'file', 'name' => 'firma', 'label' => 'Firma electrónica', 'help' => 'Certificado digital con extensión .p12', 'check' => 'notempty', 'attr' => 'accept=".p12,.pfx"']);
echo $f->input(['type' => 'password', 'name' => 'contrasenia', 'label' => 'Contraseña firma', 'help' => 'Contraseña que permite abrir el certificado digital de la firma electrónica', 'check' => 'notempty']);
echo $f->end('Generar XML firmado');
?>
<p>Se firmará el primer nodo que sea hijo de la raíz, en el siguiente ejemplo la raíz es A y se firmaría el contenido del nodo B:</p>
<pre>
&lt;A&gt;
    &lt;B&gt;...&lt;/B&gt;
&lt;/A&gt;
</pre>
Example #11
0
<h1>Generar PDF a partir de XML EnvioDTE</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'file', 'name' => 'xml', 'label' => 'XML EnvioDTE', 'help' => 'Archivo XML de EnvioDTE', 'check' => 'notempty']);
echo $f->input(['type' => 'file', 'name' => 'logo', 'label' => 'Logo PNG', 'help' => 'Logo del emisor en formato PNG']);
echo $f->input(['type' => 'checkbox', 'name' => 'cedible', 'label' => '¿Cedible?', 'help' => 'Si se selecciona, se generará adicionalmente versión del documento con leyenda: CEDIBLE']);
echo $f->end('Generar documento en PDF');
/dte/dte_recibidos/listar" title="Volver a los documentos recibidos" class="pull-right"><span class="btn btn-default">Volver a DTE recibidos</span></a>

<h1>Editar documento <?php 
echo $DteRecibido->getTipo()->tipo;
?>
 N° <?php 
echo $DteRecibido->folio;
?>
</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['name' => 'emisor', 'label' => 'RUT emisor', 'value' => \sowerphp\app\Utility_Rut::addDV($DteRecibido->emisor), 'check' => 'notempty rut']);
echo $f->input(['type' => 'select', 'name' => 'dte', 'label' => 'Documento', 'options' => ['' => 'Seleccionar tipo de DTE'] + $tipos_documentos, 'value' => $DteRecibido->dte, 'check' => 'notempty']);
echo $f->input(['name' => 'folio', 'label' => 'Folio', 'value' => $DteRecibido->folio, 'check' => 'notempty integer']);
echo $f->input(['type' => 'date', 'name' => 'fecha', 'label' => 'Fecha documento', 'value' => $DteRecibido->fecha, 'check' => 'notempty date']);
echo $f->input(['name' => 'tasa', 'label' => 'Tasa IVA', 'value' => $DteRecibido->tasa, 'check' => 'integer']);
echo $f->input(['name' => 'exento', 'label' => 'Monto exento', 'value' => $DteRecibido->exento, 'check' => 'integer']);
echo $f->input(['name' => 'neto', 'label' => 'Neto', 'value' => $DteRecibido->neto, 'check' => 'integer']);
echo $f->input(['name' => 'iva_uso_comun', 'label' => 'IVA uso común', 'check' => 'integer', 'value' => $DteRecibido->iva_uso_comun, 'help' => 'Si el IVA es de uso común aquí va el factor de proporcionalidad']);
echo $f->input(['type' => 'select', 'name' => 'iva_no_recuperable', 'label' => 'IVA no recuperable', 'options' => ['' => 'El IVA es recuperable'] + $iva_no_recuperables, 'value' => $DteRecibido->iva_no_recuperable]);
echo $f->input(['type' => 'select', 'name' => 'impuesto_adicional', 'label' => 'Impuesto adicional', 'options' => ['' => 'Sin impuesto adicional'] + $impuesto_adicionales, 'value' => $DteRecibido->impuesto_adicional]);
echo $f->input(['name' => 'impuesto_adicional_tasa', 'label' => 'Tasa Imp. adic.', 'value' => $DteRecibido->impuesto_adicional_tasa, 'check' => 'integer', 'help' => 'Tasa del impuesto adicional (obligatorio si hay impuesto adicional)']);
echo $f->input(['type' => 'select', 'name' => 'impuesto_tipo', 'label' => 'Tipo de impuesto', 'value' => $DteRecibido->impuesto_tipo, 'options' => [1 => 'IVA', 2 => 'Ley 18211']]);
echo $f->input(['type' => 'checkbox', 'name' => 'anulado', 'checked' => $DteRecibido->anulado == 'A' ? true : false, 'label' => '¿Anulado?']);
echo $f->input(['name' => 'impuesto_sin_credito', 'label' => 'Impuesto sin crédito', 'value' => $DteRecibido->impuesto_sin_credito, 'check' => 'integer']);
echo $f->input(['name' => 'monto_activo_fijo', 'label' => 'Monto activo fijo', 'value' => $DteRecibido->monto_activo_fijo, 'check' => 'integer']);
echo $f->input(['name' => 'monto_iva_activo_fijo', 'label' => 'IVA activo fijo', 'value' => $DteRecibido->monto_iva_activo_fijo, 'check' => 'integer']);
echo $f->input(['name' => 'iva_no_retenido', 'label' => 'IVA no retenido', 'value' => $DteRecibido->iva_no_retenido, 'check' => 'integer']);
echo $f->end('Editar DTE recibido');
echo $f->input(['name' => 'sii_smtp', 'label' => 'Servidor SMTP', 'value' => $Contribuyente->sii_smtp, 'help' => 'Ejemplo: ssl://smtp.gmail.com:465', 'attr' => 'maxlength="50"', 'check' => 'notempty']);
echo $f->input(['name' => 'sii_imap', 'label' => 'Mailbox IMAP', 'value' => $Contribuyente->sii_imap, 'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX', 'attr' => 'maxlength="100"', 'check' => 'notempty']);
echo $f->input(['name' => 'sii_user', 'label' => 'Email', 'check' => 'email', 'value' => $Contribuyente->sii_user, 'attr' => 'maxlength="50"', 'check' => 'notempty email']);
echo $f->input(['type' => 'password', 'name' => 'sii_pass', 'label' => 'Contraseña']);
?>
<h2>Email intercambio</h2>
<?php 
echo $f->input(['name' => 'intercambio_smtp', 'label' => 'Servidor SMTP', 'value' => $Contribuyente->intercambio_smtp, 'help' => 'Ejemplo: ssl://smtp.gmail.com:465', 'attr' => 'maxlength="50"', 'check' => 'notempty']);
echo $f->input(['name' => 'intercambio_imap', 'label' => 'Mailbox IMAP', 'value' => $Contribuyente->intercambio_imap, 'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX', 'attr' => 'maxlength="100"', 'check' => 'notempty']);
echo $f->input(['name' => 'intercambio_user', 'label' => 'Email', 'check' => 'email', 'value' => $Contribuyente->intercambio_user, 'attr' => 'maxlength="50"', 'check' => 'notempty email']);
echo $f->input(['type' => 'password', 'name' => 'intercambio_pass', 'label' => 'Contraseña']);
?>
</div>
<!-- FIN EMAILS -->

<!-- INICIO API -->
<div role="tabpanel" class="tab-pane" id="api">
<p>LibreDTE puede comunicarse con la aplicación web de su empresa a través de servicios web. A continuación puede ingresar las URL para diferentes consultas que LibreDTE debería poder 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 salidas esperadas para cada consulta.</p>
<?php 
echo $f->input(['name' => 'api_token', 'label' => 'Token', 'value' => \website\Dte\Utility_Data::decrypt($Contribuyente->api_token), 'help' => 'Token opcional para autenticación a través de <em>HTTP Basic Auth</em>. Se enviará al servicio el token como usuario y una X como contraseña.']);
echo $f->input(['name' => 'api_items', 'label' => 'Items', 'value' => $Contribuyente->api_items, 'help' => 'URL para consultar por GET los items a través de su código. Ejemplos: https://example.com/api/items/ o https://example.com/api/items?codigo=']);
?>
</div>
<!-- FIN API -->

    </div>
</div>

<?php 
echo $f->end('Modificar empresa');
<h1>Generar XML Libro de Compra o Venta</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'select', 'name' => 'simplificado', 'label' => '¿Libro normal o simplificado?', 'options' => ['Normal', 'Simplificado'], 'check' => 'notempty', 'help' => 'Si el libro es simplificado no se firmará']);
echo $f->input(['type' => 'select', 'name' => 'TipoOperacion', 'label' => 'Tipo operación', 'options' => ['COMPRA' => 'COMPRA', 'VENTA' => 'VENTA'], 'check' => 'notempty']);
echo $f->input(['name' => 'RutEmisorLibro', 'label' => 'Emisor', 'placeholder' => '55666777-8', 'help' => 'RUT de la empresa que emite el libro', 'check' => 'notempty rut']);
echo $f->input(['name' => 'PeriodoTributario', 'label' => 'Período tributario', 'placeholder' => '2000-01', 'help' => 'En certificación o simplificado debe ser un mes del año 2000 (compras) o 1980 (ventas)', 'check' => 'notempty']);
echo $f->input(['type' => 'date', 'name' => 'FchResol', 'label' => 'Fecha resolución', 'placeholder' => '2006-01-20', 'help' => 'En certificación o simplificado debe ser: 2006-01-20', 'check' => 'notempty date']);
echo $f->input(['name' => 'NroResol', 'label' => 'Número resolución', 'placeholder' => 102006, 'help' => 'En certificación o simplificado debe ser: 102006', 'check' => 'notempty integer']);
echo $f->input(['type' => 'select', 'name' => 'TipoLibro', 'label' => 'Tipo libro', 'options' => ['MENSUAL' => 'MENSUAL', 'ESPECIAL' => 'ESPECIAL'], 'help' => 'En certificación o simplificado debe ser: ESPECIAL', 'check' => 'notempty']);
echo $f->input(['type' => 'select', 'name' => 'TipoEnvio', 'label' => 'Tipo envío', 'options' => ['TOTAL' => 'TOTAL'], 'help' => 'En certificación o simplificado debe ser: TOTAL', 'check' => 'notempty']);
echo $f->input(['name' => 'FolioNotificacion', 'label' => 'Folio notificación', 'placeholder' => 102006, 'help' => 'En certificación o simplificado debe ser: 102006', 'check' => 'notempty integer']);
echo $f->input(['type' => 'file', 'name' => 'archivo', 'label' => 'Archivo detalle', 'help' => 'Archivo CSV (separado por punto y coma) con el detalle del Libro de Compras o Ventas que se desea generar en XML: <a href="https://raw.githubusercontent.com/LibreDTE/libredte-lib/master/examples/libros/libro_ventas.csv">ejemplo archivo CSV ventas</a> o <a href="https://raw.githubusercontent.com/LibreDTE/libredte-lib/master/examples/libros/libro_compras.csv">ejemplo archivo CSV compras</a>', 'check' => 'notempty', 'attr' => 'accept=".csv"']);
echo $f->input(['type' => 'file', 'name' => 'firma', 'label' => 'Firma electrónica', 'help' => 'Certificado digital con extensión .p12', 'check' => 'notempty', 'attr' => 'accept=".p12,.pfx"']);
echo $f->input(['type' => 'password', 'name' => 'contrasenia', 'label' => 'Contraseña firma', 'help' => 'Contraseña que permite abrir el certificado digital de la firma electrónica', 'check' => 'notempty']);
echo $f->end('Generar XML del libro');
<h1>Agregar firma electrónica del usuario <?php 
echo $_Auth->User->usuario;
?>
</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'file', 'name' => 'firma', 'label' => 'Firma electrónica', 'help' => 'Certificado digital con extensión .p12', 'check' => 'notempty', 'attr' => 'accept="application/x-pkcs12"']);
echo $f->input(['type' => 'password', 'name' => 'contrasenia', 'label' => 'Contraseña firma', 'help' => 'Contraseña que permite abrir el certificado digital de la firma electrónica']);
echo $f->end('Agregar o cambiar mi firma electrónica');
Example #16
0
echo $f->input(['name' => 'DirRecep', 'label' => 'Dirección', 'placeholder' => 'Dirección del receptor', 'check' => 'notempty', 'attr' => 'maxlength="70"']);
echo '<br/>';
echo $f->input(['type' => 'select', 'name' => 'CmnaRecep', 'label' => 'Comuna', 'options' => ['' => 'Comuna del receptor'] + $comunas, 'check' => 'notempty']);
echo '<br/>';
echo $f->input(['name' => 'Contacto', 'label' => 'Teléfono', 'placeholder' => 'Teléfono del receptor (opcional)', 'attr' => 'maxlength="20"']);
echo '<br/>';
echo $f->input(['name' => 'CorreoRecep', 'label' => 'Email', 'placeholder' => 'Email del receptor (opcional)', 'attr' => 'maxlength="80"']);
echo '<br/>';
?>
    </div>
</div>
<h2>Documentos</h2>
<?php 
echo $f->input(['type' => 'select', 'name' => 'plantilla_dte', 'label' => 'Plantilla DTE', 'options' => ['' => 'Usar una plantilla de DTE para generar el documento'] + $plantillas_dte_options, 'attr' => 'onchange="dte_generar_xml_plantilla(this.value)"']);
echo '<br/>';
echo $f->input(['type' => 'textarea', 'name' => 'documentos', 'value' => $documentos_json, 'label' => 'Documento(s)', 'placeholder' => 'Arreglo JSON con cada uno de los objetos que representa un documento tributario electrónico (DTE)', 'check' => 'notempty', 'rows' => 20]);
echo '<br/>';
$f->setStyle('horizontal');
echo $f->input(['type' => 'checkbox', 'name' => 'normalizar_dte', 'label' => 'Normalizar DTE', 'checked' => isset($_POST['submit']) ? isset($_POST['normalizar_dte']) : true, 'help' => 'Si está seleccionado los datos del DTE se normalizarán, agregando y/o calculando los faltantes. Si no se normaliza debe proporcionar todos los datos del DTE (incluyendo Totales, cálculo de IVA, montos de descuentos, etc)']);
echo '<br/>';
echo '<h2>Folios</h2>', "\n";
echo $f->input(['type' => 'js', 'name' => 'folios', 'label' => 'Folios', 'titles' => ['Archivo CAF'], 'inputs' => [['type' => 'file', 'name' => 'folios']], 'help' => 'Todos los archivos de folios CAF de los documentos a generar', 'check' => 'notempty']);
echo '<h2>Firma electrónica</h2>', "\n";
echo $f->input(['type' => 'file', 'name' => 'firma', 'label' => 'Firma electrónica', 'help' => 'Certificado digital con extensión .p12', 'check' => 'notempty']);
echo $f->input(['type' => 'password', 'name' => 'contrasenia', 'label' => 'Contraseña firma', 'help' => 'Contraseña que permite abrir el certificado digital de la firma electrónica']);
echo '<h2>Resolución</h2>', "\n";
echo '<p>Si se indica fecha y número de resolución se generará un único XML EnvioDTE.xml en vez de múltiples XML DTE.xml por cada documento</p>', "\n";
echo $f->input(['type' => 'date', 'name' => 'FchResol', 'label' => 'Fecha resolución', 'help' => 'Fecha en que fue otorgada la resolución', 'check' => 'date']);
echo $f->input(['name' => 'NroResol', 'label' => 'Número resolución', 'help' => 'Número de resolución (0 en ambiente de certificación)', 'check' => 'integer']);
echo $f->end('Generar XML');
<h1>Modificar mantenedor de folios</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['name' => 'siguiente', 'label' => 'Siguiente folio', 'value' => $DteFolio->siguiente, 'help' => 'Número de folio que es el siguiente que se debe asignar al documento que se emita', 'check' => 'notempty integer']);
echo $f->input(['name' => 'alerta', 'label' => 'Cantidad alerta', 'value' => $DteFolio->alerta, 'help' => 'Cuando los folios disponibles sean igual a esta cantidad se notificará al administrador de la empresa', 'check' => 'notempty integer']);
echo $f->end('Modificar mantenedor de folios');
Example #18
0
    $mensaje .= $Emisor->direccion . ', ' . $Emisor->getComuna()->comuna . "\n";
    $table = [];
    $checked = [];
    foreach ($emails as $k => $e) {
        $table[] = [$e, $k];
        if ($k == 'Email intercambio') {
            $checked = [$e];
        }
    }
    $f = new \sowerphp\general\View_Helper_Form();
    echo $f->begin(['action' => $_base . '/dte/dte_emitidos/enviar_email/' . $DteEmitido->dte . '/' . $DteEmitido->folio]);
    echo $f->input(['type' => 'tablecheck', 'name' => 'emails', 'label' => 'Para', 'titles' => ['Email', 'Origen'], 'table' => $table, 'checked' => $checked, 'help' => 'Seleccionar emails a los que se enviará el DTE']);
    echo $f->input(['name' => 'asunto', 'label' => 'Asunto', 'value' => $asunto, 'check' => 'notempty']);
    echo $f->input(['type' => 'textarea', 'name' => 'mensaje', 'label' => 'Mensaje', 'value' => $mensaje, 'rows' => 10, 'check' => 'notempty']);
    echo $f->input(['type' => 'checkbox', 'name' => 'cedible', 'label' => '¿Copia cedible?']);
    echo $f->end('Enviar PDF y XML por email');
} else {
    echo '<p>No hay emails registrados para el receptor ni el DTE.</p>', "\n";
}
?>
</div>
<!-- FIN ENVIAR POR EMAIL -->

<!-- INICIO INTERCAMBIO -->
<div role="tabpanel" class="tab-pane" id="intercambio">
<?php 
// recibo
echo '<h2>Recibo</h2>', "\n";
$Recibo = $DteEmitido->getIntercambioRecibo();
if ($Recibo) {
    $Sobre = $Recibo->getSobre();
<h1>Subir CAF</h1>
<p>Aquí podrá subir los códigos de autorización de folios (CAF) obtenidos desde el SII para la empresa <?php 
echo $Emisor->razon_social;
?>
.</p>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['type' => 'file', 'name' => 'caf', 'label' => 'Archivo CAF', 'check' => 'notempty', 'help' => 'Archivo CAF en formato XML descargado desde SII', 'attr' => 'accept="application/xml"']);
echo $f->end('Subir archivo CAF');
<a href="<?php 
echo $_base;
?>
/dte/dte_recibidos/listar" title="Volver a los documentos recibidos" class="pull-right"><span class="btn btn-default">Volver a DTE recibidos</span></a>

<h1>Agregar DTE recibido</h1>
<?php 
$f = new \sowerphp\general\View_Helper_Form();
echo $f->begin(['onsubmit' => 'Form.check()']);
echo $f->input(['name' => 'emisor', 'label' => 'RUT emisor', 'check' => 'notempty rut']);
echo $f->input(['type' => 'select', 'name' => 'dte', 'label' => 'Documento', 'options' => ['' => 'Seleccionar tipo de DTE'] + $tipos_documentos, 'check' => 'notempty']);
echo $f->input(['name' => 'folio', 'label' => 'Folio', 'check' => 'notempty integer']);
echo $f->input(['type' => 'date', 'name' => 'fecha', 'label' => 'Fecha documento', 'check' => 'notempty date']);
echo $f->input(['name' => 'tasa', 'label' => 'Tasa IVA', 'check' => 'integer']);
echo $f->input(['name' => 'exento', 'label' => 'Monto exento', 'check' => 'integer']);
echo $f->input(['name' => 'neto', 'label' => 'Neto', 'check' => 'integer']);
echo $f->input(['name' => 'iva_uso_comun', 'label' => 'IVA uso común', 'check' => 'integer', 'help' => 'Si el IVA es de uso común aquí va el factor de proporcionalidad']);
echo $f->input(['type' => 'select', 'name' => 'iva_no_recuperable', 'label' => 'IVA no recuperable', 'options' => ['' => 'El IVA es recuperable'] + $iva_no_recuperables]);
echo $f->input(['type' => 'select', 'name' => 'impuesto_adicional', 'label' => 'Impuesto adicional', 'options' => ['' => 'Sin impuesto adicional'] + $impuesto_adicionales]);
echo $f->input(['name' => 'impuesto_adicional_tasa', 'label' => 'Tasa Imp. adic.', 'check' => 'integer', 'help' => 'Tasa del impuesto adicional (obligatorio si hay impuesto adicional)']);
echo $f->input(['type' => 'select', 'name' => 'impuesto_tipo', 'label' => 'Tipo de impuesto', 'options' => [1 => 'IVA', 2 => 'Ley 18211']]);
echo $f->input(['type' => 'checkbox', 'name' => 'anulado', 'label' => '¿Anulado?']);
echo $f->input(['name' => 'impuesto_sin_credito', 'label' => 'Impuesto sin crédito', 'check' => 'integer']);
echo $f->input(['name' => 'monto_activo_fijo', 'label' => 'Monto activo fijo', 'check' => 'integer']);
echo $f->input(['name' => 'monto_iva_activo_fijo', 'label' => 'IVA activo fijo', 'check' => 'integer']);
echo $f->input(['name' => 'iva_no_retenido', 'label' => 'IVA no retenido', 'check' => 'integer']);
echo $f->end('Agregar DTE recibido');
echo $f->input(['name' => 'sii_smtp', 'label' => 'Servidor SMTP', 'help' => 'Ejemplo: ssl://smtp.gmail.com:465', 'attr' => 'maxlength="50"', 'check' => 'notempty']);
echo $f->input(['name' => 'sii_imap', 'label' => 'Mailbox IMAP', 'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX', 'attr' => 'maxlength="100"', 'check' => 'notempty']);
echo $f->input(['name' => 'sii_user', 'label' => 'Email', 'check' => 'email', 'attr' => 'maxlength="50"', 'check' => 'notempty email']);
echo $f->input(['type' => 'password', 'name' => 'sii_pass', 'label' => 'Contraseña']);
?>
<h2>Email intercambio</h2>
<?php 
echo $f->input(['name' => 'intercambio_smtp', 'label' => 'Servidor SMTP', 'help' => 'Ejemplo: ssl://smtp.gmail.com:465', 'attr' => 'maxlength="50"', 'check' => 'notempty']);
echo $f->input(['name' => 'intercambio_imap', 'label' => 'Mailbox IMAP', 'help' => 'Ejemplo: {imap.gmail.com:993/imap/ssl}INBOX', 'attr' => 'maxlength="100"', 'check' => 'notempty']);
echo $f->input(['name' => 'intercambio_user', 'label' => 'Email', 'check' => 'email', 'attr' => 'maxlength="50"', 'check' => 'notempty email']);
echo $f->input(['type' => 'password', 'name' => 'intercambio_pass', 'label' => 'Contraseña']);
?>
</div>
<!-- FIN EMAILS -->

<!-- INICIO API -->
<div role="tabpanel" class="tab-pane" id="api">
<p>LibreDTE puede comunicarse con la aplicación web de su empresa a través de servicios web. A continuación puede ingresar las URL para diferentes consultas que LibreDTE debería poder 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 salidas esperadas para cada consulta.</p>
<?php 
echo $f->input(['name' => 'api_token', 'label' => 'Token', 'help' => 'Token opcional para autenticación a través de <em>HTTP Basic Auth</em>. Se enviará al servicio el token como usuario y una X como contraseña.']);
echo $f->input(['name' => 'api_items', 'label' => 'Items', 'help' => 'URL para consultar por GET los items a través de su código. Ejemplos: https://example.com/items/ o https://example.com/items?codigo=']);
?>
</div>
<!-- FIN API -->

    </div>
</div>

<?php 
echo $f->end('Registrar empresa');