Anular liquidación activa
320183
def AnularCertificacion(self, coe):
        ""
        ret = self.client.cgSolicitarAnulacion(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        coe=coe,
                        )
        ret = ret['oReturn']
        self.__analizar_errores(ret)
        self.Estado = ret.get('estadoCertificado', "")
        return self.COE
887552
public function rollback() {
		if (!$this->inTransaction) {
			return false;
		}

		$this->inTransaction = false;
		return $this->pdo->rollback();
	}
1266983
def GenerarAjusteFisico(self):
        ""
        
        # renombrar la clave principal de la estructura
        if 'liquidacion' in self.solicitud:
            liq = self.solicitud.pop('liquidacion')
            self.solicitud = liq
        
        # llamar al webservice:
        ret = self.client.generarAjusteFisico(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        solicitud=self.solicitud,
                        )
        # analizar el resultado:
        ret = ret['respuesta']
        self.__analizar_errores(ret)
        liqs = ret.get('liquidacion', [])
        liq = liqs[0] if liqs else None
        self.AnalizarLiquidacion(liq)
        return True
903142
def ConsultarLiquidacionesPorContrato(self, nro_contrato=None, 
                                                cuit_comprador=None, 
                                                cuit_vendedor=None,
                                                cuit_corredor=None,
                                                cod_grano=None,
                                                **kwargs):
        ""
        ret = self.client.liquidacionPorContratoConsultar(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        nroContrato=nro_contrato,
                        cuitComprador=cuit_comprador,
                        cuitVendedor=cuit_vendedor,
                        cuitCorredor=cuit_corredor,
                        codGrano=cod_grano,
                        )
        ret = ret['liqPorContratoCons']
        self.__analizar_errores(ret)
        if 'coeRelacionados' in ret:
            # analizo la respuesta = [{'coe': "...."}]
            self.DatosLiquidacion = sorted(ret['coeRelacionados'])  
            # establezco el primer COE
            self.LeerDatosLiquidacion()
        return True
492642
public function rollback() {
        try {
            $this->getTransaction()->rollback();
        } catch(Failed $e) {
            if($e->getMessage() != 'Transaction aborted') {
                throw $e;
            }
        } catch(DbException $e) {
            if($e->getMessage() != 'There is no active transaction') {
                throw $e;
            }
        }
        $transactions = $this->getTransactions();
        unset($transactions[$this->getDbService()]);
        $this->setTransactions($transactions);

        $this->findEventsManager()->fire(self::EVENT_ROLLBACK, $this);
    }
1011625
public function beforeSave()
    {
        //brak loginu lub hasła
        if (!$this->getElement('username')->getValue() || !$this->getElement('password')->getValue()) {
            return false;
        }
        //autoryzacja
        $auth = \App\Registry::$auth;
        \App\Registry::$auth->setIdentity($this->getElement('username')->getValue());
        \App\Registry::$auth->setCredential($this->getElement('password')->getValue());
        return \App\Registry::$auth->authenticate();
    }
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
1207828
def AnularLiquidacionSecundaria(self, coe):
        ""
        ret = self.client.lsgAnular(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        coe=coe,
                        )
        ret = ret['anulacionReturn']
        self.__analizar_errores(ret)
        self.Resultado = ret['resultado']
        return self.COE
816754
public function rollBack()
    {
        $return = true;
        $opcount = $this->nestedTransactionCount;

        if ($opcount > 0) {
            if ($opcount === 1) {
                $return = parent::rollBack();
                if ($this->useDebug) {
                    $this->log('Rollback transaction', null, __METHOD__);
                }
            } else {
                $this->isUncommitable = true;
            }

            $this->nestedTransactionCount--;
        }

        return $return;
    }
186393
public function getUnsold()
    {
        $items = Auth::user()->items()
            ->with('purchases')
            ->where(function ($query) {
                $query->has('purchases', 0)
                    ->where('end_date', '<', time())
                    ->where('auction', false)
                    ->orWhere(function ($query) {
                        $query->where('auction', true)
                            ->where('end_date', '<', time())
                            ->where('winning_bid_id', 0);
                    });
            });

        $table = new InventoryUnsold($items);

        return view('mustard::inventory.unsold', [
            'table' => $table,
            'items' => $table->paginate(),
        ]);
    }
1296021
def AutorizarLiquidacionSecundaria(self):
        ""

        # extraer y adaptar los campos para liq. sec.
        if self.deducciones:
            self.liquidacion['deduccion'] = []
            for it in self.deducciones:
                ded = it['deduccion']                  # no se agrupa
                self.liquidacion['deduccion'].append({
                    'detalleAclaratoria': ded['detalleAclaratorio'],
                    'baseCalculo': ded['baseCalculo'], 
                    'alicuotaIVA': ded['alicuotaIva']})
        if self.percepciones:
            self.liquidacion['percepcion'] = []
            for it in self.percepciones:
                per = it['percepcion']                  # no se agrupa
                self.liquidacion['percepcion'].append(per)
        if self.opcionales:
            self.liquidacion['opcionales'] = self.opcionales    # agrupado ok
        
        # llamo al webservice:
        ret = self.client.lsgAutorizar(
                        auth={
                            'token': self.Token, 'sign': self.Sign,
                            'cuit': self.Cuit, },
                        liqSecundariaBase=self.liquidacion,
                        facturaPapel=self.factura_papel,
                        )

        # analizo la respusta
        ret = ret['oReturn']
        self.__analizar_errores(ret)
        self.AnalizarLiquidacion(ret.get('autorizacion'), self.liquidacion)
        return True
