Agrega balance litros y porcentajes sólidos a la liq. (obligatorio)
963970
def AgregarBalanceLitrosPorcentajesSolidos(self, litros_remitidos, litros_decomisados, 
                                               kg_grasa, kg_proteina, **kwargs):
        ""
        d = {'litrosRemitidos': litros_remitidos,
             'litrosDecomisados': litros_decomisados,
             'kgGrasa': kg_grasa,
             'kgProteina': kg_proteina}
        self.solicitud['balanceLitrosPorcentajesSolidos'] = d
781274
def AgregarAjuste(self, cai, tipo_cbte, pto_vta, nro_cbte, cae_a_ajustar):
        ""
        ajuste = self.solicitud['liquidacion']['ajuste'] = {}
        if cae_a_ajustar:
            ajuste['caeAAjustar'] = cae_a_ajustar
        if cai:
            cbte = dict(cai=cai, caeAAjustar=cae_a_ajustar, 
                        tipoComprobante=tipo_cbte, puntoVenta=pto_vta, 
                        nroComprobante=nro_cbte)
            ajuste['formularioPapel'] = cbte
        return True
1086279
def AgregarOperador(self, cuit, iibb=None, nro_ruca=None, nro_renspa=None, 
                        cuit_autorizado=None, **kwargs):
        ""
        d = {'cuit': cuit, 
             'iibb': iibb,
             'nroRUCA': nro_ruca,
             'nroRenspa': nro_renspa,
             'cuitAutorizado': cuit_autorizado}
        self.solicitud['receptor']['operador'] = d
        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
579618
def AgregarContingencias(self, tipo=None, observacion=None, **kwargs):
        ""
        contingencia = dict(tipoContingencia=tipo, observacion=observacion)
        self.remito['arrayContingencias'].append(dict(contingencia=contingencia))
        return True
142529
def AjustarLiquidacion(self):
        ""
        # limpio los elementos que no correspondan por estar vacios:
        for item_liq in self.solicitud['itemDetalleAjusteLiquidacion']:
            campo = 'ajusteCompraAsociada'
            if campo in item_liq and not item_liq[campo]:
                del item_liq[campo]
        for campo in self.solicitud.get('ajusteFinanciero', {}).copy():
            if not self.solicitud['ajusteFinanciero'][campo]:
                del self.solicitud['ajusteFinanciero'][campo]
        # llamo al webservice:
        ret = self.client.generarAjuste(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        solicitud=self.solicitud,
                        )
        # analizo la respusta
        ret = ret['respuesta']
        self.__analizar_errores(ret)
        self.AnalizarLiquidacion(ret)
        return True
88688
public static function calcularParcelamento($capital, $taxa, $tempo, $semjuros) {
        $parcelamento = array();
        for ($i = 1; $i <= $tempo; $i++) {
            $m = $capital * pow((1 + $taxa / 100), $i);
            if ($i <= $semjuros) {
                $parcelamento[$i] = array(
                    'parcela' => self::formataValor(($capital / $i), '.', 2, ',', '.'),
                    'total' => self::formataValor($capital, '.', 2, ',', '.'),
                    'status' => 'sem juros'
                );
            } else {
                $parcelamento[$i] = array(
                    'parcela' => self::formataValor(($m / $i), '.', 2, ',', '.'),
                    'total' => self::formataValor($m, '.', 2, ',', '.'),
                    'status' => 'com juros'
                );
            }
        }

        return $parcelamento;
    }
906673
public function getBalance()
	{
		$la = $this->left  ? $this->left->getHeight()  : 0;
		$lb = $this->right ? $this->right->getHeight() : 0;
		return ( $la - $lb );
	}
