function _valida($do) { $this->rapyd->load('dataobject'); $obr = $do->get('obr'); $obra = new Dataobject('obra'); $obra->load($obr); $rr = $this->ivaplica2(); $ivaa = $do->get('ivaa'); $ivag = $do->get('ivag'); $ivar = $do->get('ivar'); $exento = $do->get('exento'); $subtotal = $do->get('subtotal'); $cod_prov = $do->get('cod_prov'); $otrasrete = $do->get('otrasrete'); $ivag = $ivag != 0 ? $subtotal * $rr['tasa'] / 100 : 0; $ivar = $ivar != 0 ? $subtotal * $rr['redutasa'] / 100 : 0; $ivaa = $ivaa != 0 ? $subtotal * $rr['sobretasa'] / 100 : 0; $do->set('ivaa', $ivaa); $do->set('ivag', $ivag); $do->set('ivar', $ivar); $iva = $ivag + $ivar + $ivaa; //$cod_prov = $obra->get('cod_prov' ); $porcent = $obra->get('porcent'); $tipo = $obra->get('tipo'); $do->set('estadmin', $obra->get('codigoadm')); $do->set('fondo', $obra->get('fondo')); $creten = $do->get('creten'); $reteiva_prov = $this->datasis->dameval("SELECT reteiva FROM sprv WHERE proveed = '{$cod_prov}'"); if ($tipo == 'Compra') { $do->set('creten', ''); $do->set('reten', 0); } $rete = $this->datasis->damerow("SELECT base1,tari1,pama1 FROM rete WHERE codigo='{$creten}'"); if ($reteiva_prov != 75) { $reteiva_prov = 100; } $error = ''; $reteiva = $mivag = $mivar = $mivaa = 0; $reten = 0; if (!empty($cod_prov)) { $reteiva = $iva * $reteiva_prov / 100; if ($rete) { if (substr($creten, 0, 1) == '1') { $reten = round($subtotal * $rete['base1'] * $rete['tari1'] / 10000, 2); } else { $reten = round(($subtotal - $rete['pama1']) * $rete['base1'] * $rete['tari1'] / 10000, 2); } if ($reten < 0) { $reten = 0; } $do->set('reten', $reten); } } else { $reteiva = 0; } $impt = $impm = 0; $pimpm = $this->datasis->traevalor('IMPMUNICIPAL'); $pimpt = $this->datasis->traevalor('IMPTIMBRE'); $pcrs = $this->datasis->traevalor('CRS'); if ($do->get('imptimbre') != 0) { $impt = $subtotal * $pimpt / 100; } if ($do->get('impmunicipal') != 0) { $impm = $subtotal * $pimpm / 100; } $crs = 0; if ($do->get('crs') != 0) { $crs = $obra->get('monto') * $pcrs / 100; } $total2 = $iva + $subtotal; $amortiza = $do->get('amortiza'); //if($do->get('amortiza')!=0) // $amortiza = $total2 * $porcent / 100; $total = $total2 - $reteiva - $reten - $amortiza - $otrasrete - $impt - $impm - $crs; //echo "</br>".$total2; //echo "</br>".$amortiza; //echo "</br>".$reten; //echo "</br>".$reteiva; //echo "</br>".$impt; //echo "</br>".$impm; //echo "</br>".$crs; //echo "</br>".$total; //exit(); $do->set('impmunicipal', $impm); $do->set('imptimbre', $impt); $do->set('crs', $crs); $do->set('pimpmunicipal', $pimpm); $do->set('pimptimbre', $pimpt); $do->set('pcrs', $pcrs); $do->set('iva', $iva); $do->set('tivag', $rr['tasa']); $do->set('tivar', $rr['redutasa']); $do->set('tivaa', $rr['sobretasa']); $do->set('mivag', $ivag > 0 ? $ivag * 100 / $rr['tasa'] : 0); $do->set('mivar', $ivar > 0 ? $ivar * 100 / $rr['redutasa'] : 0); $do->set('mivaa', $ivaa > 0 ? $ivaa * 100 / $rr['sobretasa'] : 0); //$do->set('subtotal' , $subtotal ); $do->set('exento', $exento); $do->set('reteiva', $reteiva); $do->set('total', $total); $do->set('total2', $total2); $do->set('status', 'O1'); $do->set('cod_prov', $cod_prov); $do->set('breten', $rete['tari1']); $do->set('amortiza', $amortiza); $do->set('porcent', $porcent); $do->set('multiple', 'N'); if (empty($error)) { if (empty($do->loaded)) { $nodirect = $this->datasis->fprox_numero('nodirect'); $do->set('numero', $nodirect); $do->pk = array('numero' => $nodirect); } } if (!empty($error)) { $do->error_message_ar['pre_ins'] = $error; $do->error_message_ar['pre_upd'] = $error; return false; } }