Inicializa internamente los datos de un remito para autorizar
484115
def CrearRemito(self, tipo_comprobante, punto_emision, tipo_movimiento, categoria_emisor, cuit_titular_mercaderia, cod_dom_origen,
                    tipo_receptor, categoria_receptor=None, cuit_receptor=None, cuit_depositario=None,
                    cod_dom_destino=None, cod_rem_redestinar=None, cod_remito=None, estado=None,
                    **kwargs):
        ""
        self.remito = {'tipoComprobante': tipo_comprobante, 'puntoEmision': punto_emision, 'categoriaEmisor': categoria_emisor,
                       'cuitTitularMercaderia': cuit_titular_mercaderia, 'cuitDepositario': cuit_depositario,
                       'tipoReceptor': tipo_receptor, 'categoriaReceptor': categoria_receptor, 'cuitReceptor': cuit_receptor,
                       'codDomOrigen': cod_dom_origen, 'codDomDestino': cod_dom_destino, 'tipoMovimiento': tipo_movimiento, 
                       'estado': estado, 'codRemito': cod_remito,
                       'codRemRedestinado': cod_rem_redestinar,
                       'arrayMercaderias': [], 'arrayContingencias': [],
                      }
        return True
1031222
def AnalizarLiquidacion(self, aut, liq=None, ajuste=False):
        ""
        # proceso los datos básicos de la liquidación (devuelto por consultar):
        if liq:
            self.params_out = dict(
                        pto_emision=liq.get('ptoEmision'),
                        nro_orden=liq.get('nroOrden'),
                        cuit_comprador=liq.get('cuitComprador'),
                        nro_act_comprador=liq.get('nroActComprador'),
                        nro_ing_bruto_comprador=liq.get('nroIngBrutoComprador'),
                        cod_tipo_operacion=liq.get('codTipoOperacion'),
                        es_liquidacion_propia=liq.get('esLiquidacionPropia'),
                        es_canje=liq.get('esCanje'),
                        cod_puerto=liq.get('codPuerto'),
                        des_puerto_localidad=liq.get('desPuertoLocalidad'),
                        cod_grano=liq.get('codGrano'),
                        cuit_vendedor=liq.get('cuitVendedor'),
                        nro_ing_bruto_vendedor=liq.get('nroIngBrutoVendedor'),
                        actua_corredor=liq.get('actuaCorredor'),
                        liquida_corredor=liq.get('liquidaCorredor'),
                        cuit_corredor=liq.get('cuitCorredor'),
                        comision_corredor=liq.get('comisionCorredor'),
                        nro_ing_bruto_corredor=liq.get('nroIngBrutoCorredor'),
                        fecha_precio_operacion=liq.get('fechaPrecioOperacion'),
                        precio_ref_tn=liq.get('precioRefTn'),
                        cod_grado_ref=liq.get('codGradoRef'),
                        cod_grado_ent=liq.get('codGradoEnt'),
                        factor_ent=liq.get('factorEnt'),
                        precio_flete_tn=liq.get('precioFleteTn'),
                        cont_proteico=liq.get('contProteico'),
                        alic_iva_operacion=liq.get('alicIvaOperacion'),
                        campania_ppal=liq.get('campaniaPPal'),
                        cod_localidad_procedencia=liq.get('codLocalidadProcedencia'),
                        cod_prov_procedencia=liq.get('codProvProcedencia'),
                        datos_adicionales=liq.get('datosAdicionales'),
                        peso_neto_sin_certificado=liq.get('pesoNetoSinCertificado'),
                        cod_localidad_procedencia_sin_certificado=liq.get('codLocalidadProcedenciaSinCertificado'),
                        cod_prov_procedencia_sin_certificado=liq.get('codProvProcedenciaSinCertificado'),
                        certificados=[],
                    )
            if ajuste:
                self.params_out.update(
                        # ajustes:
                        diferencia_peso_neto=liq.get('diferenciaPesoNeto'),
                        diferencia_precio_operacion=liq.get('diferenciaPrecioOperacion'),
                        cod_grado=liq.get('codGrado'),
                        val_grado=liq.get('valGrado'),
                        factor=liq.get('factor'),
                        diferencia_precio_flete_tn=liq.get('diferenciaPrecioFleteTn'),
                        concepto_importe_iva_0=liq.get('conceptoImporteIva0'),
                        importe_ajustar_iva_0=liq.get('importeAjustarIva0'),
                        concepto_importe_iva_105=liq.get('conceptoImporteIva105'),
                        importe_ajustar_iva_105=liq.get('importeAjustarIva105'),
                        concepto_importe_iva_21=liq.get('conceptoImporteIva21'),
                        importe_ajustar_iva_21=liq.get('importeAjustarIva21'),
                    )
                # analizar detalle de importes ajustados discriminados por alicuota
                # (por compatibildiad y consistencia se usan los mismos campos)
                for it in liq.get("importes", liq.get("importe")):
                    # en ajustes LSG no se agrupan los importes en un subtipo...
                    if 'importeReturn' in it:
                        it = it['importeReturn'][0]     # TODO: revisar SOAP
                    tasa = "iva_%s" % str(it['alicuota']).replace(".", "").strip()
                    self.params_out["concepto_importe_%s" % tasa] = it['concepto']
                    self.params_out["importe_ajustar_%s" % tasa] = it['importe']
                    self.params_out["iva_calculado_%s" % tasa] = it['ivaCalculado']
            if 'certificados' in liq:
                for c in liq['certificados']:
                    cert = c['certificado']
                    self.params_out['certificados'].append(dict(
                        tipo_certificado_deposito=cert['tipoCertificadoDeposito'],
                        nro_certificado_deposito=cert['nroCertificadoDeposito'],
                        peso_neto=cert['pesoNeto'],
                        cod_localidad_procedencia=cert['codLocalidadProcedencia'],
                        cod_prov_procedencia=cert['codProvProcedencia'],
                        campania=cert['campania'],
                        fecha_cierre=cert['fechaCierre'],
                    ))

        self.params_out['errores'] = self.errores
            
        # proceso la respuesta de autorizar, ajustar (y consultar):
        if aut:
            self.TotalDeduccion = aut.get('totalDeduccion')
            self.TotalRetencion = aut.get('totalRetencion')
            self.TotalRetencionAfip = aut.get('totalRetencionAfip')
            self.TotalOtrasRetenciones = aut.get('totalOtrasRetenciones')
            self.TotalNetoAPagar = aut.get('totalNetoAPagar')
            self.TotalIvaRg4310_18 = aut.get('totalIvaRg4310_18')
            self.TotalPagoSegunCondicion = aut.get('totalPagoSegunCondicion')
            self.COE = str(aut.get('coe', ''))
            self.COEAjustado = aut.get('coeAjustado')
            self.Estado = aut.get('estado', '')
            self.NroContrato = aut.get('numeroContrato', '')

            # actualizo parámetros de salida:
            self.params_out['coe'] = self.COE
            self.params_out['coe_ajustado'] = self.COEAjustado
            self.params_out['estado'] = self.Estado
            self.params_out['total_deduccion'] = self.TotalDeduccion
            self.params_out['total_retencion'] = self.TotalRetencion
            self.params_out['total_retencion_afip'] = self.TotalRetencionAfip
            self.params_out['total_otras_retenciones'] = self.TotalOtrasRetenciones
            self.params_out['total_neto_a_pagar'] = self.TotalNetoAPagar
            self.params_out['total_iva_rg_4310_18'] = self.TotalIvaRg4310_18
            self.params_out['total_pago_segun_condicion'] = self.TotalPagoSegunCondicion

            # datos adicionales:
            self.NroOrden = self.params_out['nro_orden'] = aut.get('nroOrden')
            self.params_out['cod_tipo_ajuste'] = aut.get('codTipoAjuste')
            fecha = aut.get('fechaLiquidacion')
            if fecha:
                fecha = str(fecha)
            self.params_out['fecha_liquidacion'] = fecha
            self.params_out['importe_iva'] = aut.get('importeIva')
            self.params_out['nro_op_comercial'] = aut.get('nroOpComercial')
            self.params_out['operacion_con_iva'] = aut.get('operacionConIva')
            self.params_out['precio_operacion'] = aut.get('precioOperacion')
            self.params_out['total_peso_neto'] = aut.get('totalPesoNeto')
            self.params_out['subtotal'] = aut.get('subTotal')
            # LSG (especificos):
            self.params_out['total_deducciones'] = aut.get('totalDeducciones')
            if 'todalPercepciones' in aut:
                # error de tipeo en el WSDL de AFIP...
                self.params_out['total_percepciones'] = aut.get('todalPercepciones')
            else:
                self.params_out['total_percepciones'] = aut.get('totalPercepciones')
            # sub estructuras:
            self.params_out['retenciones'] = []
            self.params_out['deducciones'] = []
            self.params_out['percepciones'] = []
            for retret in aut.get("retenciones", []):
                retret = retret['retencionReturn']
                self.params_out['retenciones'].append({
                    'importe_retencion': retret['importeRetencion'],
                    'alicuota': retret['retencion'].get('alicuota'),
                    'base_calculo': retret['retencion'].get('baseCalculo'),
                    'codigo_concepto': retret['retencion'].get('codigoConcepto'),
                    'detalle_aclaratorio': (retret['retencion'].get('detalleAclaratorio') or "").replace("\n", ""),
                    'importe_certificado_retencion': retret['retencion'].get('importeCertificadoRetencion'),
                    'nro_certificado_retencion': retret['retencion'].get('nroCertificadoRetencion'),
                    'fecha_certificado_retencion': retret['retencion'].get('fechaCertificadoRetencion'),
                    })
            for dedret in aut.get("deducciones", []):
                dedret = dedret['deduccionReturn']
                self.params_out['deducciones'].append({
                    'importe_deduccion': dedret['importeDeduccion'],
                    'importe_iva': dedret.get('importeIva'),
                     'alicuota': dedret['deduccion'].get('alicuotaIva'),
                     'base_calculo': dedret['deduccion'].get('baseCalculo'),
                     'codigo_concepto': dedret['deduccion'].get('codigoConcepto'),
                     'detalle_aclaratorio': dedret['deduccion'].get('detalleAclaratorio', "").replace("\n", ""),
                     'dias_almacenaje': dedret['deduccion'].get('diasAlmacenaje'),
                     'precio_pkg_diario': dedret['deduccion'].get('precioPKGdiario'),
                     'comision_gastos_adm': dedret['deduccion'].get('comisionGastosAdm'),
                    })
            for perret in aut.get("percepciones", []):
                perret = perret.get('percepcionReturn', perret)
                self.params_out['percepciones'].append({
                     'importe_final': perret['percepcion']['importeFinal'],
                     'alicuota': perret['percepcion'].get('alicuota'),
                     'base_calculo': perret['percepcion'].get('baseCalculo'),
                     'descripcion': perret['percepcion'].get('descripcion', "").replace("\n", ""),
                    })
