Validation with form request in pivot table laravel 5

1

How can I occupy a form request in pivot tables to validate, since these pivot tables do not have a controller or model. I have a controller which is responsible for making the attach to the pivot table and also to insert the extra columns. I have a form request for that controller, but it only works with the fields in the table associated with the controller.

Form Request:

<?php namespace SIA\Http\Requests;

use SIA\Http\Requests\Request;


 class VentaRequest extends Request {


/**
 * Determine if the user is authorized to make this request.
 *
 * @return bool
 */
public function authorize()
{
    return true;
}



/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'msocod_id' => 'required',
        'mclcod_id' => 'required',
        'msucod_id' => 'required',
        'tvtcod_id' => 'required',
        'mdccod_id' => 'required',
        'vtfedc'    => 'date_format:d-m-Y|required',
        'vtnfecn'   => 'date_format:d-m-Y|required',
        'concod_id' => 'required',


    ];




  }

}

Controller method store:

public function store(VentaRequest $request) 
{


        try{        



        //Obtener el Codigo de documento        
        $doc = $request->mdccod_id;

        //Rescatar codigo de impuesto
        $mim = M_DCVT::Docu($doc);
        $mim = $mim->mimpcd_id;         

        //Rescatar clave de contabilización de documento
        $clave = M_DCVT::Docu($doc);
        $clave = $clave->mdccvc;

            //Rescatar sociedad
        $soci = $request->msocod_id;
            //Rescatar codigo de impuesto (C1)
        $codim = M_IMPT::Codigo($doc);
        $codim = $codim->mimpcd;

            //Rescatar cuenta contable de impuesto
        $ccim = M_IMPT::Iva($soci, $codim);
        $ccim = $ccim->mpccct;

        //Rescatar clave de contabilizacion de impuesto
        $cvc = M_IMPT::Iva($soci, $codim);
        $cvc = $cvc->mimcvc;

        // id del cliente
        $ccli = $request->mclcod_id;
            //Obtener el codigo del cliente
        $mclie = M_CLIE::CodigoCli($ccli);
        $mclie = $mclie->mclcod;

            //Buscar la clave de contabilizacion del cliente
            $clien = M_CLIE::Clave($soci, $mclie);      
            $clien = $clien->mclvcc;

            $clien2 = M_CLIE::Clave($soci, $mclie);
            $clien2 = $clien2->mpccct;

            $mone = M_SOCI::Moneda($soci);
            $mone = $mone->moncod_id;


            //Obtener fecha y guardsarlas en la base de datos
            $fecha = Carbon::createFromFormat('d-m-Y', $request->vtfedc)->Format('Y-m-d');
            $fechac = Carbon::createFromFormat('d-m-Y', $request->vtnfecn)->Format('Y-m-d');

            //tipo cliente para cuenta de ingresos
            $tpcl = M_CLIE::TipoCli($soci, $mclie);

            //Rescatar el arreglo de ids de los materiales
            $material = $request->input('mmscod_id',[]);



            //Rescatar codigo grupo imputacion material
            $impmate = M_MTSV::Imputacion($material, $soci);

            //Variable para rescatar cuenta ingreso de la tabla dt_ctin
            $dcingre = [];
            //Rescate de la cuenta de ingreso
            $dcingre = DT_CTIN::CodImpMat($material,$soci,$tpcl,$impmate);
            //dd($dcingre);


            //Capturar cantidad de cada producto en un arreglo      
            $cant = $request->input('vtcanp',[]);
            //Capturar precio de cada producto en un arreglo
            $prec = $request->input('vtprep',[]);









            $attach = [];


            foreach ($material as $k=>$id){
                $attach[$id] = [];



                // Agregar el arreglo quantity en la variable attach segun su relacion con el id del producto
                if(array_key_exists($k, $cant)){
                    $attach[$id]['vtcanp'] = $cant[$k];

                }

                // Agregar el arreglo price en la variable attach segun su relacion con el id del producto
                if(array_key_exists($k, $prec)){
                    $attach[$id]['vtprep'] = $prec[$k];


                }

                //Campo de numero rescatado de la base de datos desde otra funcion. El numero es un campo asociado al producto, el cual 
                // se ingresa automaticamente y es asociado a un solo producto en particular
                if(array_key_exists($k, $dcingre)){
                   $attach[$id]['vtccin'] = $dcingre[$k];

                }
            //Ids de los productos
                if(empty($attach[$id])){
                    $attach[$id] = $id;
                }
            }
                    $pedido = PV_VTA::create([          
                'msocod_id' => $request->msocod_id,
                'tvtcod_id' => $request->tvtcod_id,
                'stpvcd_id' => 1
                ]);




            $documento = VT_DOC::create([
                    'msocod_id' =>$request->msocod_id,
                    'vtndoc' =>$request->vtndoc,
                    'mclcod_id' =>$request->mclcod_id,
                    'msucod_id' =>$request->msucod_id,
                    'tvtcod_id' =>$request->tvtcod_id,
                    'mdccod_id' =>$request->mdccod_id,  
                    'moncod_id' =>$mone,
                    'pvnped'=>$pedido->pvnped,                          
                    'vtfedc' =>$fecha,
                    'vtnfecn' =>$fechac,
                    'concod_id' =>$request->concod_id,
                    'vtpjds' =>$request->vtpjds,
                    'mimpcd_id' => $mim,
                    'mdccvc' =>$clave,
                    'vtccim' =>$ccim,
                    'mimcvc' =>$cvc,
                    'mclvcc' =>$clien,
                    'vtpcon' =>$request->mes,
                    'vtacon' =>$request->anno,
                    'vtcccli'=>$clien2
                ]); 




           } catch(\Illuminate\Database\QueryException $e){
                $tt = $e->errorInfo[1];


                if ($e instanceof\PDOException) {                   

                switch ($tt) {
                    case 1452:
                    Session::flash('message', 'Error ');
                    return Redirect::to('/venta/create');
                    break;

                }
             }



        }

             $documento->m_mtsv()->attach($attach);  

        Session::flash('message', 'Documento creado correctamente');
        return Redirect::to('/venta'); 


 }    

