/// <summary>
        /// Populate business objects from the data reader
        /// </summary>
        /// <param name="dataReader">data reader</param>
        /// <returns>list of CRecep_sample_detail</returns>
        internal List <CRecep_sample_detail> PopulateObjectsFromReader(IDataReader dataReader)
        {
            List <CRecep_sample_detail> list = new List <CRecep_sample_detail>();

            while (dataReader.Read())
            {
                CRecep_sample_detail businessObject = new CRecep_sample_detail();
                PopulateBusinessObjectFromReader(businessObject, dataReader);
                list.Add(businessObject);
            }
            return(list);
        }
        /// <summary>
        /// Select by primary key
        /// </summary>
        /// <param name="keys">primary keys</param>
        /// <returns>CRecep_sample_detail business object</returns>
        public CRecep_sample_detail SelectByPrimaryKey(CRecep_sample_detailKeys keys)
        {
            NpgsqlCommand sqlCommand = new NpgsqlCommand();

            sqlCommand.CommandText = "public.sp_recep_sample_detail_SelectByPrimaryKey";
            sqlCommand.CommandType = CommandType.StoredProcedure;

            // Use connection object of base class
            sqlCommand.Connection = MainConnection;

            try
            {
                sqlCommand.Parameters.Add(new NpgsqlParameter("p_idrecep_sample_detail", NpgsqlDbType.Bigint, 8, "", ParameterDirection.Input, false, 0, 0, DataRowVersion.Proposed, keys.Idrecep_sample_detail));


                MainConnection.Open();

                NpgsqlDataReader dataReader = sqlCommand.ExecuteReader();

                if (dataReader.Read())
                {
                    CRecep_sample_detail businessObject = new CRecep_sample_detail();

                    PopulateBusinessObjectFromReader(businessObject, dataReader);

                    return(businessObject);
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("CRecep_sample_detail::SelectByPrimaryKey::Error occured.", ex);
            }
            finally
            {
                MainConnection.Close();
                sqlCommand.Dispose();
            }
        }
示例#3
0
        bool SaveRegisterReception()
        {
            bool result = false;
            object obj = deHourReception.EditValue;

            try
            {
                #region save head

                if (oRecep_sample == null)
                    oRecep_sample = new CRecep_sample();
                else
                {
                    if (loadData == LoadData.FromRR_ToExtendRR)
                        oRecep_sample.Idrecep_sample = 0;
                }

                CPersonFactory faPerson = new CPersonFactory();
                Reception oReception = new BusinessLayer.Modules.Reception();

                // --- save company
                bool result_company = false;

                CCompany oCompany = new CCompany();

                if (cbCompany.EditValue != null)
                {
                    CCorr_modulesFactory faCorr_modules = new CCorr_modulesFactory();
                    CCompanyFactory faCompany = new CCompanyFactory();

                    oCompany.Idcompany = Convert.ToInt16(cbCompany.EditValue);
                    //oCompany.Cod_company = faCorr_modules.GetCorrModule(Comun.Formulario.fmEmpresa.ToString());
                    oCompany.Ruc = tbClientRuc.Text;
                    oCompany.Business_name = cbCompany.Text;
                    oCompany.Domicile = tbClientDomicile.Text;
                    oCompany.Type_company = 'C'; // --- client
                    oCompany.Phone_client = tbClientPhone.Text;

                    if (!(result_company = faCompany.Update(oCompany)))
                        result_company = faCompany.Insert(oCompany);
                }

                // --- save head
                if (!result_company)
                {
                    ComunForm.Send_message(this.Text, TypeMsg.error, "Error al guardar cliente, no se pudo completar la operación.");
                    return false;
                }

                bool result_recep_sample = false;

                oReception.GetNewCodReception();

                oRecep_sample.Cod_recep_sample = oReception.GetFormatCodReception();
                oRecep_sample.Idcompany = oCompany.Idcompany;
                oRecep_sample.Date_reception = deReception.DateTime;

                DateTime Hour_reception = Convert.ToDateTime(deHourReception.EditValue);

                oRecep_sample.Date_reception = new DateTime(
                    deReception.DateTime.Year, deReception.DateTime.Month, deReception.DateTime.Day,
                    Hour_reception.Hour, Hour_reception.Minute, Hour_reception.Second);

                DateTime Hour_result = Convert.ToDateTime(deHourResult.EditValue);

                oRecep_sample.Date_result = new DateTime(
                    deResult.DateTime.Year, deResult.DateTime.Month, deResult.DateTime.Day,
                    Hour_result.Hour, Hour_result.Minute, Hour_result.Second);

                oRecep_sample.Cod_type_sample = cbTypeSample.EditValue.ToString();
                oRecep_sample.Total_amount = Convert.ToDecimal(tbSubTotalAmount.Text);
                oRecep_sample.Total_igv = Convert.ToDecimal(tbTotalIgv.Text);
                oRecep_sample.Total_amount_igv = Convert.ToDecimal(tbTotalAmount.Text);
                oRecep_sample.Amortization = Convert.ToDecimal(tbAmortization.Text);
                oRecep_sample.Flag_isprice = false;
                //oRecep_sample.Discount = ckDiscount.Checked == true ? tbDiscount.Value : 0;

                if (oRecep_sample.Idrecep_sample == 0)
                {
                    oRecep_sample.Usernew = Comun.GetUser();
                    oRecep_sample.Datenew = Comun.GetDate();
                }
                oRecep_sample.Useredit = Comun.GetUser();
                oRecep_sample.Dateedit = Comun.GetDate();

                if (!(result_recep_sample = faRecep_sample.Update(oRecep_sample)))
                    result_recep_sample = faRecep_sample.Insert(oRecep_sample);

                if (!result_recep_sample)
                {
                    ComunForm.Send_message(this.Text, TypeMsg.error, "Error al guardar datos en recepción, no se pudo completar la operación.");
                    return false;
                }

                #endregion

                #region update price

                if (result_recep_sample && oPrice_version != null && oPrice_version.Idprice_version > 0)
                {
                    oPrice_version.Status_price = 4;
                    faPrice_version.Update(oPrice_version);
                }

                #endregion

                #region save detail

                // --- contacts and detail
                if (result_recep_sample)
                {
                    // --- save contacts
                    CPerson oContact = new CPerson();
                    CRecep_company_person oRecep_company_person = new CRecep_company_person();
                    CRecep_company_personFactory faRecep_company_person = new CRecep_company_personFactory();

                    // --- delete all
                    tbCod_recep_sample.Text = oReception.GetFormatCodReception();

                    oReception.SetDisabledContact(oRecep_sample.Idrecep_sample);

                    for (int i = 0; i < gvContact.RowCount; i++)
                    {
                        oContact.Idperson = Convert.ToInt16(gvContact.GetRowCellValue(i, gcCon_Idperson));
                        oContact.Phone = gvContact.GetRowCellValue(i, gcCon_Phone).ToString();
                        oContact.Cellphone = gvContact.GetRowCellValue(i, gcCon_Cellphone).ToString();
                        oContact.Mail = gvContact.GetRowCellValue(i, gcCon_Mail).ToString();
                        oContact.Allname = gvContact.GetRowCellValue(i, gcCon_Allname).ToString();

                        bool result_contact = false;
                        if (!(result_contact = faPerson.Update(oContact)))
                            result_contact = faPerson.Insert(oContact);

                        if (result_contact)
                        {
                            oRecep_company_person = new CRecep_company_person();

                            oRecep_company_person.Idrecep_company_person = 0;
                            oRecep_company_person.Idcompany = oCompany.Idcompany;
                            oRecep_company_person.Idrecep_sample = oRecep_sample.Idrecep_sample;
                            oRecep_company_person.Idperson = oContact.Idperson;
                            oRecep_company_person.Person_type = Convert.ToInt16(gvContact.GetRowCellValue(i, gcCon_Person_type));
                            oRecep_company_person.Enabled_show = true;

                            if (!faRecep_company_person.Update(oRecep_company_person))
                                faRecep_company_person.Insert(oRecep_company_person);
                        }
                    }

                    // --- save dispatch
                    CRecep_sample_dispatchFactory faRecep_sample_dispatch = new CRecep_sample_dispatchFactory();
                    CRecep_sample_dispatch oRecep_sample_dispatch = new CRecep_sample_dispatch();
                    oRecep_sample_dispatch.Idrecep_sample = oRecep_sample.Idrecep_sample;
                    // --- person
                    if (ckDispatchPerson.Checked)
                        oRecep_sample_dispatch.Dispatch_person = 1;
                    else
                        oRecep_sample_dispatch.Dispatch_person = 0;
                    // --- curier
                    if (ckDispatchCurier.Checked)
                        oRecep_sample_dispatch.Dispatch_curier = 1;
                    else
                        oRecep_sample_dispatch.Dispatch_curier = 0;
                    // --- transport
                    if (ckDispatchTransport.Checked)
                        oRecep_sample_dispatch.Dispatch_transport = 1;
                    else
                        oRecep_sample_dispatch.Dispatch_transport = 0;
                    // --- fax
                    if (ckDispatchFax.Checked)
                        oRecep_sample_dispatch.Dispatch_fax = 1;
                    else
                        oRecep_sample_dispatch.Dispatch_fax = 0;
                    // --- save
                    if (!faRecep_sample_dispatch.Update(oRecep_sample_dispatch))
                        faRecep_sample_dispatch.Insert(oRecep_sample_dispatch);

                    // ---------------------------------------------------------------------------
                    // --- save detail -----------------------------------------------------------
                    // ---------------------------------------------------------------------------
                    CRecep_sample_detail oRecep_sample_detail = new CRecep_sample_detail();
                    CRecep_sample_detailFactory faRecep_sample_detail = new CRecep_sample_detailFactory();

                    CRecep_elem oRecep_elem = new CRecep_elem();
                    CRecep_elemFactory faRecep_elem = new CRecep_elemFactory();

                    CRecep_sample_detail_elem oRecep_sample_detail_elem = new CRecep_sample_detail_elem();
                    CRecep_sample_detail_elemFactory faRecep_sample_detail_elem = new CRecep_sample_detail_elemFactory();

                    CCorrelative oCorrelative = new CCorrelativeFactory().GetByPrimaryKey(new CCorrelativeKeys(oRecep_sample.Cod_type_sample));

                    if (oRecep_sample.Idrecep_sample > 0)
                    {
                        int i = 0;
                        while (i < gvReception.RowCount)
                        {
                            oRecep_sample_detail = new CRecep_sample_detail();
                            oRecep_sample_detail.Idrecep_sample = oRecep_sample.Idrecep_sample;
                            //if (gvReception.GetRowCellValue(i, gcRec_idrecep_sample_detail) != DBNull.Value)
                                //oRecep_sample_detail.Idrecep_sample_detail = Convert.ToInt64(gvReception.GetRowCellValue(i, gcRec_idrecep_sample_detail));
                            oRecep_sample_detail.Idrecep_sample_detail = 0;
                            oRecep_sample_detail.Order_sample = Convert.ToInt16(gvReception.GetRowCellValue(i, gcRec_OrderSample));
                            oRecep_sample_detail.Name_sample = gvReception.GetRowCellValue(i, gcRec_NameSample).ToString();
                            oRecep_sample_detail.Procedence = gvReception.GetRowCellValue(i, gcRec_Procedence).ToString();
                            oRecep_sample_detail.Cod_des_sample = gvReception.GetRowCellValue(i, gcRec_Description).ToString();
                            oRecep_sample_detail.Cod_type_sample = gvReception.GetRowCellValue(i, gcRec_Type_Sample).ToString();
                            oRecep_sample_detail.Cod_sample = gvReception.GetRowCellValue(i, gcRec_Code).ToString();
                            oRecep_sample_detail.Amount_weight = Convert.ToDecimal(gvReception.GetRowCellValue(i, gcRec_CantKg));
                            oRecep_sample_detail.Cost_sample = Convert.ToDecimal(gvReception.GetRowCellValue(i, gcRec_Cost));
                            oRecep_sample_detail.Flag_envelope_sealed = Convert.ToBoolean(gvReception.GetRowCellValue(i, gcRec_Flag_envelope_sealed));
                            oRecep_sample_detail.Flag_reject = Convert.ToBoolean(gvReception.GetRowCellValue(i, gcRec_Reject));
                            oRecep_sample_detail.Flag_counter_sample = Convert.ToInt16(gvReception.GetRowCellValue(i, gcRec_Counter_Sample));
                            oRecep_sample_detail.Analisys_time = Convert.ToInt16(gvReception.GetRowCellValue(i, gcRec_Days));

                            bool result_detail_elem = false;

                            bool result_recep_sample_detail = false;

                            if (!(result_recep_sample_detail = faRecep_sample_detail.Update(oRecep_sample_detail)))
                                result_recep_sample_detail = faRecep_sample_detail.Insert(oRecep_sample_detail);

                            if (result_recep_sample_detail)
                            {
                                if (FlagRegRecepCopy)
                                {
                                    oRecep_sample_detail.Cod_interno = Convert.ToInt64(gvReception.GetRowCellValue(i, gcRec_Cod_interno));
                                    oRecep_sample_detail.Cod_sample = gvReception.GetRowCellValue(i, gcRec_Code).ToString();
                                    oRecep_sample_detail.Flag_control_sample = false;
                                }
                                else
                                {
                                    // assign correlative code
                                    long Cod_interno = oReception.GetNewCodInternoSample(gvReception.GetRowCellValue(i, gcRec_Type_Sample).ToString());
                                    string Format_cod_interno = oReception.GetFormatCodInternoSample(gvReception.GetRowCellValue(i, gcRec_Type_Sample).ToString());

                                    oRecep_sample_detail.Cod_interno = Cod_interno;
                                    oRecep_sample_detail.Cod_sample = Format_cod_interno;
                                    oRecep_sample_detail.Flag_control_sample = false;
                                }

                                faRecep_sample_detail.Update(oRecep_sample_detail);

                                #region save element cell repetition

                                CRecep_sample_detail oRecep_sample_aux = faRecep_sample_detail.GetByPrimaryKey(new CRecep_sample_detailKeys(oRecep_sample_detail.Idrecep_sample_detail));
                                CSettings oSettings = new CSettings();
                                bool HasHumidityAnalysis = false;
                                bool Has60GradesElement = false;

                                // --- retrieve code sample and assign
                                if (!Convert.ToBoolean(oRecep_sample_detail.Flag_control_sample))
                                    gvReception.SetRowCellValue(i, gcRec_Code, oRecep_sample_aux.Cod_sample);

                                // --- save element cell
                                foreach (KeyValuePair<DevExpress.XtraGrid.Columns.GridColumn, bool> kvp in DicShowColumns)
                                {
                                    if (kvp.Value)
                                    {
                                        bool value_check = Convert.ToBoolean(gvReception.GetRowCellValue(i, kvp.Key));
                                        bool flag_control_sample = Convert.ToBoolean(oRecep_sample_detail.Flag_control_sample);

                                        if ((!flag_control_sample && value_check)
                                            || flag_control_sample)
                                        {
                                            oRecep_sample_detail_elem = new CRecep_sample_detail_elem();

                                            CTagInfoMethod tagMethod = (CTagInfoMethod)kvp.Key.Tag;
                                            oRecep_sample_detail_elem.Idelement = tagMethod.IDElement;
                                            oRecep_sample_detail_elem.Idrecep_sample = oRecep_sample.Idrecep_sample;
                                            oRecep_sample_detail_elem.Idrecep_sample_detail = oRecep_sample_detail.Idrecep_sample_detail;
                                            oRecep_sample_detail_elem.Idtemplate_method = tagMethod.IDTemplate_method;
                                            oRecep_sample_detail_elem.Idcompany = oRecep_sample.Idcompany;
                                            oRecep_sample_detail_elem.Idunit = tagMethod.IDMeasurement_Unit;
                                            oRecep_sample_detail_elem.Cost_method = tagMethod.Cost_Method;

                                            if (!(result_detail_elem = faRecep_sample_detail_elem.Update(oRecep_sample_detail_elem)))
                                                result_detail_elem = faRecep_sample_detail_elem.Insert(oRecep_sample_detail_elem);

                                            if (result_detail_elem)
                                            {
                                                // crear bandejas
                                                CBatchManager oBatchManager = new CBatchManager();
                                                oBatchManager.CallSaveSampleBatch(
                                                    Convert.ToInt32(oRecep_sample_detail_elem.Idtemplate_method),
                                                    Convert.ToInt64(oRecep_sample_detail_elem.Idrecep_sample),
                                                    Convert.ToInt64(oRecep_sample_detail_elem.Idrecep_sample_detail),
                                                    oRecep_sample_detail_elem.Idrecep_sample_detail_elem,
                                                    Convert.ToInt64(oRecep_sample_detail.Cod_interno),
                                                    oRecep_sample_detail.Cod_sample,
                                                    Comun.GetUser(),
                                                    oCorrelative);

                                                // enviar a preparación de muestras

                                            }

                                            //verificar si tiene análisis por humedad
                                            if (oSettings.GetIdHumidityAnalysis().Contains(tagMethod.IDElement.ToString()))
                                                HasHumidityAnalysis = true;

                                            //verificar si tiene que elementos para ser analizados a 60°
                                            if (oSettings.GetIDElements60Grades().Contains(tagMethod.IDElement.ToString()))
                                                Has60GradesElement = true;
                                        }
                                    }
                                }
                                #endregion

                                #region save sample preparation

                                CPrep_samples oPrep_samples = new CPrep_samples();
                                oPrep_samples.Idrecep_sample_detail = oRecep_sample_detail.Idrecep_sample_detail;
                                oPrep_samples.Flag_counter_sample = oRecep_sample_detail.Flag_counter_sample;
                                oPrep_samples.Flag_reject = oRecep_sample_detail.Flag_reject;
                                oPrep_samples.Flag_humidity_analysis = HasHumidityAnalysis;
                                oPrep_samples.Flag_60celsius = Has60GradesElement;
                                oPrep_samples.Date_creation = Comun.GetDate();
                                oPrep_samples.Moisture_reject = false;
                                oPrep_samples.Final_moisture = 0;
                                oPrep_samples.Final_reject = 0;
                                oPrep_samples.Final_sample_prepared = 0;
                                oPrep_samples.Final_weight_gross = 0;
                                oPrep_samples.Output_flag_sample = false;
                                oPrep_samples.Output_flag_cs = false;
                                oPrep_samples.Output_flag_re = false;

                                CPrep_samplesFactory faPrep_samples = new CPrep_samplesFactory();
                                if (!faPrep_samples.Update(oPrep_samples))
                                    faPrep_samples.Insert(oPrep_samples);

                                #endregion
                            }

                            if (!Convert.ToBoolean(oRecep_sample_detail.Flag_control_sample))
                                i++;
                        }
                    }

                    #region save tag infor method

                    // --- save tag info method (mr or blk)
                    foreach (KeyValuePair<DevExpress.XtraGrid.Columns.GridColumn, bool> kvp in DicShowColumns)
                    {
                        if (kvp.Value)
                        {
                            CTagInfoMethod tagMethod = (CTagInfoMethod)kvp.Key.Tag;
                            oRecep_elem = new CRecep_elem();
                            oRecep_elem.Idelement = tagMethod.IDElement;
                            oRecep_elem.Idrecep_sample = oRecep_sample.Idrecep_sample;
                            oRecep_elem.Idtemplate_method = tagMethod.IDTemplate_method;
                            oRecep_elem.Name_unit = tagMethod.Name_Measurement_Unit;
                            oRecep_elem.Idunit = tagMethod.IDMeasurement_Unit;
                            oRecep_elem.Percent_repetition = tagMethod.Percent_repetition;

                            if (!faRecep_elem.Update(oRecep_elem))
                                faRecep_elem.Insert(oRecep_elem);
                        }
                    }

                    #endregion
                }

                #endregion

                result = true;
            }
            catch (Exception ex)
            {
                Comun.Save_log(ex.Message);
                if (ex.InnerException != null)
                    Comun.Save_log(ex.InnerException.ToString());
                return false;
            }
            return result;
        }
示例#4
0
        void RetrieveRegisterReception()
        {
            // --- return date of recep_sample
            DicCellsSavedReport.Clear();
            DicCellsSaveProgram.Clear();

            Reception oReception = new Reception();

            if (oRecep_sample != null)
            {
                tpRightReports.PageVisible = true;
                tpRightAttach.PageVisible = true;
                tpRightProgram.PageVisible = true;

                txIdrecep_sample.Text = oRecep_sample.Idrecep_sample.ToString();
                statusRegReception = StatusRegRecep.reg_recep_saved;
                tbCod_recep_sample.Text = oRecep_sample.Cod_recep_sample;
                deReception.DateTime = Convert.ToDateTime(oRecep_sample.Date_reception);
                deHourReception.EditValue = Convert.ToDateTime(oRecep_sample.Date_reception);
                deResult.DateTime = Convert.ToDateTime(oRecep_sample.Date_result);
                deHourResult.EditValue = Convert.ToDateTime(oRecep_sample.Date_result);
                cbTypeSample.EditValue = oRecep_sample.Cod_type_sample;

                tbNumDays.Value = Convert.ToDecimal(Convert.ToDateTime(oRecep_sample.Date_result).Subtract(Convert.ToDateTime(oRecep_sample.Date_reception)).TotalDays);

                tbSubTotalAmount.Text = oRecep_sample.Total_amount.ToString();
                tbTotalIgv.Text = oRecep_sample.Total_igv.ToString();
                tbTotalAmount.Text = oRecep_sample.Total_amount_igv.ToString();
                tbAmortization.Text = oRecep_sample.Amortization.ToString();

                if (oRecep_sample.Amortization.Value == 0)
                    tbResidue.BackColor = Color.Coral;

                CCompany oCompany = new CCompanyFactory().GetByPrimaryKey(new CCompanyKeys(Convert.ToInt16(oRecep_sample.Idcompany)));

                // --- retrieve dispatch
                CRecep_sample_dispatch oRecep_sample_dispatch = new CRecep_sample_dispatchFactory().GetByPrimaryKey(new CRecep_sample_dispatchKeys(oRecep_sample.Idrecep_sample));
                if (oRecep_sample_dispatch != null)
                {
                    // --- person
                    if (oRecep_sample_dispatch.Dispatch_person > 0)
                        ckDispatchPerson.Checked = true;
                    else
                        ckDispatchPerson.Checked = false;
                    // --- curier
                    if (oRecep_sample_dispatch.Dispatch_curier > 0)
                        ckDispatchCurier.Checked = true;
                    else
                        ckDispatchCurier.Checked = false;
                    // --- transport
                    if (oRecep_sample_dispatch.Dispatch_transport > 0)
                        ckDispatchTransport.Checked = true;
                    else
                        ckDispatchTransport.Checked = false;
                    // --- fax
                    if (oRecep_sample_dispatch.Dispatch_fax > 0)
                        ckDispatchFax.Checked = true;
                    else
                        ckDispatchFax.Checked = false;
                }
                else
                {
                    ckDispatchPerson.Checked = false;
                    ckDispatchCurier.Checked = true;
                    ckDispatchTransport.Checked = false;
                    ckDispatchFax.Checked = false;
                }

                // --- return date of client
                if (oCompany != null)
                {
                    IDCompany = oCompany.Idcompany;
                    cbCompany.EditValue = oCompany.Idcompany;
                    tbClientRuc.Text = oCompany.Ruc;
                    tbClientPhone.Text = oCompany.Phone_client;
                    tbClientDomicile.Text = oCompany.Domicile;

                    // --- get contacts
                    gcContact.DataSource = new BindingList<CContact>(oReception.GetLstContactsByRecep(oRecep_sample.Idrecep_sample));

                    // --- return recep_sample_detail
                    CRecep_sample_detail oRecep_sample_detail = new CRecep_sample_detail();
                    CRecep_sample_detailFactory faRecep_sample_detail = new CRecep_sample_detailFactory();

                    DTReceptionDetail = oReception.GetReceptionDetail(oRecep_sample.Idrecep_sample);
                    gcReception.DataSource = DTReceptionDetail;

                    // --- return columns
                    List<CTemplate_method> lstTemplate_method = oReception.GetReceptionElem(oRecep_sample.Idrecep_sample);

                    // --- modify the dictionary show columns

                    if (loadData != LoadData.FromRR_ToExtendRR)
                    {
                        foreach (CTemplate_method oTemplate_method in lstTemplate_method)
                            AddColumn(oTemplate_method.Cod_template_method);

                        // --- get columns and value cells
                        GetSampleByElems();
                    }

                    // ==================< Retrieve report groups >==============================================
                    gcReport.DataSource = oReception.GetRecep_sample_report(oRecep_sample.Idrecep_sample);
                    CCells_reportedFactory faCells_reported = new CCells_reportedFactory();
                    for (int i = 0; i < gvReport.RowCount; i++)
                    {
                        long idrecep_sample_report = Convert.ToInt64(gvReport.GetRowCellValue(i, gcRep_idrecep_sample_report));
                        short order = Convert.ToInt16(gvReport.GetRowCellValue(i, gcRep_order_report));

                        Color color = dicColorReport[Convert.ToInt16(gvReport.GetRowCellValue(i, gcRep_report_status))];

                        List<CCells_reported> lstRsder = faCells_reported.GetAll().Where(x=> x.Idrecep_sample_report == idrecep_sample_report).ToList();
                        List<CPositionValue> lstPositionValue = new List<CPositionValue>();

                        foreach (CCells_reported item in lstRsder)
                        {
                            if (item.Idrecep_sample_report == idrecep_sample_report)
                            {
                                CPositionValue oPosition = new CPositionValue();
                                oPosition = GetObjectPosition(Convert.ToInt64(item.Idrecep_sample_detail_elem), Convert.ToInt32(item.Idtemplate_method));

                                oPosition.idtemplate_method = Convert.ToInt32(item.Idtemplate_method);
                                oPosition.idrecep_sample_report = Convert.ToInt64(item.Idrecep_sample_report);
                                oPosition.idrecep_sample_detail = Convert.ToInt64(item.Idrecep_sample_detail);
                                oPosition.idrecep_sample_detail_elem = Convert.ToInt64(item.Idrecep_sample_detail_elem);
                                oPosition.idcell_reported = Convert.ToInt64(item.Idcell_reported);

                                if (Convert.ToInt16(gvReport.GetRowCellValue(i, gcRep_type_report)) == 1)
                                    oPosition.color = Partial_report_color;
                                else
                                    oPosition.color = Final_report_color;

                                lstPositionValue.Add(oPosition);
                            }
                        }

                        DicCellsSavedReport.Add(order, lstPositionValue);
                    }

                    // ==================< Unreport data >======================================================
                    GetUnreportData(oRecep_sample.Idrecep_sample);

                    // ==================< Retrieve attach files >==============================================
                    gcAttachFile.DataSource = new BindingList<CDocAttach>(oReception.GetLstDocAttach(oRecep_sample.Idrecep_sample));
                    CCells_attach_fileFactory faCells_attach_file = new CCells_attach_fileFactory();
                    for (int i = 0; i < gvAttachFile.RowCount; i++)
                    {
                        long idrecep_sample_attach = Convert.ToInt64(gvAttachFile.GetRowCellValue(i, gcAtt_Idrecep_sample_attach));
                        short order = Convert.ToInt16(gvAttachFile.GetRowCellValue(i, gcAtt_Order_file));

                        Color color = dicColorAttach[Convert.ToInt16(gvAttachFile.GetRowCellValue(i, gcAtt_Attach_status))];

                        List<CCells_attach_file> lstRsder = oReception.GetLstCellsAttachFile(idrecep_sample_attach);
                        List<CpositionValueAttach> lstPositionValue = new List<CpositionValueAttach>();

                        foreach (CCells_attach_file item in lstRsder)
                        {
                            if (item.Idrecep_sample_attach == idrecep_sample_attach)
                            {
                                CpositionValueAttach oPosition = new CpositionValueAttach();
                                oPosition = GetObjectPositionAttach(Convert.ToInt64(item.Idrecep_sample_detail_elem), Convert.ToInt32(item.Idtemplate_method));
                                oPosition.idrecep_sample_detail_elem = Convert.ToInt64(item.Idrecep_sample_detail_elem);
                                oPosition.idtemplate_method = Convert.ToInt32(item.Idtemplate_method);
                                oPosition.color = color;

                                lstPositionValue.Add(oPosition);
                            }
                        }

                        DicCellsSavedAttach.Add(order, lstPositionValue);
                    }

                    // ==================< Retrieve program >==============================================
                    gcProgram.DataSource = oReception.GetRecep_sample_program(oRecep_sample.Idrecep_sample);
                    CCells_programFactory faCells_program = new CCells_programFactory();

                    for (int i = 0; i < gvProgram.RowCount; i++)
                    {
                        long idrecep_sample_program = Convert.ToInt64(gvProgram.GetRowCellValue(i, gcProg_Idrecep_sample_program));
                        short order = Convert.ToInt16(gvProgram.GetRowCellValue(i, gcProg_Order_report));

                        Color color = Comun.ColorRojo;

                        List<CCells_program> lstProgram = oReception.GetLstCellsProgram(idrecep_sample_program);
                        List<CPositionValueProgram> lstPositionValueProgram = new List<CPositionValueProgram>();

                        foreach (CCells_program item in lstProgram)
                        {
                            if (item.Idrecep_sample_program == idrecep_sample_program)
                            {
                                CPositionValueProgram oPosition = new CPositionValueProgram();
                                oPosition = GetObjectPositionProgram(Convert.ToInt64(item.Idrecep_sample_detail_elem), Convert.ToInt32(item.Idtemplate_method));

                                oPosition.idrecep_sample_program = Convert.ToInt64(item.Idrecep_sample_program);
                                oPosition.idrecep_sample_detail_elem = Convert.ToInt64(item.Idrecep_sample_detail_elem);
                                oPosition.idrecep_sample_detail = Convert.ToInt64(item.Idrecep_sample_detail);
                                oPosition.idtemplate_method = Convert.ToInt32(item.Idtemplate_method);
                                oPosition.color = color;

                                lstPositionValueProgram.Add(oPosition);
                            }
                        }

                        DicCellsSaveProgram.Add(order, lstPositionValueProgram);
                    }

                }
                SortColumnsByCodTemplate();
            }
            else
            {
                ///No existe un registro de recepción, entonces recuperar todo vacio
                // --- hide tappages
                tpRightReports.PageVisible = false;
                tpRightAttach.PageVisible = false;
                tpRightProgram.PageVisible = false;

                // --- return empty report
                CRecep_sample_reportFactory faRecep_sample_report = new CRecep_sample_reportFactory();
                gcReport.DataSource = oReception.GetRecep_sample_report(0);

                // --- return empty attach files
                gcAttachFile.DataSource = new BindingList<CDocAttach>(oReception.GetLstDocAttach(0));

                // --- recuperar contactos
                if (cbCompany.EditValue != null)
                    gcContact.DataSource = new BindingList<CContact>(oReception.GetLstContactsByCompany(Convert.ToInt16(cbCompany.EditValue)));
            }
        }
        /// <summary>
        /// Populate business object from data reader
        /// </summary>
        /// <param name="businessObject">business object</param>
        /// <param name="dataReader">data reader</param>
        internal void PopulateBusinessObjectFromReader(CRecep_sample_detail businessObject, IDataReader dataReader)
        {
            businessObject.Idrecep_sample_detail = dataReader.GetInt64(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Idrecep_sample_detail.ToString()));

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Order_sample.ToString())))
            {
                businessObject.Order_sample = (short?)dataReader.GetInt16(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Order_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_sample.ToString())))
            {
                businessObject.Cod_sample = dataReader.GetString(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Procedence.ToString())))
            {
                businessObject.Procedence = dataReader.GetString(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Procedence.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Name_sample.ToString())))
            {
                businessObject.Name_sample = dataReader.GetString(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Name_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Amount_weight.ToString())))
            {
                businessObject.Amount_weight = dataReader.GetDecimal(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Amount_weight.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_interno.ToString())))
            {
                businessObject.Cod_interno = dataReader.GetInt64(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_interno.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_reject.ToString())))
            {
                businessObject.Flag_reject = dataReader.GetBoolean(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_reject.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cost_sample.ToString())))
            {
                businessObject.Cost_sample = dataReader.GetDecimal(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cost_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Analisys_time.ToString())))
            {
                businessObject.Analisys_time = dataReader.GetDecimal(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Analisys_time.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_control_sample.ToString())))
            {
                businessObject.Flag_control_sample = dataReader.GetBoolean(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_control_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_type_sample.ToString())))
            {
                businessObject.Cod_type_sample = dataReader.GetString(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_type_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_des_sample.ToString())))
            {
                businessObject.Cod_des_sample = dataReader.GetString(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Cod_des_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Idrecep_sample.ToString())))
            {
                businessObject.Idrecep_sample = dataReader.GetInt64(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Idrecep_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_counter_sample.ToString())))
            {
                businessObject.Flag_counter_sample = (short?)dataReader.GetInt16(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_counter_sample.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_envelope_sealed.ToString())))
            {
                businessObject.Flag_envelope_sealed = dataReader.GetBoolean(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Flag_envelope_sealed.ToString()));
            }

            if (!dataReader.IsDBNull(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Des_container.ToString())))
            {
                businessObject.Des_container = dataReader.GetString(dataReader.GetOrdinal(CRecep_sample_detail.CRecep_sample_detailFields.Des_container.ToString()));
            }
        }
        /// <summary>
        /// insert new row in the table
        /// </summary>
        /// <param name="businessObject">business object</param>
        /// <returns>true of successfully insert</returns>
        public bool Insert(CRecep_sample_detail businessObject)
        {
            NpgsqlCommand sqlCommand = new NpgsqlCommand();

            sqlCommand.CommandText = "public.sp_recep_sample_detail_Insert";
            sqlCommand.CommandType = CommandType.StoredProcedure;

            // Use connection object of base class
            sqlCommand.Connection = MainConnection;

            try
            {
                sqlCommand.Parameters.AddWithValue("p_idrecep_sample_detail", businessObject.Idrecep_sample_detail);
                sqlCommand.Parameters["p_idrecep_sample_detail"].NpgsqlDbType = NpgsqlDbType.Bigint;
                sqlCommand.Parameters["p_idrecep_sample_detail"].Direction    = ParameterDirection.InputOutput;

                sqlCommand.Parameters.AddWithValue("p_order_sample", businessObject.Order_sample);
                sqlCommand.Parameters["p_order_sample"].NpgsqlDbType = NpgsqlDbType.Smallint;
                sqlCommand.Parameters.AddWithValue("p_cod_sample", businessObject.Cod_sample);
                sqlCommand.Parameters["p_cod_sample"].NpgsqlDbType = NpgsqlDbType.Varchar;
                sqlCommand.Parameters.AddWithValue("p_procedence", businessObject.Procedence);
                sqlCommand.Parameters["p_procedence"].NpgsqlDbType = NpgsqlDbType.Varchar;
                sqlCommand.Parameters.AddWithValue("p_name_sample", businessObject.Name_sample);
                sqlCommand.Parameters["p_name_sample"].NpgsqlDbType = NpgsqlDbType.Varchar;
                sqlCommand.Parameters.AddWithValue("p_amount_weight", businessObject.Amount_weight);
                sqlCommand.Parameters["p_amount_weight"].NpgsqlDbType = NpgsqlDbType.Numeric;
                sqlCommand.Parameters.AddWithValue("p_cod_interno", businessObject.Cod_interno);
                sqlCommand.Parameters["p_cod_interno"].NpgsqlDbType = NpgsqlDbType.Bigint;
                sqlCommand.Parameters.AddWithValue("p_flag_reject", businessObject.Flag_reject);
                sqlCommand.Parameters["p_flag_reject"].NpgsqlDbType = NpgsqlDbType.Boolean;
                sqlCommand.Parameters.AddWithValue("p_cost_sample", businessObject.Cost_sample);
                sqlCommand.Parameters["p_cost_sample"].NpgsqlDbType = NpgsqlDbType.Numeric;
                sqlCommand.Parameters.AddWithValue("p_analisys_time", businessObject.Analisys_time);
                sqlCommand.Parameters["p_analisys_time"].NpgsqlDbType = NpgsqlDbType.Numeric;
                sqlCommand.Parameters.AddWithValue("p_flag_control_sample", businessObject.Flag_control_sample);
                sqlCommand.Parameters["p_flag_control_sample"].NpgsqlDbType = NpgsqlDbType.Boolean;
                sqlCommand.Parameters.AddWithValue("p_cod_type_sample", businessObject.Cod_type_sample);
                sqlCommand.Parameters["p_cod_type_sample"].NpgsqlDbType = NpgsqlDbType.Varchar;
                sqlCommand.Parameters.AddWithValue("p_cod_des_sample", businessObject.Cod_des_sample);
                sqlCommand.Parameters["p_cod_des_sample"].NpgsqlDbType = NpgsqlDbType.Varchar;
                sqlCommand.Parameters.AddWithValue("p_idrecep_sample", businessObject.Idrecep_sample);
                sqlCommand.Parameters["p_idrecep_sample"].NpgsqlDbType = NpgsqlDbType.Bigint;
                sqlCommand.Parameters.AddWithValue("p_flag_counter_sample", businessObject.Flag_counter_sample);
                sqlCommand.Parameters["p_flag_counter_sample"].NpgsqlDbType = NpgsqlDbType.Smallint;
                sqlCommand.Parameters.AddWithValue("p_flag_envelope_sealed", businessObject.Flag_envelope_sealed);
                sqlCommand.Parameters["p_flag_envelope_sealed"].NpgsqlDbType = NpgsqlDbType.Boolean;
                sqlCommand.Parameters.AddWithValue("p_des_container", businessObject.Des_container);
                sqlCommand.Parameters["p_des_container"].NpgsqlDbType = NpgsqlDbType.Varchar;


                MainConnection.Open();

                sqlCommand.ExecuteNonQuery();
                businessObject.Idrecep_sample_detail = Convert.ToInt64(sqlCommand.Parameters["p_idrecep_sample_detail"].Value);

                return(true);
            }
            catch (Exception ex)
            {
                throw new Exception("CRecep_sample_detail::Insert::Error occured.", ex);
            }
            finally
            {
                MainConnection.Close();
                sqlCommand.Dispose();
            }
        }