606231
protected function _initQuery()
    {
        //pusty where - inicjalizacja
        if ($this->_query->getQueryCompile()->where == '') {
            return $this->_query->getQueryCompile()->where = 'WHERE ';
        }
        //dodawanie operatora logicznego
        $this->_query->getQueryCompile()->where .= ' ' . $this->_logic . ' ';
    }
1252671
def ConsultarConstanciaCTGPDF(self, numero_ctg=None, 
                                        archivo="constancia.pdf"):
        ""
        ret = self.client.consultarConstanciaCTGPDF(request=dict(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuitRepresentado': self.Cuit, },
                        ctg=numero_ctg, 
                        ))['response']
        self.__analizar_errores(ret)
        datos = base64.b64decode(ret.get('archivo', ""))
        f = open(archivo, "wb")
        f.write(datos)
        f.close()
        return True
874827
def AutorizarCertificacion(self):
        ""
        
        # limpio los elementos que no correspondan por estar vacios:
        for k1 in ('primaria', 'retiroTransferencia'):
            dic = self.certificacion.get(k1)
            if not dic: continue
            for k2 in ('ctg', 'detalleMuestraAnalisis', 'certificadoDeposito'):
                if k2 in dic and not dic[k2]:
                    del dic[k2]
            
        # llamo al webservice:
        ret = self.client.cgAutorizar(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        **self.certificacion
                        )

        # analizo la respusta
        ret = ret['oReturn']
        self.__analizar_errores(ret)
        self.AnalizarAutorizarCertificadoResp(ret)
        return True