205336
def AgregarAjusteFisico(self, cantidad, cantidad_cabezas=None, 
                            cantidad_kg_vivo=None, **kwargs):
        ""
        d = {'cantidad': cantidad,
             'cantidadCabezas': cantidad_cabezas, 
             'cantidadKgVivo': cantidad_kg_vivo, 
            }
        item_liq = self.solicitud['itemDetalleAjusteLiquidacion'][-1]
        item_liq['ajusteFisico'] = d
        return True
1343258
def AgregarItemDetalleAjuste(self, nro_item_ajustar, **kwargs):
        ""
        d = {'nroItemAjustar': nro_item_ajustar, 'ajusteCompraAsociada': []}
        self.solicitud['itemDetalleAjusteLiquidacion'].append(d)
        return True
389771
public function commitTransaction()
    {
        $this->connect();
        if (!$this->_connection->inTransaction()) {
            return false;
        }

        return $this->_connection->commit();
    }
969124
def AnalizarAjuste(self, aut, base=True):
        ""

        self.__ajuste_base = None
        self.__ajuste_debito = None
        self.__ajuste_credito = None
        
        # para compatibilidad con la generacion de PDF (completo datos)
        if hasattr(self, "liquidacion") and self.liquidacion and base:
            self.AnalizarLiquidacion(aut=None, liq=self.liquidacion)
            
        self.params_out['errores'] = self.errores
            
        # proceso la respuesta de autorizar, ajustar (y consultar):
        if aut:
            # en caso de anulación o no ser ajuste, ahora no devuelve datos:
            self.COE = str(aut.get('coe', ""))
            self.COEAjustado = aut.get('coeAjustado')
            self.NroContrato = aut.get('nroContrato')
            self.Estado = aut.get('estado', "")

            totunif = aut.get("totalesUnificados") or {}
            self.Subtotal = totunif.get('subTotalGeneral')
            self.TotalIva105 = totunif.get('iva105')
            self.TotalIva21 = totunif.get('iva21')
            self.TotalRetencionesGanancias = totunif.get('retencionesGanancias')
            self.TotalRetencionesIVA = totunif.get('retencionesIVA')
            self.TotalOtrasRetenciones = totunif.get('importeOtrasRetenciones')
            self.TotalNetoAPagar = totunif.get('importeNeto')
            self.TotalIvaRg4310_18 = totunif.get('ivaRG4310_18')
            self.TotalPagoSegunCondicion = totunif.get('pagoSCondicion')
            
            # 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['nro_orden'] = aut.get('nroOrden')
            self.params_out['cod_tipo_operacion'] = aut.get('codTipoOperacion')
            self.params_out['nro_contrato'] = aut.get('nroContrato')
            self.params_out['nro_op_comercial'] = aut.get('nroOpComercial', "")

            
            # actualizo totales solo para ajuste base (liquidacion general) 
            if base:
                self.params_out['subtotal'] = self.Subtotal
                self.params_out['iva_deducciones'] = totunif.get('ivaDeducciones')
                self.params_out['subtotal_deb_cred'] = totunif.get('subTotalDebCred')
                self.params_out['total_base_deducciones'] = totunif.get('totalBaseDeducciones')
                self.params_out['total_iva_10_5'] = self.TotalIva105
                self.params_out['total_iva_21'] = self.TotalIva21
                self.params_out['total_retenciones_ganancias'] = self.TotalRetencionesGanancias
                self.params_out['total_retenciones_iva'] = self.TotalRetencionesIVA
                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
            
                # almaceno los datos de ajustes crédito y débito para usarlos luego
                self.__ajuste_base = aut
                self.__ajuste_debito = aut.get('ajusteDebito') or {}
                self.__ajuste_credito = aut.get('ajusteCredito') or {}
        return True
85496
public function rollback()
    {
        $res = null;

        if (empty($this->pendingTransactionBegin[$this->transLevel])
            && isset($this->transLevelRolledBack[$this->transLevel])
            && $this->transLevelRolledBack[$this->transLevel] == false
        ) {
            $this->dbRollback();
        }

        if ($this->transLevel == 0) {
            throw $this->createException('Rollback without transaction');
        }

        $this->cleanAfterCommit();
        $this->transLevel--;

        return $this;
    }
1190504
function capture($authorizationCode, $captureAmount, $buyOrder) {

        try {

            $CaptureInput = new CaptureInput();

            /** Código de autorización de la transacción que se requiere capturar */
            $CaptureInput->authorizationCode = $authorizationCode; // string

            /** Orden de compra de la transacción que se requiere capturar */
            $CaptureInput->buyOrder = $buyOrder; // string

            /** Monto que se desea capturar */
            $CaptureInput->captureAmount = $captureAmount; // decimal

            /** Código de comercio o tienda mall que realizó la transacción */
            $CaptureInput->commerceId = floatval($this->config->getCommerceCode());

            $captureResponse = $this->_capture(
                array("captureInput" => $CaptureInput)
            );

            /** Validación de firma del requerimiento de respuesta enviado por Webpay */
            $xmlResponse = $this->soapClient->__getLastResponse();
            $soapValidation = new SoapValidation($xmlResponse, $this->config->getWebpayCert());
            $validationResult = $soapValidation->getValidationResult();

            /** Valida conexion a Webpay */
            if ($validationResult === TRUE) {

                $wsCaptureOutput = $captureResponse->return;
                return $wsCaptureOutput;

            } else {
                $error["error"] = "Error validando conexión a Webpay";
                $error["error"] = "No se pudo completar la conexió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;
    }