1062581
def AgregarDeduccion(self, codigo_concepto=None, detalle_aclaratorio=None,
                               dias_almacenaje=None, precio_pkg_diario=None,
                               comision_gastos_adm=None, base_calculo=None,
                               alicuota=None, **kwargs):
        ""
        # limpiar campo según validación (comision_gastos_adm puede ser 0.00!)
        if codigo_concepto != "CO" and comision_gastos_adm is not None \
            and float(comision_gastos_adm) == 0:
            comision_gastos_adm = None
        # no enviar campos para prevenir errores AFIP 1705, 1707, 1708
        if base_calculo is not None:
            if codigo_concepto == "AL":
                base_calculo = None
            if codigo_concepto == "CO" and float(base_calculo) == 0:
                base_calculo = None         # no enviar, por retrocompatibilidad
        if codigo_concepto != "AL":
            dias_almacenaje = None
            precio_pkg_diario = None
        self.deducciones.append(dict(
                                    deduccion=dict(
                                        codigoConcepto=codigo_concepto,
                                        detalleAclaratorio=detalle_aclaratorio,
                                        diasAlmacenaje=dias_almacenaje,
                                        precioPKGdiario=precio_pkg_diario,
                                        comisionGastosAdm=comision_gastos_adm,
                                        baseCalculo=base_calculo,
                                        alicuotaIva=alicuota, 
                                    ))
                            )
        return True
363568
def AgregarCondicionVenta(self, codigo, descripcion=None, **kwargs):
        ""
        cond = {'codigo': codigo, 'descripcion': descripcion}
        self.solicitud['liquidacion']['condicionVenta'].append(cond)
        return True
1185972
def AgregarGasto(self, cod_gasto, descripcion=None, base_imponible=None,
                     alicuota=None, importe=None, alicuota_iva=None,
                     tipo_iva_nulo=None):
        ""
        # WSLSPv1.4.1: tipo_iva_nulo debe ser NG, NA, EX: Exento.
        if alicuota_iva == 0:
            alicuota_iva = None         # sólo acepta [10.5, 21.0]
        elif alicuota_iva:
            tipo_iva_nulo = None
        gasto = {'codGasto': cod_gasto, 'descripcion': descripcion, 
                 'baseImponible': base_imponible, 'alicuota': alicuota, 
                 'importe': importe, 'alicuotaIVA': alicuota_iva,
                 'tipoIVANulo': tipo_iva_nulo,
                }
        if 'ajusteFinanciero' in self.solicitud:
            self.solicitud['ajusteFinanciero']['gasto'].append(gasto)
        else:
            self.solicitud['gasto'].append(gasto)
        return True
378938
private function comprobarIntegridadAtributos(){
        foreach ($this->attrObligatorios as $obligatorios) {
            if (!array_key_exists($obligatorios, $this->entrada)) {
                $this->configurarErrorLdap('Creacion', 'No se ha configurado el atributo ' . $obligatorios );
                return false;
            }
        }
        return true;
    }
281542
def AgregarFlete(self, descripcion, importe):
        ""
        flete = dict(descripcion=descripcion, importe=importe)
        self.solicitud['flete'] = flete
        return True
668652
def AgregarOpcional(self, codigo=None, descripcion=None, **kwargs):
        ""
        self.opcionales.append(dict(
                                    opcional=dict(
                                        codigo=codigo,
                                        descripcion=descripcion,
                                    ))
                            )
        return True
345597
public function getBalance()
	{
		$result = $this->execute('balance');
		if(count(@$result['errors']))
			$this->_errors = $result['errors'];
		return @$result['balance'];		
	}
136687
def AgregarUbicacionTambo(self, latitud, longitud, domicilio,
                              cod_localidad, cod_provincia, codigo_postal,
                              nombre_partido_depto, **kwargs):
        ""
        ubic_tambo = {'latitud': latitud, 
                      'longitud': longitud,
                      'domicilio': domicilio,
                      'codLocalidad': cod_localidad,
                      'codProvincia': cod_provincia,
                      'nombrePartidoDepto': nombre_partido_depto,
                      'codigoPostal': codigo_postal}
        self.solicitud['tambo']['ubicacionTambo'] = ubic_tambo
        return True
615383
public function balance() : int
    {
        return ($this->right ? $this->right->height() : 0)
            - ($this->left ? $this->left->height() : 0);
    }