1020969
public function init()
    {
        // Place parameters in static storage for common use

        if (! isset($this->mode)) {
            //chosen default mode
            $this->mode = 0;
        }

        $this->temp = $this->b / $this->a;
        $this->es = 1.0 - pow( $this->temp, 2 );

        $this->e = sqrt( $this->es );

        $this->e0 = Common::e0fn( $this->es );
        $this->e1 = Common::e1fn( $this->es );
        $this->e2 = Common::e2fn( $this->es );
        $this->e3 = Common::e3fn( $this->es );

        $this->sinphi = sin( $this->lat1 );
        $this->cosphi = cos( $this->lat1 );

        $this->ms1 = Common::msfnz( $this->e, $this->sinphi, $this->cosphi );
        $this->ml1 = Common::mlfn( $this->e0, $this->e1, $this->e2, $this->e3, $this->lat1 );

        // format B

        if ($this->mode != 0) {
            if (abs($this->lat1 + $this->lat2) < Common::EPSLN) {
                Proj4php::reportError( "eqdc:Init:EqualLatitudes" );
                //return(81);
            }

            $this->sinphi = sin($this->lat2);
            $this->cosphi = cos($this->lat2);

            $this->ms2 = Common::msfnz( $this->e, $this->sinphi, $this->cosphi );
            $this->ml2 = Common::mlfn( $this->e0, $this->e1, $this->e2, $this->e3, $this->lat2 );

            if (abs($this->lat1 - $this->lat2) >= Common::EPSLN) {
                $this->ns = ($this->ms1 - $this->ms2) / ($this->ml2 - $this->ml1);
            } else {
                $this->ns = $this->sinphi;
            }
        } else {
            $this->ns = $this->sinphi;
        }

        $this->g = $this->ml1 + $this->ms1 / $this->ns;
        $this->ml0 = Common::mlfn( $this->e0, $this->e1, $this->e2, $this->e3, $this->lat0 );
        $this->rh = $this->a * ($this->g - $this->ml0);
    }
