@@ -170,13 +170,13 @@ |
||
| 170 | 170 | } |
| 171 | 171 | // determinar neto e iva |
| 172 | 172 | $tasa = \sasco\LibreDTE\Sii::getIVA(); |
| 173 | - $neto = round(($d['MntTotal'] - $d['MntExe']) / (1 + $tasa/100)); |
|
| 173 | + $neto = round(($d['MntTotal']-$d['MntExe']) / (1+$tasa / 100)); |
|
| 174 | 174 | if ($neto) { |
| 175 | 175 | $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntNeto'] += $neto; |
| 176 | 176 | $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TasaIVA'] = $tasa; |
| 177 | 177 | // WARNING: problema por aproximaciones al calcular el NETO e IVA a partir del BRUTO |
| 178 | 178 | //$resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntIVA'] = round($resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntNeto'] * ($tasa/100)); |
| 179 | - $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntIVA'] = $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntTotal'] - $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntExe'] - $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntNeto']; |
|
| 179 | + $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntIVA'] = $resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntTotal']-$resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntExe']-$resumen[$d['TpoDoc']]['TotalesServicio'][$d['TpoServ']]['TotMntNeto']; |
|
| 180 | 180 | } |
| 181 | 181 | } |
| 182 | 182 | // documento anulado |
@@ -91,8 +91,9 @@ |
||
| 91 | 91 | public function generar() |
| 92 | 92 | { |
| 93 | 93 | // si ya se había generado se entrega directamente |
| 94 | - if ($this->xml_data) |
|
| 95 | - return $this->xml_data; |
|
| 94 | + if ($this->xml_data) { |
|
| 95 | + return $this->xml_data; |
|
| 96 | + } |
|
| 96 | 97 | // generar XML del envío |
| 97 | 98 | $xmlEnvio = (new \sasco\LibreDTE\XML())->generate([ |
| 98 | 99 | 'LibroBoleta' => [ |
@@ -125,7 +125,7 @@ discard block |
||
| 125 | 125 | { |
| 126 | 126 | $fecha = '9999-12-31'; |
| 127 | 127 | foreach ($this->detalles as &$d) { |
| 128 | - if ($d['FchDoc'] < $fecha) |
|
| 128 | + if ($d['FchDoc']<$fecha) |
|
| 129 | 129 | $fecha = $d['FchDoc']; |
| 130 | 130 | } |
| 131 | 131 | return $fecha; |
@@ -141,7 +141,7 @@ discard block |
||
| 141 | 141 | { |
| 142 | 142 | $fecha = '0000-01-01'; |
| 143 | 143 | foreach ($this->detalles as &$d) { |
| 144 | - if ($d['FchDoc'] > $fecha) |
|
| 144 | + if ($d['FchDoc']>$fecha) |
|
| 145 | 145 | $fecha = $d['FchDoc']; |
| 146 | 146 | } |
| 147 | 147 | return $fecha; |
@@ -199,7 +199,7 @@ discard block |
||
| 199 | 199 | // ajustes post agregar detalles |
| 200 | 200 | foreach ($Resumen as &$r) { |
| 201 | 201 | // obtener folios utilizados = emitidos + anulados |
| 202 | - $r['FoliosUtilizados'] = $r['FoliosEmitidos'] + $r['FoliosAnulados']; |
|
| 202 | + $r['FoliosUtilizados'] = $r['FoliosEmitidos']+$r['FoliosAnulados']; |
|
| 203 | 203 | $r['RangoUtilizados'] = $this->getRangos($RangoUtilizados[$r['TipoDocumento']]); |
| 204 | 204 | } |
| 205 | 205 | // completar con los resumenes que no se colocaron |
@@ -231,7 +231,7 @@ discard block |
||
| 231 | 231 | $aux = []; |
| 232 | 232 | $inicial = $folios[0]; |
| 233 | 233 | $i = $inicial; |
| 234 | - foreach($folios as $f) { |
|
| 234 | + foreach ($folios as $f) { |
|
| 235 | 235 | if ($i!=$f) { |
| 236 | 236 | $inicial = $f; |
| 237 | 237 | $i = $inicial; |
@@ -90,8 +90,9 @@ discard block |
||
| 90 | 90 | public function generar() |
| 91 | 91 | { |
| 92 | 92 | // si ya se había generado se entrega directamente |
| 93 | - if ($this->xml_data) |
|
| 94 | - return $this->xml_data; |
|
| 93 | + if ($this->xml_data) { |
|
| 94 | + return $this->xml_data; |
|
| 95 | + } |
|
| 95 | 96 | // generar XML del envío |
| 96 | 97 | $xmlEnvio = (new \sasco\LibreDTE\XML())->generate([ |
| 97 | 98 | 'ConsumoFolios' => [ |
@@ -125,8 +126,9 @@ discard block |
||
| 125 | 126 | { |
| 126 | 127 | $fecha = '9999-12-31'; |
| 127 | 128 | foreach ($this->detalles as &$d) { |
| 128 | - if ($d['FchDoc'] < $fecha) |
|
| 129 | - $fecha = $d['FchDoc']; |
|
| 129 | + if ($d['FchDoc'] < $fecha) { |
|
| 130 | + $fecha = $d['FchDoc']; |
|
| 131 | + } |
|
| 130 | 132 | } |
| 131 | 133 | return $fecha; |
| 132 | 134 | } |
@@ -141,8 +143,9 @@ discard block |
||
| 141 | 143 | { |
| 142 | 144 | $fecha = '0000-01-01'; |
| 143 | 145 | foreach ($this->detalles as &$d) { |
| 144 | - if ($d['FchDoc'] > $fecha) |
|
| 145 | - $fecha = $d['FchDoc']; |
|
| 146 | + if ($d['FchDoc'] > $fecha) { |
|
| 147 | + $fecha = $d['FchDoc']; |
|
| 148 | + } |
|
| 146 | 149 | } |
| 147 | 150 | return $fecha; |
| 148 | 151 | } |
@@ -36,7 +36,7 @@ |
||
| 36 | 36 | { |
| 37 | 37 | |
| 38 | 38 | private static $idioma = 'es'; ///< Idioma por defecto de los mensajes |
| 39 | - private static $locales = [ ///< Mapeo de idioma a locales |
|
| 39 | + private static $locales = [///< Mapeo de idioma a locales |
|
| 40 | 40 | 'es' => 'es_CL.utf8', |
| 41 | 41 | 'en' => 'en_US.utf8', |
| 42 | 42 | ]; |
@@ -53,8 +53,9 @@ |
||
| 53 | 53 | */ |
| 54 | 54 | public static function getCiudad($comuna) |
| 55 | 55 | { |
| 56 | - if (!$comuna) |
|
| 57 | - return false; |
|
| 56 | + if (!$comuna) { |
|
| 57 | + return false; |
|
| 58 | + } |
|
| 58 | 59 | $comuna = mb_strtoupper($comuna, 'UTF-8'); |
| 59 | 60 | return isset(self::$ciudades[$comuna]) ? self::$ciudades[$comuna] : false; |
| 60 | 61 | } |
@@ -42,7 +42,7 @@ |
||
| 42 | 42 | public static function mergeRecursiveDistinct(array $array1, array $array2) |
| 43 | 43 | { |
| 44 | 44 | $merged = $array1; |
| 45 | - foreach ( $array2 as $key => &$value ) { |
|
| 45 | + foreach ($array2 as $key => &$value) { |
|
| 46 | 46 | if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { |
| 47 | 47 | $merged [$key] = self::mergeRecursiveDistinct( |
| 48 | 48 | $merged [$key], |
@@ -317,10 +317,10 @@ discard block |
||
| 317 | 317 | */ |
| 318 | 318 | public function verify($data, $signature, $pub_key = null, $signature_alg = OPENSSL_ALGO_SHA1) |
| 319 | 319 | { |
| 320 | - if ($pub_key === null) |
|
| 320 | + if ($pub_key===null) |
|
| 321 | 321 | $pub_key = $this->certs['cert']; |
| 322 | 322 | $pub_key = $this->normalizeCert($pub_key); |
| 323 | - return openssl_verify($data, base64_decode($signature), $pub_key, $signature_alg) == 1 ? true : false; |
|
| 323 | + return openssl_verify($data, base64_decode($signature), $pub_key, $signature_alg)==1 ? true : false; |
|
| 324 | 324 | } |
| 325 | 325 | |
| 326 | 326 | /** |
@@ -451,7 +451,7 @@ discard block |
||
| 451 | 451 | } else { |
| 452 | 452 | $digest_calculado = base64_encode(sha1($doc->C14N(), true)); |
| 453 | 453 | } |
| 454 | - return $digest_original == $digest_calculado; |
|
| 454 | + return $digest_original==$digest_calculado; |
|
| 455 | 455 | } |
| 456 | 456 | |
| 457 | 457 | /** |
@@ -164,8 +164,9 @@ discard block |
||
| 164 | 164 | */ |
| 165 | 165 | public function getName() |
| 166 | 166 | { |
| 167 | - if (isset($this->data['subject']['CN'])) |
|
| 168 | - return $this->data['subject']['CN']; |
|
| 167 | + if (isset($this->data['subject']['CN'])) { |
|
| 168 | + return $this->data['subject']['CN']; |
|
| 169 | + } |
|
| 169 | 170 | return $this->error('No fue posible obtener el Name (subject.CN) de la firma'); |
| 170 | 171 | } |
| 171 | 172 | |
@@ -177,8 +178,9 @@ discard block |
||
| 177 | 178 | */ |
| 178 | 179 | public function getEmail() |
| 179 | 180 | { |
| 180 | - if (isset($this->data['subject']['emailAddress'])) |
|
| 181 | - return $this->data['subject']['emailAddress']; |
|
| 181 | + if (isset($this->data['subject']['emailAddress'])) { |
|
| 182 | + return $this->data['subject']['emailAddress']; |
|
| 183 | + } |
|
| 182 | 184 | return $this->error('No fue posible obtener el Email (subject.emailAddress) de la firma'); |
| 183 | 185 | } |
| 184 | 186 | |
@@ -317,8 +319,9 @@ discard block |
||
| 317 | 319 | */ |
| 318 | 320 | public function verify($data, $signature, $pub_key = null, $signature_alg = OPENSSL_ALGO_SHA1) |
| 319 | 321 | { |
| 320 | - if ($pub_key === null) |
|
| 321 | - $pub_key = $this->certs['cert']; |
|
| 322 | + if ($pub_key === null) { |
|
| 323 | + $pub_key = $this->certs['cert']; |
|
| 324 | + } |
|
| 322 | 325 | $pub_key = $this->normalizeCert($pub_key); |
| 323 | 326 | return openssl_verify($data, base64_decode($signature), $pub_key, $signature_alg) == 1 ? true : false; |
| 324 | 327 | } |
@@ -409,8 +412,9 @@ discard block |
||
| 409 | 412 | // calcular SignatureValue |
| 410 | 413 | $SignedInfo = $doc->saveHTML($Signature->getElementsByTagName('SignedInfo')->item(0)); |
| 411 | 414 | $firma = $this->sign($SignedInfo); |
| 412 | - if (!$firma) |
|
| 413 | - return false; |
|
| 415 | + if (!$firma) { |
|
| 416 | + return false; |
|
| 417 | + } |
|
| 414 | 418 | $signature = wordwrap($firma, $this->config['wordwrap'], "\n", true); |
| 415 | 419 | // reemplazar valores en la firma de |
| 416 | 420 | $Signature->getElementsByTagName('SignatureValue')->item(0)->nodeValue = $signature; |
@@ -442,8 +446,9 @@ discard block |
||
| 442 | 446 | $signature = $Signature->getElementsByTagName('SignatureValue')->item(0)->nodeValue; |
| 443 | 447 | $pub_key = $Signature->getElementsByTagName('X509Certificate')->item(0)->nodeValue; |
| 444 | 448 | // verificar firma |
| 445 | - if (!$this->verify($signed_info, $signature, $pub_key)) |
|
| 446 | - return false; |
|
| 449 | + if (!$this->verify($signed_info, $signature, $pub_key)) { |
|
| 450 | + return false; |
|
| 451 | + } |
|
| 447 | 452 | // verificar digest |
| 448 | 453 | $digest_original = $Signature->getElementsByTagName('DigestValue')->item(0)->nodeValue; |
| 449 | 454 | if ($tag) { |
@@ -100,7 +100,7 @@ discard block |
||
| 100 | 100 | /** |
| 101 | 101 | * Método para generar un error usando una excepción de SowerPHP o terminar |
| 102 | 102 | * el script si no se está usando el framework |
| 103 | - * @param msg Mensaje del error |
|
| 103 | + * @param msg string del error |
|
| 104 | 104 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 105 | 105 | * @version 2017-08-04 |
| 106 | 106 | */ |
@@ -188,7 +188,7 @@ discard block |
||
| 188 | 188 | |
| 189 | 189 | /** |
| 190 | 190 | * Método que entrega desde cuando es válida la firma |
| 191 | - * @return validFrom_time_t |
|
| 191 | + * @return string |
|
| 192 | 192 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 193 | 193 | * @version 2015-09-22 |
| 194 | 194 | */ |
@@ -199,7 +199,7 @@ discard block |
||
| 199 | 199 | |
| 200 | 200 | /** |
| 201 | 201 | * Método que entrega hasta cuando es válida la firma |
| 202 | - * @return validTo_time_t |
|
| 202 | + * @return string |
|
| 203 | 203 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 204 | 204 | * @version 2015-09-22 |
| 205 | 205 | */ |
@@ -232,7 +232,7 @@ discard block |
||
| 232 | 232 | |
| 233 | 233 | /** |
| 234 | 234 | * Método que obtiene el módulo de la clave privada |
| 235 | - * @return Módulo en base64 |
|
| 235 | + * @return string en base64 |
|
| 236 | 236 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 237 | 237 | * @version 2014-12-07 |
| 238 | 238 | */ |
@@ -244,7 +244,7 @@ discard block |
||
| 244 | 244 | |
| 245 | 245 | /** |
| 246 | 246 | * Método que obtiene el exponente público de la clave privada |
| 247 | - * @return Exponente público en base64 |
|
| 247 | + * @return string público en base64 |
|
| 248 | 248 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 249 | 249 | * @version 2014-12-06 |
| 250 | 250 | */ |
@@ -294,9 +294,9 @@ discard block |
||
| 294 | 294 | |
| 295 | 295 | /** |
| 296 | 296 | * Método para realizar la firma de datos |
| 297 | - * @param data Datos que se desean firmar |
|
| 297 | + * @param data string que se desean firmar |
|
| 298 | 298 | * @param signature_alg Algoritmo que se utilizará para firmar (por defect SHA1) |
| 299 | - * @return Firma digital de los datos en base64 o =false si no se pudo firmar |
|
| 299 | + * @return boolean|string digital de los datos en base64 o =false si no se pudo firmar |
|
| 300 | 300 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 301 | 301 | * @version 2014-12-08 |
| 302 | 302 | */ |
@@ -311,7 +311,7 @@ discard block |
||
| 311 | 311 | |
| 312 | 312 | /** |
| 313 | 313 | * Método que verifica la firma digital de datos |
| 314 | - * @param data Datos que se desean verificar |
|
| 314 | + * @param data string que se desean verificar |
|
| 315 | 315 | * @param signature Firma digital de los datos en base64 |
| 316 | 316 | * @param pub_key Certificado digital, clave pública, de la firma |
| 317 | 317 | * @param signature_alg Algoritmo que se usó para firmar (por defect SHA1) |
@@ -334,7 +334,7 @@ discard block |
||
| 334 | 334 | * |
| 335 | 335 | * @param xml Datos XML que se desean firmar |
| 336 | 336 | * @param reference Referencia a la que hace la firma |
| 337 | - * @return XML firmado o =false si no se pudo fimar |
|
| 337 | + * @return boolean|string firmado o =false si no se pudo fimar |
|
| 338 | 338 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 339 | 339 | * @version 2017-10-22 |
| 340 | 340 | */ |
@@ -46,10 +46,10 @@ discard block |
||
| 46 | 46 | */ |
| 47 | 47 | public static function read($archivo, $separador = ';', $delimitadortexto = '"') |
| 48 | 48 | { |
| 49 | - if (($handle = fopen($archivo, 'r')) !== FALSE) { |
|
| 49 | + if (($handle = fopen($archivo, 'r'))!==FALSE) { |
|
| 50 | 50 | $data = array(); |
| 51 | 51 | $i = 0; |
| 52 | - while (($row = fgetcsv($handle, 0, $separador, $delimitadortexto)) !== FALSE) { |
|
| 52 | + while (($row = fgetcsv($handle, 0, $separador, $delimitadortexto))!==FALSE) { |
|
| 53 | 53 | $j = 0; |
| 54 | 54 | foreach ($row as &$col) { |
| 55 | 55 | $data[$i][$j++] = $col; |
@@ -77,11 +77,11 @@ discard block |
||
| 77 | 77 | header('Content-Disposition: attachment; filename='.$archivo.'.csv'); |
| 78 | 78 | header('Pragma: no-cache'); |
| 79 | 79 | header('Expires: 0'); |
| 80 | - foreach($data as &$row) { |
|
| 81 | - foreach($row as &$col) { |
|
| 80 | + foreach ($data as &$row) { |
|
| 81 | + foreach ($row as &$col) { |
|
| 82 | 82 | $col = $delimitadortexto.rtrim(str_replace('<br />', ', ', strip_tags($col, '<br>')), " \t\n\r\0\x0B,").$delimitadortexto; |
| 83 | 83 | } |
| 84 | - echo implode($separador, $row),"\r\n"; |
|
| 84 | + echo implode($separador, $row), "\r\n"; |
|
| 85 | 85 | unset($row); |
| 86 | 86 | } |
| 87 | 87 | unset($data); |
@@ -100,8 +100,8 @@ discard block |
||
| 100 | 100 | public static function save(array $data, $archivo, $separador = ';', $delimitadortexto = '"') |
| 101 | 101 | { |
| 102 | 102 | $fd = fopen($archivo, 'w'); |
| 103 | - foreach($data as &$row) { |
|
| 104 | - foreach($row as &$col) { |
|
| 103 | + foreach ($data as &$row) { |
|
| 104 | + foreach ($row as &$col) { |
|
| 105 | 105 | $col = $delimitadortexto.rtrim(str_replace('<br />', ', ', strip_tags($col, '<br>')), " \t\n\r\0\x0B,").$delimitadortexto; |
| 106 | 106 | } |
| 107 | 107 | fwrite($fd, implode($separador, $row)."\r\n"); |
@@ -174,12 +174,14 @@ |
||
| 174 | 174 | public static function get($codigo, $args = null) |
| 175 | 175 | { |
| 176 | 176 | // si no hay glosa asociada al código se entrega el mismo código |
| 177 | - if (!isset(self::$glosas[(int)$codigo])) |
|
| 178 | - return (int)$codigo; |
|
| 177 | + if (!isset(self::$glosas[(int)$codigo])) { |
|
| 178 | + return (int)$codigo; |
|
| 179 | + } |
|
| 179 | 180 | // si los argumentos no son un arreglo se obtiene arreglo a partir |
| 180 | 181 | // de los argumentos pasados a la función |
| 181 | - if (!is_array($args)) |
|
| 182 | - $args = array_slice(func_get_args(), 1); |
|
| 182 | + if (!is_array($args)) { |
|
| 183 | + $args = array_slice(func_get_args(), 1); |
|
| 184 | + } |
|
| 183 | 185 | // entregar glosa |
| 184 | 186 | return vsprintf(I18n::translate(self::$glosas[(int)$codigo], 'estados'), $args); |
| 185 | 187 | } |
@@ -68,7 +68,7 @@ |
||
| 68 | 68 | |
| 69 | 69 | /** |
| 70 | 70 | * Método que realiza la firma del DTE cedido |
| 71 | - * @param Firma objeto que representa la Firma Electrónca |
|
| 71 | + * @param Firma \sasco\LibreDTE\FirmaElectronica que representa la Firma Electrónca |
|
| 72 | 72 | * @return =true si el DTE pudo ser fimado o =false si no se pudo firmar |
| 73 | 73 | * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl) |
| 74 | 74 | * @version 2016-12-10 |