Saludos a todos agradeciendo por adelantado mis agredecimiento, esto tratando en un maestro detalle cargar los datos del detalle de un modelo previo, que tiene los mismo datos, para no tener que captar de nuevo los datos del detalle.
Tengo las tablas
-
facturas con estos campos: (tabla principal del maestro detalle)
Id int autoincremental
Idn int
nfactura (PK)
pedidos varchar campo donde capto el pedido echo anteriormente
… -
detallesfacturas con los campos
nfactura relacionada con facturas uno a varios con nfactura de la tabla factura
Codprod codigo del producto facturado
…
aqui las dos tablas de otro maestro detalle echo anteriormente
pedidos con los campos
npedidos (PK)
…
4)detallesdepidos con los campos
npedidos relacionado uno a muchos con npedidos (PK) de la tabla pedido, la cual es la principal de ese maestro detalle.
Codprod codigo del producto captado previamente
…
Como dije lo que quiero es captar de la tabla detallesdepidos los datos que debe tener detallesfacturas para no tener que volver a captarlos.
En el controlador de la tabla facturas hago lo siguiente:
public function actionCreate() {
$model = new Facturas;
$Detallesfacturas = new Detallesfacturas;
$this->performAjaxValidation(array($model, $Detallesfacturas));
if (isset($_POST['Facturas'])) {// && ($firma->IdEstado = 1)
$model->attributes = $_POST['Facturas'];
$valid = true;
$valid = $model->validate() && $valid;
if (!$valid) {
echo CHtml::errorSummary($model);
}
$sql = "select Idn as n from facturas order by Idn DESC limit 1;";
$connection = Yii::app()->db;
$command = $connection->createCommand($sql);
$row = $command->queryRow();
$idn = $row['n'];
if ($idn === \NULL) {
$model->Idn = 1;
} elseif ($idn <> \NULL) {
$model->Idn = $idn + 1;
}
if ($valid) {
if ($model->save()) {
$clie = $model->CodCliente;
//aqui formo el numero de facturas
$fecha = date("y");
$cadena2 = "/";
$cadena3 = "$model->Idn"; //
$cadena4 = "0";
$cadena5 = "00";
$cadena6 = "000";
$cadena7 = "0000";
$criteria = new CDbCriteria;
$criteria->addCondition('Idn = :Idn');
$criteria->params = array(':Idn' => $model->Idn);
$model = Facturas::model()->find($criteria);
if ($model->Idn <= 9) {
$model->nfactura = $cadena7 . $cadena3 . $cadena2 . $fecha;
} elseif ($model->Idn >= 10 & $model->Idn <= 99) {
$model->nfactura = $cadena6 . $cadena3 . $cadena2 . $fecha;
} elseif ($model->Idn >= 100 & $model->Idn <= 999) {
$model->nfactura = $cadena5 . $cadena3 . $cadena2 . $fecha;
} elseif ($model->Idn >= 1000 & $model->Idn <= 9999) {
$model->nfactura = $cadena4 . $cadena3 . $cadena2 . $fecha;
} elseif ($model->Idn >= 10000) {
$model->nfactura = $cadena3 . $cadena2 . $cadena1 . $fecha;
}
$model->save();
$ped = $model->pedidos;
$pedidos = Pedidos::model()->find('npedidos = :npedidos', array(':npedidos' => $model->pedidos));
$detaped = Detallespedidos::model()->find('npedidos = :npedidos', array(':npedidos' => $model->pedidos));
$produ = TblProductos::model()->find('Codprod = :Codprod', array(':Codprod' => $detaped->Codprod));
$ped = $model->pedidos;
$array = array($detaped->npedidos);
$sql = "SELECT Codprod AS o, npedidos AS p, cantidad AS c FROM detallespedidos WHERE npedidos ='$ped';";
$connection = Yii::app()->db;
$command = $connection->createCommand($sql);
$row = $command->queryRow();
$idped = $row['p']++;
$idcod = $row['o']++;
$idcan = $row['c']++; //importemn
Detallesfacturas::model()->deleteAll('nfactura=:nfactura', array(':nfactura' => $model->nfactura));
foreach ($detaped as $item) {
foreach ($_POST['Facturas'] as $item) {
//Lo que se guarda en tabla Detallesfacturas
$Detallesfacturas = new Detallesfacturas;
$Detallesfacturas->nfactura = $model->nfactura;
// for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
$Detallesfacturas->Codprod = $idcod; //
$Detallesfacturas->cantidad = $idcan; //
$Detallesfacturas->premn = $produ->PreMN; //
$Detallesfacturas->precuc = $produ->PreCUC;
$sql1 = "select TasaDes AS t, TasaImp AS i, TasaDesn as im from tbl_turcad;";
$connection = Yii::app()->db;
$command = $connection->createCommand($sql1);
$row1 = $command->queryRow();
$idd = $row1['t'];
$idi = $row1['i'];
$idim = $row1['im'];
$sql = "select conversiono AS c, conversion as cc from tbl_conversion;";
$connection = Yii::app()->db;
$command = $connection->createCommand($sql);
$row = $command->queryRow();
$idc = $row['c'];
$idcc = $row['cc']; //importemn
$Detallesfacturas->importemn = $Detallesfacturas->premn * $Detallesfacturas->cantidad;
$Detallesfacturas->importecuc = $Detallesfacturas->precuc * $Detallesfacturas->cantidad;
$Detallesfacturas->impuesto = $Detallesfacturas->importemn + $Detallesfacturas->importecuc * $idc * $idim;
//recargo comercial
if ($model->Idrecargo <> 1) {
$Detallesfacturas->recargo = $Detallesfacturas->cantidad * $produ->recargo;
$Detallesfacturas->recargoc = $Detallesfacturas->cantidad * $produ->recargoc;
}
$Detallesfacturas->importetotal = ($Detallesfacturas->importemn + $Detallesfacturas->importecuc * $idc) + ($Detallesfacturas->recargo + $Detallesfacturas->recargoc * $idc);
//descuento comercial con formula: ($Detallesfacturas->precuc * $Detallesfacturas->cantidad) * $turcad->Coddes $Detallesfacturas
if ($model->Iddescuento <> 1) {
$Detallesfacturas->descuento = $Detallesfacturas->importecuc + $Detallesfacturas->importemn * $idd;
}
//sumar detalles
$importeTotal += $Detallesfacturas->importemn;
$importeTotalc += $Detallesfacturas->importecuc;
$imventas += $Detallesfacturas->impuesto;
$imrecargo += $Detallesfacturas->recargo;
$imrecargoc += $Detallesfacturas->recargoc;
$imdescuento += $Detallesfacturas->descuento;
$Importetotalmn += $Detallesfacturas->importetotal;
$Detallesfacturas->save();
El problema es que solo se capta el primer producto de pedidosy la tabla Detallespedidos puede tener varios productos y quiero que los capte todos y realice las operaciones pedidas