790097
def AjustarLiquidacionContrato(self):
        ""
        
        # limpiar arrays no enviados:
        if not self.ajuste['ajusteBase']['certificados']:
            del self.ajuste['ajusteBase']['certificados']
        for k1 in ('ajusteCredito', 'ajusteDebito'):
            for k2 in ('retenciones', 'deducciones'):
                if not self.ajuste[k1][k2]:
                    del self.ajuste[k1][k2]

        ret = self.client.liquidacionAjustarContrato(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        **self.ajuste
                        )
        ret = ret['ajusteContratoReturn']
        self.__analizar_errores(ret)
        if 'ajusteContrato' in ret:
            aut = ret['ajusteContrato']
            self.AnalizarAjuste(aut)
        return True
244689
def analisar(retorno):
        
        resposta = analisar_retorno(forcar_unicode(retorno),
                funcao='AtivarSAT',
                classe_resposta=RespostaAtivarSAT,
                campos=(
                        ('numeroSessao', int),
                        ('EEEEE', unicode),
                        ('mensagem', unicode),
                        ('cod', unicode),
                        ('mensagemSEFAZ', unicode),
                        ('CSR', unicode),
                    ),
                campos_alternativos=[
                        # se a ativação falhar espera-se o padrão de campos
                        # no retorno...
                        RespostaSAT.CAMPOS,
                    ]
            )
        if resposta.EEEEE not in (
                ATIVADO_CORRETAMENTE,
                CSR_ICPBRASIL_CRIADO_SUCESSO,):
            raise ExcecaoRespostaSAT(resposta)
        return resposta
1112496
def _build_index(self):
        """"""

        datasets_index = {}
        distributions_index = {}
        fields_index = {}

        # recorre todos los datasets
        for dataset_index, dataset in enumerate(self.datasets):
            if "identifier" in dataset:
                datasets_index[dataset["identifier"]] = {
                    "dataset_index": dataset_index
                }
                # recorre las distribuciones del dataset
                for distribution_index, distribution in enumerate(
                        dataset.get("distribution", [])):
                    if "identifier" in distribution:
                        distributions_index[distribution["identifier"]] = {
                            "distribution_index": distribution_index,
                            "dataset_identifier": dataset["identifier"]
                        }
                        # recorre los fields de la distribucion
                        for field_index, field in enumerate(
                                distribution.get("field", [])):
                            if "id" in field:
                                fields_index[field["id"]] = {
                                    "field_index":
                                        field_index,
                                    "dataset_identifier":
                                        dataset["identifier"],
                                    "distribution_identifier":
                                        distribution["identifier"]
                                }

        setattr(self, "_distributions_index", distributions_index)
        setattr(self, "_datasets_index", datasets_index)
        setattr(self, "_fields_index", fields_index)
