<commit_before><?php

/**
 * LibreDTE
 * Copyright (C) SASCO SpA (https://sasco.cl)
 *
 * Este programa es software libre: usted puede redistribuirlo y/o
 * modificarlo bajo los términos de la Licencia Pública General Affero de GNU
 * publicada por la Fundación para el Software Libre, ya sea la versión
 * 3 de la Licencia, o (a su elección) cualquier versión posterior de la
 * misma.
 *
 * Este programa se distribuye con la esperanza de que sea útil, pero
 * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita
 * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO.
 * Consulte los detalles de la Licencia Pública General Affero de GNU para
 * obtener una información más detallada.
 *
 * Debería haber recibido una copia de la Licencia Pública General Affero de GNU
 * junto a este programa.
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
 */

// namespace del modelo
namespace website\Dte\Informes;

/**
 * Modelo para obtener los datos del formulrio 29
 * @author <NAME>, DeLaF (esteban[at]sasco.cl)
 * @version 2016-02-01
 */
class Model_F29
{

    private $datos; ///< Arreglo con código y valores del formulario 29

    /**
     * Constructor del modelo F29
     * @author <NAME>, DeLaF (esteban[at]sasco.cl)
     * @version 2016-08-02
     */
    public function __construct(\website\Dte\Model_Contribuyente $Emisor, $periodo)
    {
        $this->Emisor = $Emisor;
        $this->periodo = (int)$periodo;
        $this->datos = [
            '01' => $this->Emisor->razon_social,
            '03' => num($Emisor->rut).'-'.$Emisor->dv,
            '06' => $this->Emisor->direccion,
            '08' => $this->Emisor->getComuna()->comuna,
            '09' => $this->Emisor->telefono,
            '15' => substr($periodo, 4).'/'.substr($periodo, 0, 4),
            '55' => $this->Emisor->email,
            '115' => $this->Emisor->config_contabilidad_ppm / 100,
            '151' => (new \website\Lce\Model_LceCuenta($this->Emisor->rut, $this->Emisor->config_contabilidad_f29_151))->getHaber($this->periodo),
            '313' => $this->Emisor->config_extra_contador_rut,
            '314' => $this->Emisor->config_extra_representante_rut,
        ];
    }

    public function setCompras($compras)
    {
    }

    public function setVentas($ventas)
    {
    }

    /**
     * Método que entrega un arreglo con los códigos del F29 y sus valores
     * @author <NAME>, DeLaF (esteban[at]sasco.cl)
     * @version 2016-02-01
     */
    public function getDatos()
    {
        return $this->datos;
    }

}
<commit_msg>Se agregan boletas afectas (manuales y electrónicas) y los pagos electrónicos a la propuesta de lF29<commit_after><?php

/**
 * LibreDTE
 * Copyright (C) SASCO SpA (https://sasco.cl)
 *
 * Este programa es software libre: usted puede redistribuirlo y/o
 * modificarlo bajo los términos de la Licencia Pública General Affero de GNU
 * publicada por la Fundación para el Software Libre, ya sea la versión
 * 3 de la Licencia, o (a su elección) cualquier versión posterior de la
 * misma.
 *
 * Este programa se distribuye con la esperanza de que sea útil, pero
 * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita
 * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO.
 * Consulte los detalles de la Licencia Pública General Affero de GNU para
 * obtener una información más detallada.
 *
 * Debería haber recibido una copia de la Licencia Pública General Affero de GNU
 * junto a este programa.
 * En caso contrario, consulte <http://www.gnu.org/licenses/agpl.html>.
 */

// namespace del modelo
namespace website\Dte\Informes;

/**
 * Modelo para obtener los datos del formulrio 29
 * @author <NAME>, DeLaF (esteban[at]sasco.cl)
 * @version 2016-02-01
 */
class Model_F29
{

    private $datos; ///< Arreglo con código y valores del formulario 29

    /**
     * Constructor del modelo F29
     * @author <NAME>, DeLaF (esteban[at]sasco.cl)
     * @version 2016-09-15
     */
    public function __construct(\website\Dte\Model_Contribuyente $Emisor, $periodo)
    {
        $this->Emisor = $Emisor;
        $this->periodo = (int)$periodo;
        // si hay libro de ventas se sacan de ahí las boletas y pagos electrónicos
        $boletas = ['total'=>0, 'iva'=>0];
        $pagos_electronicos = ['total'=>0, 'iva'=>0];
        $DteVenta = new \website\Dte\Model_DteVenta($Emisor->rut, $periodo, (int)$Emisor->config_ambiente_en_certificacion);
        if ($DteVenta->exists()) {
            $Libro = new \sasco\LibreDTE\Sii\LibroCompraVenta();
            $Libro->loadXML(base64_decode($DteVenta->xml));
            // resumenes boletas electrónicas
            $resumenBoletas = $Libro->getResumenBoletas();
            if (isset($resumenBoletas[39])) {
                $boletas = [
                    'total' => $resumenBoletas[39]['TotDoc'] - $resumenBoletas[39]['TotAnulado'],
                    'iva' => $resumenBoletas[39]['TotMntIVA'],
                ];
            }
            // resumenes manuales (boletas y pagos electrónicos)
            $resumenManual = $Libro->getResumenManual();
            if (isset($resumenManual[35])) {
                $boletas['total'] += $resumenManual[35]['TotDoc'] - $resumenManual[35]['TotAnulado'];
                $boletas['iva'] += $resumenManual[35]['TotMntIVA'];
            }
            if (isset($resumenManual[48])) {
                $pagos_electronicos = [
                    'total' => $resumenManual[48]['TotDoc'] - $resumenManual[48]['TotAnulado'],
                    'iva' => $resumenManual[48]['TotMntIVA'],
                ];
            }
        }
        // asignar datos
        $this->datos = [
            '01' => $this->Emisor->razon_social,
            '03' => num($Emisor->rut).'-'.$Emisor->dv,
            '06' => $this->Emisor->direccion,
            '08' => $this->Emisor->getComuna()->comuna,
            '09' => $this->Emisor->telefono,
            '15' => substr($periodo, 4).'/'.substr($periodo, 0, 4),
            '55' => $this->Emisor->email,
            '110' => $boletas['total'],
            '111' => $boletas['iva'],
            '115' => $this->Emisor->config_contabilidad_ppm / 100,
            '151' => (new \website\Lce\Model_LceCuenta($this->Emisor->rut, $this->Emisor->config_contabilidad_f29_151))->getHaber($this->periodo),
            '313' => $this->Emisor->config_extra_contador_rut,
            '314' => $this->Emisor->config_extra_representante_rut,
            '758' => $pagos_electronicos['total'],
            '759' => $pagos_electronicos['iva'],
        ];
    }

    public function setCompras($compras)
    {
    }

    public function setVentas($ventas)
    {
    }

    /**
     * Método que entrega un arreglo con los códigos del F29 y sus valores
     * @author <NAME>, DeLaF (esteban[at]sasco.cl)
     * @version 2016-02-01
     */
    public function getDatos()
    {
        return $this->datos;
    }

}

{'fraction_non_alphanumeric': 0.13818657367044465, 'fraction_numerical': 0.027317640220866028, 'mean_word_length': 2.5497679216090767, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 110, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 1}, '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': '4599239', 'n_tokens_mistral': 2585, 'n_tokens_neox': 2386, 'n_words': 552}