Obtener el código y descripción para tipos de corte de carne
18387
def ConsultarTiposCarne(self, cod_grupo_carne=1, sep="||"):
        ""
        ret = self.client.consultarTiposCarne(
                            authRequest={
                                'token': self.Token, 'sign': self.Sign,
                                'cuitRepresentada': self.Cuit, },
                            codGrupoCarne=cod_grupo_carne,
                            )['consultarTiposCarneReturn']
        self.__analizar_errores(ret)
        array = ret.get('arrayTiposCarne', [])
        lista = [it['codigoDescripcionString'] for it in array]
        return [(u"%s {codigo} %s {descripcion} %s" % (sep, sep, sep)).format(**it) if sep else it for it in lista]
1174671
def AgregarRetencion(self, cod_retencion, descripcion, importe, **kwargs):
        ""
        ret = dict(codRetencion=cod_retencion, descripcion=descripcion, importe=importe)
        self.solicitud['retencion'].append(ret)
        return True
665256
def ConsultarTiposEstado(self, sep="||"):
        ""
        ret = self.client.consultarTiposEstado(
                            authRequest={
                                'token': self.Token, 'sign': self.Sign,
                                'cuitRepresentada': self.Cuit, },
                                )['consultarTiposEstadoReturn']
        self.__analizar_errores(ret)
        array = ret.get('arrayTiposEstado', [])
        lista = [it['codigoDescripcionString'] for it in array]
        return [(u"%s {codigo} %s {descripcion} %s" % (sep, sep, sep)).format(**it) if sep else it for it in lista]
874939
def BuscarCTG(self, tipo_certificado="P", cuit_depositante=None,
                        nro_planta=None, cod_grano=2, campania=1314, 
                        nro_ctg=None, tipo_ctg=None, nro_carta_porte=None,
                        fecha_confirmacion_ctg_des=None,
                        fecha_confirmacion_ctg_has=None,
                 ):
        ""
        ret = self.client.cgBuscarCtg(
                    auth={
                        'token': self.Token, 'sign': self.Sign,
                        'cuit': self.Cuit, },
                    tipoCertificado=tipo_certificado,
                    cuitDepositante=cuit_depositante or self.Cuit,
                    nroPlanta=nro_planta,
                    codGrano=cod_grano, campania=campania,
                    nroCtg=nro_ctg, tipoCtg=tipo_ctg,
                    nroCartaPorte=nro_carta_porte,
                    fechaConfirmacionCtgDes=fecha_confirmacion_ctg_des,
                    fechaConfirmacionCtgHas=fecha_confirmacion_ctg_has,
                        )['oReturn']
        self.__analizar_errores(ret)
        array = ret.get('ctg', [])
        self.Excepcion = self.Traceback = ""
        self.params_out['ctgs'] = []
        for ctg in array:
            self.params_out['ctgs'].append({
                'campania': ctg.get('campania'),
                'nro_planta': ctg.get('nroPlanta'),
                'nro_ctg': ctg.get('nroCtg'),
                'tipo_ctg': ctg.get('tipoCtg'),
                'nro_carta_porte': ctg.get('nroCartaPorte'),
                'kilos_confirmados': ctg.get('kilosConfirmados'),
                'fecha_confirmacion_ctg': ctg.get('fechaConfirmacionCtg'),
                'cod_grano': ctg.get('codGrano'),
                'cuit_remitente_comercial': ctg.get('cuitRemitenteComercial'),
                'cuit_liquida': ctg.get('cuitLiquida'),
                'cuit_certifica': ctg.get('cuitCertifica'),
                })
        return True
1177701
def ConsultarOperaciones(self, sep="||"):
        ""
        ret = self.client.consultarOperaciones(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                            )['respuesta']
        self.__analizar_errores(ret)
        array = ret.get('operacion', []) + ret.get('operacionPorcina', []) 
        if sep is None:
            return dict([(it['codigo'], it['descripcion']) for it in array])
        else:
            return [("%s %%s %s %%s %s" % (sep, sep, sep)) %
                    (it['codigo'], it['descripcion']) for it in array]