1234241
function(nombre, controlador, tags, opciones) {
    // Se establecen los objetos comunes a todos los dispositivos
    this.info = Object();
    this.info.nombre = nombre;
    this.conectado = false;
    this.noErrores = true;
    this.cola = new objCola();
    this.funciones = new funciones(this);
    this.log = new log(this.info.nombre);
    this.tags = tags;
    this.tiposMB = {
        BYTE: {bits: 8, funcion: 'Int8', endian: false},
        INT: {bits: 16, funcion: 'Int16', endian: true},
        UINT: {bits: 16, funcion: 'UInt16', endian: true},
        DINT: {bits: 32, funcion: 'Int32', endian: true},
        UDINT: {bits: 32, funcion: 'UInt32', endian: true}, 
        FLOAT: {bits: 32, funcion: 'Float', endian: true},
        DOUBLE: {bits: 64, funcion: 'Double', endian: true}
    }
    new require('./drivers/'+controlador+'/driver') (this); // Se integran las funciones del driver con el dispositivo actual
    utilidades.mezclarObjetos(opciones, this.info); // Se establecen los objetos particulares de cada dispositivo
    
    this.conectarRecursiva(); // Se conecta el dispositivo
    
    
    
    
    /*
     * Se establecen los eventos o Listeners que serán ejecutados en TODOS los dispositivos, sean del driver que sea
     */
    utilidades.eventos(this, {
        conexion: function() {
            this.conectado = true;
            this.comenzarCiclo();
            this.comprobarConexion();
            
            this.log.info("Conectado");
            this.emit("conectado");
        },
        desconexion: function() {
            if (this.conectado) {
                this.conectado = false;
               
                this.cola.vaciar();
                
                this.log.error("Desconectado");
                this.emit("desconectado");
                this.conectarRecursiva();
            }
        },
        datosRecibidos: function(datos) {
            var buffer = utilidades.extractorBuffer(datos, this.estructuraCabecera, this.tiposMB, this.bytesPorPosicion, this.endian, this.noErrores);   
            if (typeof this.cola.operaciones[buffer.operacion] === 'undefined') {
                this.cola.prepararCola();
                return false;
            }
            
            var numOperacion = buffer.operacion;
            var operacion = this.cola.operaciones[numOperacion];
            var numPaquete = operacion.paquete;
            var paquete = this.cola.paquetes[numPaquete];

            if ((paquete.operaciones.lastIndexOf(numOperacion) === -1) || (typeof this.funciones[paquete.funcion+"Callback"] === 'undefined')) {
                this.cola.prepararCola();
                return false;
            }
            
            var informacion = this.funciones[paquete.funcion+"Callback"](buffer, numOperacion, operacion, numPaquete, paquete);            
            if (paquete.operaciones.length == 1) {
                if (this.cola.quitarPaquete(numPaquete)) {
                    if (typeof paquete.callback == 'function') {
                        if (typeof informacion == 'object') {
                            var array = utilidades.obj2arr(informacion);
                        }

                        paquete.callback.apply(this, array);
                    }
                }
            } else {
                this.cola.quitarOperacion(numOperacion);
            }
            
            this.cola.prepararCola();
            return true;
        },
        error: function() {
            if (this.conectado) {
                this.log.error("Se ha producido un error. Reconectamos el dispositivo...");
                this.emit("desconexion");
            }
        }
    });

    // Alias para los eventos
    this.on("conectado", function() {
        this.emit("connected");
    });
    this.on("desconectado", function() {
        this.emit("disconnected");
    });
    
    
    events.call(this); // Función de llamada a los eventos personalizados
}
1005491
def AnalizarAutorizarCertificadoResp(self, ret):
        ""
        aut = ret.get('autorizacion')
        if aut:
            self.PtoEmision = aut['ptoEmision']
            self.NroOrden = aut['nroOrden']
            self.FechaCertificacion = str(aut.get('fechaCertificacion', ""))
            self.COE = str(aut['coe'])
            self.Estado = aut['estado']
            # actualizo parámetros de salida:
            self.params_out['coe'] = self.COE
            self.params_out['estado'] = self.Estado
            self.params_out['nro_orden'] = self.NroOrden
            self.params_out['fecha_certificacion'] = self.FechaCertificacion.replace("-", "")
            if "planta" in aut:
                p = aut.get("planta")
                self.params_out['nro_planta'] = p.get("nroPlanta")
                self.params_out['cuit_titular_planta'] = p.get("cuitTitularPlanta")
                self.params_out['razon_social_titular_planta'] = p.get("razonSocialTitularPlanta")
            # otros campos devueltos (opcionales)
            p = aut.get('pesosResumen', {})
            self.params_out['peso_bruto_certificado'] = p.get("pesoBrutoCertificado")
            self.params_out['peso_merma_secado'] = p.get("pesoMermaSecado")
            self.params_out['peso_merma_volatil'] = p.get("pesoMermaVolatil")
            self.params_out['peso_merma_zarandeo'] = p.get("pesoMermaZarandeo")
            self.params_out['peso_neto_certificado'] = p.get("pesoNetoCertificado")
            p = aut.get('serviciosResumen', {})
            self.params_out['importe_iva'] = p.get("importeIVA")
            self.params_out['servicio_gastos_generales'] = p.get("servicioGastosGenerales")
            self.params_out['servicio_otros'] = p.get("servicioOtros")
            self.params_out['servicio_total'] = p.get("servicioTotal")
            self.params_out['servicio_zarandeo'] = p.get("servicioZarandeo")
        # datos devueltos según el tipo de certificacion (consultas):
        cab = ret.get('cabecera')
        if cab:
            self.params_out['pto_emision'] = cab.get('ptoEmision')
            self.params_out['nro_orden'] = cab.get('nroOrden')
            self.params_out['tipo_certificado'] = cab.get('tipoCertificado')
            self.params_out['nro_planta'] = cab.get('nroPlanta')
            self.params_out['nro_ing_bruto_depositario'] = cab.get('nroIngBrutoDepositario')
            self.params_out['titular_grano'] = cab.get('titularGrano')
            self.params_out['cuit_depositante'] = cab.get('cuitDepositante')
            self.params_out['nro_ing_bruto_depositante'] = cab.get('nroIngBrutoDepositante')
            self.params_out['cuit_corredor'] = cab.get('cuitCorredor')
            self.params_out['cod_grano'] = cab.get('codGrano')
            self.params_out['campania'] = cab.get('campania')
            self.params_out['datos_adicionales'] = cab.get('datosAdicionales')
        pri = ret.get('primaria')
        if pri:
            self.params_out['nro_act_depositario'] = pri.get('nroActDepositario')
            self.params_out['descripcion_tipo_grano'] = pri.get('descripcionTipoGrano')
            self.params_out['monto_almacenaje'] = pri.get('montoAlmacenaje')
            self.params_out['monto_acarreo'] = pri.get('montoAcarreo')
            self.params_out['monto_gastos_generales'] = pri.get('montoGastosGenerales')
            self.params_out['monto_zarandeo'] = pri.get('montoZarandeo')
            self.params_out['porcentaje_secado_de'] = pri.get('porcentajeSecadoDe')
            self.params_out['porcentaje_secado_a'] = pri.get('porcentajeSecadoA')
            self.params_out['monto_secado'] = pri.get('montoSecado')
            self.params_out['monto_por_cada_punto_exceso'] = pri.get('montoPorCadaPuntoExceso')
            self.params_out['monto_otros'] = pri.get('montoOtros')
            self.params_out['porcentaje_merma_volatil'] = pri.get('porcentajeMermaVolatil')
            self.params_out['porcentaje_merma_secado'] = pri.get('porcentajeMermaSecado')
            self.params_out['peso_neto_merma_secado'] = pri.get('pesoNetoMermaSecado')
            self.params_out['porcentaje_merma_zarandeo'] = pri.get('pesoNetoMermaZarandeo')
            self.params_out['peso_neto_certificado'] = pri.get('pesoNetoCertificado')
            self.params_out['servicios_secado'] = pri.get('serviciosSecado')
            self.params_out['servicios_zarandeo'] = pri.get('serviciosZarandeo')
            self.params_out['servicios_otros'] = pri.get('serviciosOtros')
            self.params_out['servicios_forma_de_pago'] = pri.get('serviciosFormaDePago')
            # otros campos no documentados:
            self.params_out['servicios_conceptos_no_gravados'] = pri.get("serviciosConceptosNoGravados")
            self.params_out['servicios_percepciones_iva'] = pri.get("serviciosPercepcionesIVA")
            self.params_out['servicios_otras_percepciones'] = pri.get("serviciosOtrasPercepciones")            
            # sub estructuras:
            self.params_out['ctgs'] = []
            self.params_out['det_muestra_analisis'] = []
            for ctg in pri.get("ctg", []):
                self.params_out['ctgs'].append({
                    'nro_ctg': ctg.get('nroCTG'),
                    'nro_carta_porte': ctg.get('nroCartaDePorte'),
                    'peso_neto_confirmado_definitivo': ctg.get('pesoNetoConfirmadoDefinitivo'),
                    'porcentaje_secado_humedad': ctg.get('porcentajeSecadoHumedad'),
                    'importe_secado': ctg.get('importeSecado'),
                    'peso_neto_merma_secado': ctg.get('pesoNetoMermaSecado'),
                    'importe_zarandeo': ctg.get('importeZarandeo'),
                    'peso_neto_merma_zarandeo': ctg.get('pesoNetoMermaZarandeo'),
                    'tarifa_zarandeo': ctg.get('tarifaZarandeo'),
                    })
            self.params_out['calidad'] = []
            for cal in [pri.get("calidad", {})]:
                self.params_out['calidad'].append({
                    'analisis_muestra': cal.get('analisisMuestra'),
                    'nro_boletin': cal.get('nroBoletin'),
                    'nro_act_depositario': cal.get('nroActDepositario'),
                    'cod_grado': cal.get('codGrado'),
                    'valor_grado': cal.get('valorGrado'),
                    'valor_contenido_proteico': cal.get('valorContProteico'),
                    'valor_factor': cal.get('valorFactor')
                    })
                for det in cal.get("detalleMuestraAnalisis", []):
                    self.params_out['det_muestra_analisis'].append({
                        'descripcion_rubro': det.get('descripcionRubro'),
                        'tipo_rubro': det.get('tipoRubro'),
                        'porcentaje': det.get('porcentaje'),
                        'valor': det.get('valor'),
                        })
        rt = ret.get('retiroTransferencia')
        if rt:
            self.params_out['nro_act_depositario'] = rt.get('nroActDepositario')
            self.params_out['cuit_receptor'] = rt.get('cuitReceptor')
            self.params_out['nro_carta_porte_a_utilizar'] = rt.get('nroCartaPorteAUtilizar')
            # sub estructuras:
            self.params_out['certificados'] = []
            cert = rt.get("certificadoDeposito")
            if cert:
                self.params_out['certificados'].append({
                    'coe_certificado_deposito': cert.get('coeCertificadoDeposito'),
                    'peso_neto': cert.get('pesoNeto'),
                    })
        pre = ret.get('preexistente')
        if pre:
            self.params_out['nro_planta'] = pre.get('nroPlanta')
            self.params_out['tipo_certificado_deposito_preexistente'] = pre.get('tipoCertificadoDepositoPreexistente')
            self.params_out['nro_certificado_deposito_preexistente'] = pre.get('nroCertificadoDepositoPreexistente')
            self.params_out['cac_certificado_deposito_preexistente'] = pre.get('cacCertificadoDepositoPreexistente')
            self.params_out['fecha_emision_certificado_deposito_preexistente'] = pre.get('fechaEmisionCertificadoDepositoPreexistente')
            self.params_out['peso_neto'] = pre.get('pesoNeto')
        
        self.params_out['errores'] = self.errores