Sale Model:

<?php namespace SIA;

use Illuminate\Database\Eloquent\Model;
use DB;

class VT_DOC extends Model {

protected $table = 'vt_doc';

protected $primaryKey='vtnrin';
public $timestamps=false;
protected $fillable = [columnas,columnas,etc.]; 

  public function m_mtsv(){
        return $this->belongsToMany('SIA\M_MTSV',
'mmtsv_vtdoc','vtnrin','mmscod_id','mmsnam','vtcanp','vtprep','vtccin')-    >withPivot('mmscod_id','vtcanp','vtprep');
 }
}

Pivot table migration

<?php

  use Illuminate\Database\Schema\Blueprint;
  use Illuminate\Database\Migrations\Migration;

  class CreateM_mtsvVt_docPivotTable extends Migration
 {
  /**
   * Run the migrations.
   *
   * @return void
   */
   public function up()
   {
    Schema::create('m_mtsv_vt_doc', function (Blueprint $table) {
        $table->integer('mmscod_id')->unsigned()->index();
        $table->foreign('mmscod_id')->references('id')->on('m_mtsv')-       >onDelete('cascade');
        $table->integer('vtnrin')->unsigned()->index();
        $table->foreign('vtnrin')->references('vtnrin')->on('vt_doc')->onDelete('cascade');
       $table->decimal('vtcanp',8,0)->unsigned();
        $table->double('vtprep',10,2)->unsigned();

    });
  }

/**
 * Reverse the migrations.
 *
 * @return void
 */
 public function down()
 {
    Schema::drop('m_mtsv_vt_doc');
 }
}

view code