464878
def CargarFormatoPDF(self, archivo="liquidacion_form_c1116b_wslpg.csv"):
        ""

        # si no encuentro archivo, lo busco en el directorio predeterminado:
        if not os.path.exists(archivo):
            archivo = os.path.join(self.InstallDir, "plantillas", os.path.basename(archivo))

        if DEBUG: print "abriendo archivo ", archivo
        # inicializo la lista de los elementos:
        self.elements = []
        for lno, linea in enumerate(open(archivo.encode('latin1')).readlines()):
            if DEBUG: print "procesando linea ", lno, linea
            args = []
            for i,v in enumerate(linea.split(";")):
                if not v.startswith("'"): 
                    v = v.replace(",",".")
                else:
                    v = v#.decode('latin1')
                if v.strip()=='':
                    v = None
                else:
                    v = eval(v.strip())
                args.append(v)

            # corrijo path relativo para las imágenes:
            if args[1] == 'I':
                if not os.path.exists(args[14]):
                    args[14] = os.path.join(self.InstallDir, "plantillas", os.path.basename(args[14]))
                if DEBUG: print "NUEVO PATH:", args[14]          

            self.AgregarCampoPDF(*args)

        self.AgregarCampoPDF("anulado", 'T', 150, 250, 0, 0, 
              size=70, rotate=45, foreground=0x808080, 
              priority=-1)

        if HOMO:
            self.AgregarCampoPDF("homo", 'T', 100, 250, 0, 0,
                              size=70, rotate=45, foreground=0x808080, 
                              priority=-1)

        
        # cargo los elementos en la plantilla
        self.template.load_elements(self.elements)
        
        return True
577514
def AgregarCampoPDF(self, nombre, tipo, x1, y1, x2, y2, 
                           font="Arial", size=12,
                           bold=False, italic=False, underline=False, 
                           foreground= 0x000000, background=0xFFFFFF,
                           align="L", text="", priority=0, **kwargs):
        ""
        # convierto colores de string (en hexadecimal)
        if isinstance(foreground, basestring): foreground = int(foreground, 16)
        if isinstance(background, basestring): background = int(background, 16)
        if isinstance(text, unicode): text = text.encode("latin1")
        field = {
                'name': nombre, 
                'type': tipo, 
                'x1': x1, 'y1': y1, 'x2': x2, 'y2': y2, 
                'font': font, 'size': size,
                'bold': bold, 'italic': italic, 'underline': underline, 
                'foreground': foreground, 'background': background,
                'align': align, 'text': text, 'priority': priority}
        field.update(kwargs)
        self.elements.append(field)
        return True
837027
def ConsultarCodigoGradoReferencia(self, sep="||"):
        ""
        ret = self.client.codigoGradoReferenciaConsultar(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                            )['gradoRefReturn']
        self.__analizar_errores(ret)
        array = ret.get('gradosRef', [])
        if sep is None:
            return dict([(it['codigoDescripcion']['codigo'], 
                          it['codigoDescripcion']['descripcion']) 
                           for it in array])
        else:
            return [("%s %%s %s %%s %s" % (sep, sep, sep)) %
                    (it['codigoDescripcion']['codigo'], 
                     it['codigoDescripcion']['descripcion']) 
               for it in array]