170312
function initCompleteTransaction($amount, $buyOrder, $sessionId, $cardExpirationDate, $cvv, $cardNumber) {

        try {

            $wsCompleteInitTransactionInput = new wsCompleteInitTransactionInput();
            $completeCardDetail = new completeCardDetail();
            $wsCompleteTransactionDetail = new wsCompleteTransactionDetail();

            /** (Obligatorio) Indica el tipo de transacción, su valor debe ser siempre TR_COMPLETA_WS */
            $wsCompleteInitTransactionInput->transactionType = 'TR_COMPLETA_WS';
            $wsCompleteInitTransactionInput->sessionId = $sessionId;

            $wsCompleteTransactionDetail->amount = $amount;
            $wsCompleteTransactionDetail->buyOrder = $buyOrder;
            $wsCompleteTransactionDetail->commerceCode = $this->config->getCommerceCode();

            $completeCardDetail->cardExpirationDate = $cardExpirationDate;
            $completeCardDetail->cvv = $cvv;
            $completeCardDetail->cardNumber = $cardNumber;

            /** (Obligatorio) Objeto del tipo wsTransactionDetail que contiene información asociada a la tarjeta de crédito */
            $wsCompleteInitTransactionInput->cardDetail = $completeCardDetail; // cardDetails

            /** (Obligatorio) Lista de objetos del tipo wsTransactionDetail, el cual contiene datos de la transacción. Máxima cantidad de repeticiones es de 1 para este tipo de transacción */
            $wsCompleteInitTransactionInput->transactionDetails = $wsCompleteTransactionDetail; // wsTransactionDetail

            $initCompleteTransactionResponse = $this->_initCompleteTransaction(
                    array("wsCompleteInitTransactionInput" => $wsCompleteInitTransactionInput)
            );

            $xmlResponse = $this->soapClient->__getLastResponse();
            $soapValidation = new SoapValidation($xmlResponse, $this->config->getWebpayCert());
            $validationResult = $soapValidation->getValidationResult();

            if ($validationResult === TRUE) {

                $wsCompleteInitTransactionOutput = $initCompleteTransactionResponse->return;
                return $wsCompleteInitTransactionOutput;
            } else {

                $error["error"] = "Error validando conexi&oacute;n a Webpay (Verificar que la informaci&oacute;n del certificado sea correcta)";
                $error["detail"] = "No se pudo completar la conexi&oacute;n con Webpay";
            }
        } catch (Exception $e) {

            $error["error"] = "Error conectando a Webpay (Verificar que la informaci&oacute;n del certificado sea correcta)";

            $replaceArray = array('<!--' => '', '-->' => '');
            $error["detail"] = str_replace(array_keys($replaceArray), array_values($replaceArray), $e->getMessage());
        }

        return $error;
    }