<h2> Documento venta Prueba</h2> <br/>

  <div class="panel panel-default">

            <div class="panel-body">

                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="sociedad" class="control-label">Sociedad</label>

                        <input type="hidden" name="hidden" id="hidden">
                        <input type="hidden" name="mes" id="mes">
                        <input type="hidden" name="anno" id="anno"> 
                        </div>
                    </div>
                    <div class="col-md-4">                          
                        <div class="form-group">

                                {!!Form::select('msocod_id',['' => '- Seleccione una sociedad -'] +$soci,null, ['class' => 'form-control','id'=>'msocod_id', 'name'=>'msocod_id'])!!}   

                        </div>

                    </div>
                    <div class="col-md-2">
                        <div class="form-group">                                    

                        </div>
                    </div>
                    <div class="col-md-2">
                        <div class="form-group">
                            <label for="fecha" class="control-label">Nº Documento</label>

                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">                                
                            {!!Form::text('vtndoc', null,['class'=>'form-control', 'placeholder'=>'ingrese num'])!!}    
                        </div>
                    </div>
                </div>

                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="socio" class="control-label">Cliente</label>

                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                                {!!Form::select('mclcod_id',['' => '- Seleccione un cliente -'] +$cli,null, ['class' => 'form-control'])!!} 
                        </div>
                    </div>                  
                </div>

                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="colonia" class="control-label">Sucursal</label>&nbsp;

                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group" id="sucu">
                            {!!Form::select('msucod_id',['' => '- Seleccione una sucursal -'] +$sucu,null, ['class' => 'form-control'])!!}  
                        </div>
                    </div>                      
                </div>
                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="tipo" class="control-label">Tipo venta</label>

                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                                {!!Form::select('tvtcod_id',['' => '- Seleccione una sucursal -'] +$tventa,null, ['class' => 'form-control'])!!}    
                        </div>
                    </div>                                          
                </div>
                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="tipo" class="control-label">Clase Docto</label>

                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                                {!!Form::select('mdccod_id',['' => '- Seleccione una clase -'] +$doc,null, ['class' => 'form-control', 'id'=> 'mdccod_id', 'name'=>'mdccod_id'])!!} 
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">



                        </div>
                    </div>
                    <div class="col-md-1">
                        <div class="form-group">


                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">


                        </div>
                    </div>                                          
                </div>
                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="tipo" class="control-label">Fecha Docto</label>

                        </div>
                    </div>
                    <div class="col-md-3" width="20%">
                        <div class="form-group">
                                <!--{!!Form::date('vtfedc', null,['class'=>'form-control'])!!}  -->
                                {!!Form::text('vtfedc', null, ['class'=>'form-control', 'id' => 'vtfedc','name'=>'vtfedc' ,'placeholder'=>'dd-mm-aaaa','data-error'=> 'Please enter name field.'])!!}
                        </div>
                    </div>
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="tipo" class="control-label">Fecha Docto</label>                 
                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">
                                <!--{!!Form::date('vtnfecn', null,['class'=>'form-control'])!!}-->  
                                {!!Form::text('vtnfecn', null, ['class'=>'form-control', 'id' => 'vtnfecn','name'=>'vtnfecn', 'placeholder'=>'dd-mm-aaaa'])!!}                      
                        </div>
                    </div>
                    <!--
                    <div class="col-md-1">
                        <div class="form-group">


                        </div>
                    </div>
                -->
                    <div class="col-md-1">
                        <div class="form-group">

                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">


                        </div>
                    </div>                                          
                </div>              
                <div class="row">
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="tipo" class="control-label">Condición pago</label>

                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">
                                {!!Form::select('concod_id',['' => '- Seleccione una condicion -'] +$condi,null, ['class' => 'form-control'])!!}    
                        </div>
                    </div>  
                    <div class="col-md-4">
                        <div class="form-group">                                    

                        </div>
                    </div>
                    <div class="col-md-1">
                        <div class="form-group">
                            <label for="fecha" class="control-label">% Descuento</label>

                        </div>
                    </div>
                    <div class="col-md-3">
                        <div class="form-group">                                
                            {!!Form::text('vtpjds', null,['class'=>'form-control', 'placeholder'=>'ingrese num', 'id' => 'vtpjds', 'name' => 'vtpjds'])!!}  
                        </div>
                    </div>
                </div>


                <hr>
                <div class="row">
                    <div class="col-md-12" id="columna">
                        <table class="table table-hover table-condensed responsive" id="tabla">
                            <thead>
                                <tr><th></th>                                   
                                    <th>Codigo Art./servicios</th>
                                    <th>Descricpión Art./servicios</th>
                                    <th>Cantidad</th>
                                    <th>Precio</th>
                                    <th>Valor neto</th>                                     
                                </tr>
                            </thead>
                            <tbody id="tbo">
                                <tr id="tr_1">
                                    <td width="4%" class="text-center"><a id="eliminarLinea"  ><i class="fa fa-minus-circle"></i></a>
                                    </td>                           
                                    <td width="23%">
                                        {!!Form::select('mmscod_id[]',['' => '- Seleccione un material -'] +$mat,null, ['class' => 'form-control', 'id'=>'mmscod_id'])!!}
                                    </td>
                                    <td width="20%">
                                        {!!Form::text('descripcion',null, ['class' =>'form-control','id'=>'descripcion' ,'disabled'=>'disabled'])!!}
                                    </td>
                                    <td width="17%">
                                        <input type="text" class="form-control" id="cantidad" name="vtcanp[]"/> 

                                    </td>
                                    <td width="17%">
                                        <input type="text" class="form-control" id="precio" name="vtprep[]"/>

                                    </td>
                                    <td width="22%">
                                        {!!Form::text('condes', null,['class'=>'form-control', 'id'=>'valorn', 'name'=>'valorn', 'disabled'=>'disabled'])!!}                                            
                                    </td>                       
                                </tr>
                            </tbody>                                
                        </table>

                        <a  class="btn btn-primary" id="addRow"><i class="entypo-plus"></i>Agregar linea</a>
                    </div>

                </div>
                <hr>
                <div class="row">
                    <div class="col-md-12">
                        <table class="table table-hover table-condensed" id="tabla">
                            <thead>
                                <tr>

                                    <th>Total neto</th>
                                    <th>Valor descuento</th>
                                    <th>Monto neto</th>
                                    <th>IVA</th>
                                    <th>Monto total</th>                                        
                                </tr>
                            </thead>
                            <tbody>
                                <tr id="tr1">

                                    <td width="20%"><input type="text" class="form-control total" id="total" name="total"></td>
                                    <td width="25%"><input type="text" class="form-control" id="vadesc" name="vadesc" onkeyup="articulo(this);" ></td>
                                    <td width="20%"><input type="text" class="form-control" id="neto" name="neto" ></td>
                                    <td width="20%"><input type="text" class="form-control" id="iva" name="iva" value="" ></td>
                                    <td width="20%"><input type="text" class="form-control" id="montotal" name="montotal" onkeyup="importe(this);" ></td>

                                </tr>
                            </tbody>
                        </table>

                    </div>
                    </div>
                </div>                  
                <div class="row">
                    <div class="col-md-9"></div>
                    <div class="col-md-3">
                                                        <button type="submit" class="btn btn-success btn-lg btn-block btn-icon">Generar / Guardar<i class="entypo-check"></i></button>

                                                </div>  
                </div>  
            </div>      
        </div>
    </div>
</div>
            <br />

        </div>  
    </div>

    
asked by Andrés Gómez Vega 14.09.2016 в 04:53
source

0 answers