1232142
function queryShare($token, $buyOrder, $shareNumber) {

        try {

            $queryShare = new queryShare();

            $queryShare->token = $token;
            $queryShare->buyOrder = $buyOrder;
            $queryShare->shareNumber = $shareNumber;

            $queryShareResponse = $this->_queryShare($queryShare);

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

            if ($validationResult === TRUE) {

                $wsCompleteQuerySharesOutput = $queryShareResponse->return;
                return $wsCompleteQuerySharesOutput;

            } 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;
    }
728125
function(input) {

			// Nos deshacemos del caracter final `:` para su validación

			var size = (input = _toString(input)).length;

			input = (input.substr(size-1, 1) === ':') ? input.substr(0, input.length-1) : input;

			// Si el protocolo es correcto añadimos `:` al final del mismo
			// si no lo es devolvemos una cadena vacía

			return Public.normalize.regex_rfc3986_schema.test((input = input.toLowerCase())) ? (input + ':') : '';

		}
645334
def ConsultarRazas(self, sep="||"):
        ""
        ret = self.client.consultarRazas(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                            )['respuesta']
        self.__analizar_errores(ret)
        array = ret.get('raza', []) + ret.get('razaPorcina', [])
        if sep is None:
            return dict([(it['codigo'], it['descripcion']) for it in array])
        else:
            return [("%s %%s %s %%s %s" % (sep, sep, sep)) %
                    (it['codigo'], it['descripcion']) for it in array]
689118
def CambiarDestinoDestinatarioCTGRechazado(self, numero_carta_de_porte, 
                            numero_ctg, codigo_localidad_destino=None,
                            cuit_destino=None, cuit_destinatario=None,
                            km_a_recorrer=None, turno=None,
                            **kwargs):
        ""
        ret = self.client.cambiarDestinoDestinatarioCTGRechazado(request=dict(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuitRepresentado': self.Cuit, },
                        datosCambiarDestinoDestinatarioCTGRechazado=dict(
                            cartaPorte=numero_carta_de_porte,
                            ctg=numero_ctg, 
                            codigoLocalidadDestino=codigo_localidad_destino,
                            cuitDestino=cuit_destino, 
                            cuitDestinatario=cuit_destinatario,
                            kmARecorrer=km_a_recorrer,
                            turno=turno,
                            )))['response']
        self.__analizar_errores(ret)
        datos = ret.get('datosResponse')
        if datos:
            self.CartaPorte = str(datos['cartaPorte'])
            self.NumeroCTG = str(datos['ctg'])
            self.FechaHora = str(datos['fechaHora'])
            self.CodigoTransaccion = str(datos['codigoOperacion'])
            self.Observaciones = ""
        return self.CodigoTransaccion
739149
def ConsultarPuntosVentas(self, sep="||"):
        ""
        ret = self.client.consultarPuntosVenta(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                            )['respuesta']
        self.__analizar_errores(ret)
        array = ret.get('puntoVenta', [])
        if sep is None:
            return dict([(it['codigo'], it['descripcion']) for it in array])
        else:
            return [("%s %%s %s %%s %s" % (sep, sep, sep)) %
                    (it['codigo'], it['descripcion']) for it in array]
1133553
def AgregarTributo(self, cod_tributo, descripcion=None,     
                       base_imponible=None, alicuota=None, importe=None):
        ""
        trib = {'codTributo': cod_tributo, 'descripcion': descripcion, 
                'baseImponible': base_imponible, 'alicuota': alicuota, 
                'importe': importe}
        if 'ajusteFinanciero' in self.solicitud:
            self.solicitud['ajusteFinanciero']['tributo'].append(trib)
        else:
            self.solicitud['tributo'].append(trib)
        return True
1173550
def AgregarTributo(self, codigo_tributo, descripcion, base_imponible, alicuota, importe):
        ""
        trib = dict(codigoTributo=codigo_tributo, descripcion=descripcion, baseImponible=base_imponible, alicuota=alicuota, importe=importe)
        self.solicitud['tributo'].append(trib)
        return True
554122
def ConsultarGastos(self, sep="||"):
        ""
        ret = self.client.consultarGastos(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                            )['respuesta']
        self.__analizar_errores(ret)
        array = ret.get('gasto', [])
        if sep is None:
            return dict([(it['codigo'], it['descripcion']) for it in array])
        else:
            return [("%s %%s %s %%s %s" % (sep, sep, sep)) %
                    (it['codigo'], it['descripcion']) for it in array]
993896
function getViajesExtranjeros (senador, periodo, incluyeSenador) {
  let url = URL_VIAJES_INTERNACIONALES.replace(/:year:/, periodo)

  return scraperjs.StaticScraper.create()
    .get(url)
    .catch(ex => {
      console.log('Some srioues problem happened!\n\n\n')
      return new Promise()
    })
    .scrape($ => {
      const nombre = senador.nombre.split(',')[1].split(' ')[1]
      const apellido = senador.nombre.split(',')[0].split(' ')[0]

      const preResults = $('#main tbody tr:not(:first-child)').filter((i, el) => {
        const _apellido = removeAccent($(el).find('td:nth-child(2)').text().trim())
        const _nombre = removeAccent($(el).find('td:nth-child(4)').text().trim())
        return _nombre.indexOf(removeAccent(nombre).toUpperCase()) > -1 && _apellido.indexOf(removeAccent(apellido).toUpperCase()) > -1
      })

      const results = preResults.map(function () {
        const rubro = $(this).find('td:nth-child(1)').text().trim()
        const dateStr = $(this).find('td:nth-child(5)').text().split('-')
        const month = parseInt(dateStr[1])
        const day = parseInt(dateStr[0])
        const year = parseInt(dateStr[2])
        const fecha = new Date(year, month - 1, day)
        const pais = $(this).find('td:nth-child(6)').text().trim()
        const viatico = parseInt($(this).find('td:nth-child(7)').text().trim())
        const motivo = $(this).find('td:nth-child(8)').text().trim()
        return {
          rubro,
          fecha,
          pais,
          viatico,
          motivo
        }
      }).get()
      return incluyeSenador ? Object.assign(senador, { internacionales: results }) : results
    })
}