1075514
public function init()
    {

        //adres
        $this->addElement((new Element\Text('address'))
            ->setLabel('form.mail.server.address.label'));

        //ssl
        $this->addElement((new Element\Select('ssl'))
            ->setLabel('form.mail.server.ssl.label')
            ->setRequired()
            ->addValidator(new \Mmi\Validator\NotEmpty)
            ->setMultioptions(['plain' => 'plain', 'tls' => 'tls', 'ssl' => 'ssl']));

        //port
        $this->addElement((new Element\Text('port'))
            ->setLabel('form.mail.server.port.label')
            ->setRequired()
            ->addValidator(new \Mmi\Validator\Integer([true]))
            ->setValue(25)
            ->setDescription('Plain: 25, SSL: 465, TLS: 587'));

        //użytkownik
        $this->addElement((new Element\Text('username'))
            ->setLabel('form.mail.server.username.label'));

        //hasło
        $this->addElement((new Element\Text('password'))
            ->setLabel('form.mail.server.password.label'));

        //od
        $this->addElement((new Element\Text('from'))
            ->setLabel('form.mail.server.from.label'));

        //submit
        $this->addElement((new Element\Submit('submit'))
            ->setLabel('form.mail.server.submit.label'));
    }
758562
def GenerarRemito(self, id_req, archivo="qr.png"):
        ""
        if not self.remito['arrayContingencias']:
            del self.remito['arrayContingencias']
        response = self.client.generarRemito(
                                authRequest={'token': self.Token, 'sign': self.Sign, 'cuitRepresentada': self.Cuit},
                                idReq=id_req, remito=self.remito) 
        ret = response.get("generarRemitoReturn")
        if ret:
            self.__analizar_errores(ret)
            self.__analizar_observaciones(ret)
            self.__analizar_evento(ret)
            self.AnalizarRemito(ret, archivo)
        return bool(self.CodRemito)
1355144
def CTGsPendientesResolucion(self):
        ""
        ret = self.client.CTGsPendientesResolucion(request=dict(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuitRepresentado': self.Cuit, },
                            ))['response']
        self.__analizar_errores(ret)
        if ret:
            self.DatosCTG = ret
            return True
        else:
            self.DatosCTG = {}
        return False
1022052
public function init()
    {
        $libPhoneNumber = PhoneNumberUtil::getInstance();
        $optionsList    = [];

        foreach ($libPhoneNumber->getSupportedRegions() as $code) {
            $fullTextCountry = \Locale::getDisplayRegion('en_' . $code, 'en');
            $optionsList[$code] = $fullTextCountry;
        }

        asort($optionsList);

        $this->setValueOptions($optionsList);
    }
163095
def RechazarCTG(self, carta_porte, ctg, motivo):
        ""
        response = self.client.rechazarCTG(request=dict(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuitRepresentado': self.Cuit, },
                        datosRechazarCTG={
                            'cartaPorte': carta_porte,
                            'ctg': ctg, 'motivoRechazo': motivo,
                            }))['response']
        datos = response.get('datosResponse')
        self.__analizar_errores(response)
        if datos:
            self.CartaPorte = str(datos['cartaPorte'])
            self.NumeroCTG = str(datos['CTG'])
            self.FechaHora = str(datos['fechaHora'])
            self.CodigoOperacion = str(datos['codigoOperacion'])