Esempio n. 1
0
        public static void FixGPOS(string connectionString, SessionSecurityTicket securityTicket)
        {
            var Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(connectionString);

            Connection.Open();

            var Transaction = Connection.BeginTransaction();

            try
            {
                #region ALL LANGUAGES
                ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query();
                all_languagesQ.Tenant_RefID = securityTicket.TenantID;
                all_languagesQ.IsDeleted    = false;

                var all_languagesL = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();
                #endregion
                var case_ids = ORM_HEC_CAS_Case.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case.Query()
                {
                    Tenant_RefID = securityTicket.TenantID
                }).Where(cas => int.Parse(cas.CaseNumber) >= 10000).Select(cas => cas.HEC_CAS_CaseID).ToArray();
                int i = 1;
                foreach (var case_id in case_ids)
                {
                    var case_details = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435()
                    {
                        CaseID = case_id
                    }, securityTicket).Result;
                    if (case_details != null)
                    {
                        cls_Update_Case_GPOS.Invoke(Connection, Transaction, new P_CAS_UCGPOS_1516()
                        {
                            all_languagesL = all_languagesL,
                            case_id        = case_id,
                            diagnose_id    = case_details.diagnose_id,
                            drug_id        = case_details.drug_id,
                            localization   = case_details.localization,
                            patient_id     = case_details.patient_id
                        }, securityTicket);
                    }
                    Console.Write("\rCase {0} of {1} GPOS updated.                ", i++, case_ids.Length);
                }

                Transaction.Commit();
                Connection.Close();

                Console.WriteLine();
            }
            catch (Exception ex)
            {
                Transaction.Rollback();
                Connection.Close();

                throw new Exception("Something went wrong during GPOS fixing", ex);
            }
        }
Esempio n. 2
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CC_1641 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Guid();

            //Put your code here
            var case_to_cancel = cls_Get_Case_Details_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GCDfCID_1435()
            {
                CaseID = Parameter.case_id
            }, securityTicket).Result;
            returnValue.Result = case_to_cancel.patient_id;

            var drug_order_details = cls_Get_DrugOrderIDs_for_PlannedActionID.Invoke(Connection, Transaction, new P_CAS_GDOIDsfPAID_1243()
            {
                PlannedActionID = case_to_cancel.treatment_planned_action_id
            }, securityTicket).Result;

            var all_languagesQ = new ORM_CMN_Language.Query();
            all_languagesQ.Tenant_RefID = securityTicket.TenantID;
            all_languagesQ.IsDeleted    = false;

            var all_languagesL = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();

            var trigger_accQ = new ORM_USR_Account.Query();
            trigger_accQ.Tenant_RefID  = securityTicket.TenantID;
            trigger_accQ.USR_AccountID = securityTicket.AccountID;
            trigger_accQ.IsDeleted     = false;

            var delete_drug_order    = false;
            var cancel_order         = false;
            var drug_order_header_id = Guid.Empty;

            var trigger_acc = ORM_USR_Account.Query.Search(Connection, Transaction, trigger_accQ).SingleOrDefault();

            var op_planned_action_id = Guid.Empty;

            string previous_status = "";
            var    planned_action  = cls_Get_Treatment_Planned_Action_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GTPAfCID_0946()
            {
                CaseID = Parameter.case_id
            }, securityTicket).Result;

            if (planned_action != null)
            {
                op_planned_action_id = planned_action.planned_action_id;
                var drug_order_ids = cls_Get_DrugOrderIDs_for_PlannedActionID.Invoke(Connection, Transaction, new P_CAS_GDOIDsfPAID_1243()
                {
                    PlannedActionID = planned_action.planned_action_id
                }, securityTicket).Result;
                if (drug_order_ids != null)
                {
                    var ord_drug_order_headerQ = new ORM_ORD_PRC_ProcurementOrder_Header.Query();
                    ord_drug_order_headerQ.Tenant_RefID = securityTicket.TenantID;
                    ord_drug_order_headerQ.IsDeleted    = false;
                    ord_drug_order_headerQ.ORD_PRC_ProcurementOrder_HeaderID = drug_order_ids.ORD_PRC_ProcurementOrder_HeaderID;

                    var ord_drug_order_header = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, ord_drug_order_headerQ).SingleOrDefault();

                    var existing_treatment_planned_action_required_product = ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction_PotentialProcedure_RequiredProduct.Query()
                    {
                        HEC_ACT_PlannedAction_PotentialProcedure_RequiredProductID = drug_order_ids.HEC_ACT_PlannedAction_PotentialProcedure_RequiredProductID
                    }).Single();

                    if (Parameter.cancel_drug_order)
                    {
                        if (ord_drug_order_header != null)
                        {
                            drug_order_header_id = ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;

                            var drug_order_status_latest = ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Status.Query()
                            {
                                ORD_PRC_ProcurementOrder_StatusID = ord_drug_order_header.Current_ProcurementOrderStatus_RefID,
                                Tenant_RefID = securityTicket.TenantID,
                                IsDeleted    = false
                            }).Single();

                            previous_status = cls_Cancel_Drug_Order.Invoke(Connection, Transaction, new P_CAS_CDO_1250()
                            {
                                all_languagesL                = all_languagesL,
                                created_by_bpt                = trigger_acc.BusinessParticipant_RefID,
                                ord_drug_order_header         = ord_drug_order_header,
                                procurement_order_position_id = drug_order_ids.HEC_PRC_ProcurementOrder_PositionID,
                                case_id = Parameter.case_id
                            }, securityTicket).Result.previous_status;

                            delete_drug_order = previous_status == "MO0";
                            cancel_order      = !delete_drug_order && previous_status != "MO9";
                        }
                    }
                }
            }

            if (Parameter.cancel_treatment)
            {
                var treatment_planned_actionQ = new ORM_HEC_ACT_PlannedAction.Query();
                treatment_planned_actionQ.HEC_ACT_PlannedActionID = case_to_cancel.treatment_planned_action_id;
                treatment_planned_actionQ.IsDeleted    = false;
                treatment_planned_actionQ.IsCancelled  = false;
                treatment_planned_actionQ.IsPerformed  = false;
                treatment_planned_actionQ.Tenant_RefID = securityTicket.TenantID;

                var treatment_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, treatment_planned_actionQ).SingleOrDefault();
                if (treatment_planned_action != null)
                {
                    treatment_planned_action.IsCancelled = true;
                    treatment_planned_action.Save(Connection, Transaction);
                }

                var aftercare_planned_actionQ = new ORM_HEC_ACT_PlannedAction.Query();
                aftercare_planned_actionQ.HEC_ACT_PlannedActionID = case_to_cancel.aftercare_planned_action_id;
                aftercare_planned_actionQ.IsDeleted    = false;
                aftercare_planned_actionQ.IsCancelled  = false;
                aftercare_planned_actionQ.IsPerformed  = false;
                aftercare_planned_actionQ.Tenant_RefID = securityTicket.TenantID;

                var aftercare_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, treatment_planned_actionQ).SingleOrDefault();
                if (aftercare_planned_action != null)
                {
                    aftercare_planned_action.IsCancelled = true;
                    aftercare_planned_action.Save(Connection, Transaction);
                }

                var cancelled_caseQ = new ORM_HEC_CAS_Case.Query();
                cancelled_caseQ.HEC_CAS_CaseID = Parameter.case_id;
                cancelled_caseQ.Tenant_RefID   = securityTicket.TenantID;
                cancelled_caseQ.IsDeleted      = false;

                var cancelled_case = ORM_HEC_CAS_Case.Query.Search(Connection, Transaction, cancelled_caseQ).SingleOrDefault();
                if (cancelled_case != null)
                {
                    cls_Withdraw_OCT_or_Send_Email.Invoke(Connection, Transaction, new P_CAS_WOctoSE_0938()
                    {
                        case_id        = Parameter.case_id,
                        op_doctor_id   = case_to_cancel.op_doctor_id,
                        patient_id     = case_to_cancel.patient_id,
                        localization   = case_to_cancel.localization,
                        diagnose_id    = case_to_cancel.diagnose_id,
                        drug_id        = case_to_cancel.drug_id,
                        oct_doctor_id  = case_to_cancel.oct_doctor_id,
                        treatment_date = case_to_cancel.treatment_date
                    }, securityTicket);

                    cancelled_case.IsDeleted = true;
                    cancelled_case.Save(Connection, Transaction);
                }
            }

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guids Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SCME_1741 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guids();
            //Put your code here


            ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query();
            all_languagesQ.Tenant_RefID = securityTicket.TenantID;
            all_languagesQ.IsDeleted    = false;

            var all_languagesL = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();

            var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
            {
                DoctorID = Parameter.treatment_doctor_id
            }, securityTicket).Result.SingleOrDefault();
            var aftercare_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
            {
                DoctorID = Parameter.aftercare_doctor_id
            }, securityTicket).Result.SingleOrDefault();
            var aftercare_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432()
            {
                PracticeID = Parameter.aftercare_doctor_id
            }, securityTicket).Result.FirstOrDefault();
            List <string> aftercare_ids           = new List <string>();
            List <string> withdrawn_aftercare_ids = new List <string>();
            List <string> new_aftercare_ids       = new List <string>();

            ORM_USR_Account treatment_doctor_account = null;
            if (Parameter.treatment_doctor_id != Guid.Empty)
            {
                treatment_doctor_account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query()
                {
                    USR_AccountID = cls_Get_Doctor_AccountID_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDAIDfDID_1549()
                    {
                        DoctorID = Parameter.treatment_doctor_id
                    }, securityTicket).Result.accountID,
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).SingleOrDefault();
            }

            ORM_USR_Account aftercare_doctor_account = null;
            if (Parameter.aftercare_doctor_id != Guid.Empty)
            {
                if (aftercare_doctor_details != null)
                {
                    aftercare_doctor_account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query()
                    {
                        USR_AccountID = cls_Get_Doctor_AccountID_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDAIDfDID_1549()
                        {
                            DoctorID = Parameter.aftercare_doctor_id
                        }, securityTicket).Result.accountID,
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false
                    }).SingleOrDefault();
                }
                else
                {
                    aftercare_doctor_account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query()
                    {
                        USR_AccountID = cls_Get_Practice_AccountID_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPAIDfPID_1351()
                        {
                            PracticeID = Parameter.aftercare_doctor_id
                        }, securityTicket).Result.accountID,
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false
                    }).SingleOrDefault();
                }
            }

            foreach (var case_id in Parameter.case_ids)
            {
                if (treatment_doctor_details != null && Parameter.is_treatment)
                {
                    #region UPDATE TREATMENT DOCTOR
                    var treatment_planned_action_id = cls_Get_Treatment_Planned_Action_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GTPAfCID_0946()
                    {
                        CaseID = case_id
                    }, securityTicket).Result;
                    if (treatment_planned_action_id != null)
                    {
                        var treatment_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query()
                        {
                            HEC_ACT_PlannedActionID = treatment_planned_action_id.planned_action_id,
                            Tenant_RefID            = securityTicket.TenantID,
                            IsDeleted   = false,
                            IsCancelled = false
                        }).SingleOrDefault();

                        if (treatment_planned_action != null)
                        {
                            treatment_planned_action.Modification_Timestamp = DateTime.Now;
                            treatment_planned_action.ToBePerformedBy_BusinessParticipant_RefID = treatment_doctor_account.BusinessParticipant_RefID;

                            treatment_planned_action.Save(Connection, Transaction);
                        }
                    }
                    #endregion
                }

                #region UPDATE AFTERCARE DOCTOR
                if (!string.IsNullOrEmpty(Parameter.aftercare_performed_date) || aftercare_doctor_details != null || aftercare_practice_details != null)
                {
                    var aftercare_planned_action_id = cls_Get_Aftercare_Planned_Action_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GAPAfCID_0959()
                    {
                        CaseID = case_id
                    }, securityTicket).Result;
                    if (aftercare_planned_action_id != null)
                    {
                        aftercare_ids.Add(aftercare_planned_action_id.planned_action_id.ToString());
                        if (aftercare_doctor_details != null || aftercare_practice_details != null)
                        {
                            var aftercare_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query()
                            {
                                HEC_ACT_PlannedActionID = aftercare_planned_action_id.planned_action_id,
                                Tenant_RefID            = securityTicket.TenantID,
                                IsDeleted   = false,
                                IsCancelled = false
                            }).SingleOrDefault();

                            if (aftercare_planned_action != null)
                            {
                                if (aftercare_planned_action.ToBePerformedBy_BusinessParticipant_RefID != Guid.Empty)
                                {
                                    if (aftercare_doctor_account.BusinessParticipant_RefID != aftercare_planned_action.ToBePerformedBy_BusinessParticipant_RefID)
                                    {
                                        bool is_current_aftercare_practice = false;
                                        CAS_GPIDfPBPTID_1336 current_aftercare_practice = null;
                                        var current_aftercare_doctor = cls_Get_PracticeID_for_Doctor_BusinessParticipantID.Invoke(
                                            Connection,
                                            Transaction,
                                            new P_CAS_GPIDfDBPTID_1205()
                                        {
                                            BusinessParticipantID = aftercare_planned_action.ToBePerformedBy_BusinessParticipant_RefID
                                        },
                                            securityTicket).Result;

                                        if (current_aftercare_doctor == null)
                                        {
                                            current_aftercare_practice = cls_Get_PracticeID_for_Practice_BusinessParticipantID.Invoke(Connection, Transaction, new P_CAS_GPIDfPBPTID_1336()
                                            {
                                                BusinessParticipantID = aftercare_planned_action.ToBePerformedBy_BusinessParticipant_RefID
                                            }, securityTicket).Result;
                                            is_current_aftercare_practice = true;
                                        }

                                        var new_aftercare_practice_id     = aftercare_doctor_details != null ? aftercare_doctor_details.practice_id : aftercare_practice_details.practiceID;
                                        var current_aftercare_practice_id = is_current_aftercare_practice ? current_aftercare_practice.practice_id : current_aftercare_doctor.practice_id;

                                        if (new_aftercare_practice_id != current_aftercare_practice_id)
                                        {
                                            aftercare_planned_action.IsCancelled            = true;
                                            aftercare_planned_action.Modification_Timestamp = DateTime.Now;
                                            aftercare_planned_action.Save(Connection, Transaction);

                                            withdrawn_aftercare_ids.Add(aftercare_planned_action.HEC_ACT_PlannedActionID.ToString());

                                            #region NEW AFTERCARE PLANNED ACTION

                                            #region DELETE CURRENT PLANNED ACTION TO CASE
                                            ORM_HEC_CAS_Case_RelevantPlannedAction.Query current_aftercare_action_2_caseQ = new ORM_HEC_CAS_Case_RelevantPlannedAction.Query();
                                            current_aftercare_action_2_caseQ.Case_RefID          = case_id;
                                            current_aftercare_action_2_caseQ.PlannedAction_RefID = aftercare_planned_action_id.planned_action_id;
                                            current_aftercare_action_2_caseQ.Tenant_RefID        = securityTicket.TenantID;
                                            current_aftercare_action_2_caseQ.IsDeleted           = false;

                                            var current_aftercare_action_2_case = ORM_HEC_CAS_Case_RelevantPlannedAction.Query.Search(Connection, Transaction, current_aftercare_action_2_caseQ).SingleOrDefault();
                                            if (current_aftercare_action_2_case != null)
                                            {
                                                current_aftercare_action_2_case.IsDeleted = true;
                                                current_aftercare_action_2_case.Save(Connection, Transaction);
                                            }
                                            #endregion

                                            var new_aftercare_id = cls_Create_Aftercare_Planned_Action.Invoke(Connection, Transaction, new P_CAS_CAPA_1237()
                                            {
                                                aftercare_doctor_practice_id = Parameter.aftercare_doctor_id,
                                                all_languagesL = all_languagesL,
                                                case_id        = case_id,
                                                patient_id     = aftercare_planned_action.Patient_RefID,
                                                practice_id    = Parameter.practice_id,
                                                treatment_date = string.IsNullOrEmpty(Parameter.aftercare_performed_date) ? DateTime.Now : DateTime.ParseExact(Parameter.aftercare_performed_date, "dd.MM.yyyy", new System.Globalization.CultureInfo("de", true))
                                            }, securityTicket).Result;

                                            new_aftercare_ids.Add(new_aftercare_id.ToString());

                                            #endregion NEW AFTERCARE PLANNED ACTION
                                        }
                                        else
                                        {
                                            aftercare_planned_action.Modification_Timestamp = DateTime.Now;
                                            aftercare_planned_action.ToBePerformedBy_BusinessParticipant_RefID = aftercare_doctor_account.BusinessParticipant_RefID;

                                            aftercare_planned_action.Save(Connection, Transaction);
                                        }
                                    }
                                }
                                else
                                {
                                    aftercare_planned_action.Modification_Timestamp = DateTime.Now;
                                    aftercare_planned_action.ToBePerformedBy_BusinessParticipant_RefID = aftercare_doctor_account.BusinessParticipant_RefID;

                                    aftercare_planned_action.Save(Connection, Transaction);
                                }
                            }
                        }
                    }
                    else
                    {
                        var treatment_planned_action_id = cls_Get_Treatment_Planned_Action_for_CaseID.Invoke(Connection, Transaction, new P_CAS_GTPAfCID_0946()
                        {
                            CaseID = case_id
                        }, securityTicket).Result;
                        if (treatment_planned_action_id != null)
                        {
                            var treatment_planned_action = ORM_HEC_ACT_PlannedAction.Query.Search(Connection, Transaction, new ORM_HEC_ACT_PlannedAction.Query()
                            {
                                HEC_ACT_PlannedActionID = treatment_planned_action_id.planned_action_id,
                                Tenant_RefID            = securityTicket.TenantID,
                                IsDeleted   = false,
                                IsCancelled = false
                            }).SingleOrDefault();

                            var result = cls_Create_Aftercare_Planned_Action.Invoke(Connection, Transaction, new P_CAS_CAPA_1237()
                            {
                                aftercare_doctor_practice_id = Parameter.aftercare_doctor_id,
                                all_languagesL = ORM_CMN_Language.Query.Search(Connection, Transaction, new ORM_CMN_Language.Query()
                                {
                                    Tenant_RefID = securityTicket.TenantID, IsDeleted = false
                                }).ToArray(),
                                case_id        = case_id,
                                patient_id     = treatment_planned_action.Patient_RefID,
                                practice_id    = aftercare_doctor_details != null ? aftercare_doctor_details.practice_id : Parameter.aftercare_doctor_id,
                                treatment_date = treatment_planned_action.PlannedFor_Date
                            }, securityTicket);

                            aftercare_ids.Add(result.Result.ToString());
                        }
                    }
                }
                #endregion
            }

            #region UPDATE LAST USED AFTERCARES
            if (aftercare_doctor_details != null || aftercare_practice_details != null)
            {
                var aftercare_name = aftercare_doctor_details == null ? aftercare_practice_details.practice_name :
                                     GenericUtils.GetDoctorName(aftercare_doctor_details);

                var ac_practice_id = aftercare_doctor_details != null ? aftercare_doctor_details.practice_id : aftercare_practice_details.practiceID;

                var last_used_practices_doctors = Get_Practices_and_Doctors.Get_Last_Used_Doctors_Practices(Guid.Empty, securityTicket);
                if (last_used_practices_doctors.Count != 0)
                {
                    last_used_practices_doctors = last_used_practices_doctors.OrderBy(l => l.date_of_use).ToList();
                    var last_used = last_used_practices_doctors.SingleOrDefault(l => l.id.ToLower().Equals(Parameter.aftercare_doctor_id.ToString().ToLower()));
                    if (last_used != null)
                    {
                        last_used.date_of_use = DateTime.Now;
                    }
                    else
                    {
                        Practice_Doctor_Last_Used_Model practice_last_used_model = new Practice_Doctor_Last_Used_Model();
                        practice_last_used_model.id           = Parameter.aftercare_doctor_id.ToString();
                        practice_last_used_model.display_name = aftercare_name;
                        practice_last_used_model.date_of_use  = DateTime.Now;
                        practice_last_used_model.practice_id  = ac_practice_id.ToString();

                        last_used_practices_doctors.Add(practice_last_used_model);
                    }
                }
                else
                {
                    Practice_Doctor_Last_Used_Model practice_last_used_model = new Practice_Doctor_Last_Used_Model();
                    practice_last_used_model.id           = Parameter.aftercare_doctor_id.ToString();
                    practice_last_used_model.display_name = aftercare_name;
                    practice_last_used_model.date_of_use  = DateTime.Now;
                    practice_last_used_model.practice_id  = ac_practice_id.ToString();

                    last_used_practices_doctors.Add(practice_last_used_model);
                }

                Add_New_Practice_Last_Used.Import_Practice_Last_Used_Data_to_ElasticDB(last_used_practices_doctors, securityTicket.TenantID.ToString(), securityTicket.AccountID.ToString());

                last_used_practices_doctors = Get_Practices_and_Doctors.Get_Last_Used_Doctors_Practices(Guid.Empty, securityTicket);

                if (last_used_practices_doctors.Count() > 3)
                {
                    var id_to_delete = last_used_practices_doctors.OrderBy(pd => pd.date_of_use).First().id;
                    Add_New_Practice_Last_Used.Delete_Practice_Last_Used(securityTicket.TenantID.ToString(), "user_" + securityTicket.AccountID.ToString(), id_to_delete);
                }
            }
            #endregion

            returnValue.Result = Parameter.case_ids;
            return(returnValue);

            #endregion UserCode
        }
Esempio n. 4
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5PR_SP_1614 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;
            var languages = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery);

            var product = new ORM_CMN_PRO_Product();

            if (Parameter.ProductID == Guid.Empty)
            {
                #region ORM_CMN_PRO_Product

                product = new ORM_CMN_PRO_Product();
                product.CMN_PRO_ProductID                    = Guid.NewGuid();
                product.ProductITL                           = String.Empty;
                product.IsCustomizable                       = Parameter.IsCustomizable;
                product.IsProduct_Article                    = true;
                product.IsProductAvailableForOrdering        = true;
                product.IsImportedFromExternalCatalog        = false;
                product.IsProductForInternalDistributionOnly = Parameter.IsProductForInternalDistribution;
                if (Parameter.CatalogRefID != null && Parameter.CatalogRefID != Guid.Empty)
                {
                    product.IfImportedFromExternalCatalog_CatalogSubscription_RefID = Parameter.CatalogRefID;
                }
                product.Product_Name        = new Dict(ORM_CMN_PRO_Product.TableName);
                product.Product_Description = new Dict(ORM_CMN_PRO_Product.TableName);

                product.PackageInfo_RefID = Guid.NewGuid();

                product.Creation_Timestamp = DateTime.Now;
                product.Tenant_RefID       = securityTicket.TenantID;
                product.IsDeleted          = Parameter.IsDeleted;



                product.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                product.Load(Connection, Transaction, Parameter.ProductID);
            }
            if (Parameter.Document_ID != null && Parameter.Document_ID != Guid.Empty)
            {
                ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                if (Parameter.DocumentStructureHeaderID == Guid.Empty)
                {
                    structureHeader.Label        = "Product picture";
                    structureHeader.Tenant_RefID = securityTicket.TenantID;
                    structureHeader.Save(Connection, Transaction);
                    product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                }
                ORM_DOC_Structure structure = new ORM_DOC_Structure();
                if (Parameter.DocumentStructureHeaderID == Guid.Empty)
                {
                    structure.Label = "Product picture";
                    structure.Structure_Header_RefID  = structureHeader.DOC_Structure_HeaderID;
                    structure.CreatedBy_Account_RefID = securityTicket.AccountID;
                    structure.Tenant_RefID            = securityTicket.TenantID;
                    structure.Save(Connection, Transaction);
                }
                ORM_DOC_Document document = new ORM_DOC_Document();
                document.DOC_DocumentID = Parameter.Document_ID;
                document.Tenant_RefID   = securityTicket.TenantID;
                document.Save(Connection, Transaction);
                var documentStructureID = structure.DOC_StructureID;
                var assignmentID        = Guid.Empty;
                List <ORM_DOC_Document_2_Structure> existingDocumentStructure = new List <ORM_DOC_Document_2_Structure>();
                if (Parameter.DocumentStructureHeaderID != Guid.Empty)
                {
                    existingDocumentStructure = ORM_DOC_Document_2_Structure.Query.Search(Connection, Transaction, new ORM_DOC_Document_2_Structure.Query()
                    {
                        StructureHeader_RefID = Parameter.DocumentStructureHeaderID
                    });
                }
                ORM_DOC_Document_2_Structure documentStructure = new ORM_DOC_Document_2_Structure();
                if (existingDocumentStructure != null && existingDocumentStructure.Count() > 0)
                {
                    existingDocumentStructure.First().Document_RefID = document.DOC_DocumentID;
                    existingDocumentStructure.First().Save(Connection, Transaction);
                }
                else
                {
                    documentStructure.Document_RefID        = document.DOC_DocumentID;
                    documentStructure.Structure_RefID       = documentStructureID;
                    documentStructure.StructureHeader_RefID = structure.Structure_Header_RefID;
                    documentStructure.Tenant_RefID          = securityTicket.TenantID;
                    documentStructure.Save(Connection, Transaction);
                }
            }

            #region ORM_CMN_PRO_Product

            product.Product_Number = Parameter.ProductNumber;

            foreach (var language in languages)
            {
                product.Product_Name.UpdateEntry(language.CMN_LanguageID, Parameter.ProductName);
                product.Product_Description.UpdateEntry(language.CMN_LanguageID, Parameter.Description);
            }

            product.ProductType_RefID = Guid.Empty;

            product.IsPlaceholderArticle   = Parameter.IsDummy;
            product.IsCustomizable         = Parameter.IsCustomizable;
            product.ProductSuccessor_RefID = Guid.Empty;
            product.IsDeleted = Parameter.IsDeleted;
            product.Save(Connection, Transaction);



            #endregion

            #region Variant
            //Create default varient
            var defaultVarient = new ORM_CMN_PRO_Product_Variant();
            defaultVarient.CMN_PRO_Product_VariantID = Guid.NewGuid();
            defaultVarient.CMN_PRO_Product_RefID     = product.CMN_PRO_ProductID;
            defaultVarient.IsStandardProductVariant  = true;
            defaultVarient.Tenant_RefID = securityTicket.TenantID;
            defaultVarient.VariantName  = new Dict(ORM_CMN_PRO_Product_Variant.TableName);


            foreach (var language in languages)
            {
                defaultVarient.VariantName.UpdateEntry(language.CMN_LanguageID, String.Empty);
            }

            defaultVarient.Save(Connection, Transaction);
            #endregion

            #region Customization
            if (Parameter.IsCustomizable == false && Parameter.ProductID != Guid.Empty)
            {
                var customizations = ORM_CMN_PRO_CUS_Customization.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query()
                {
                    Product_RefID = Parameter.ProductID
                });
                foreach (var customization in customizations)
                {
                    ORM_CMN_PRO_CUS_Customization_Variant.Query.SoftDelete(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization_Variant.Query()
                    {
                        Customization_RefID = customization.CMN_PRO_CUS_CustomizationID
                    });
                }
                ORM_CMN_PRO_CUS_Customization.Query.SoftDelete(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query()
                {
                    Product_RefID = Parameter.ProductID
                });
            }
            #endregion

            returnValue.Result = product.CMN_PRO_ProductID;
            return(returnValue);

            #endregion UserCode
        }
        protected static FR_L3CCfTaIC_1526_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L3CCfTaIC_1526 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L3CCfTaIC_1526_Array();
            //Put your code here
            List <L3CCfTaIC_1526> ProductList = new List <L3CCfTaIC_1526>();
            returnValue.Result = ProductList.ToArray();
            var _service = CatalogServiceFactory.GetSubscriptionService();

            //make data to send to Architecture so that they will know which catalog to update
            var subscriptionRequest = new SubscriptionRequest();
            subscriptionRequest.CatalogCode = Parameter.CatalogCodeITL;
            Customer customer = new Customer();

            // for only Tenant specific cases add Business Participant ID
            if (Parameter.SubscribedBy_BusinessParticipant_RefID != Guid.Empty)
            {
                customer.BusinessParticipantITL = Parameter.SubscribedBy_BusinessParticipant_RefID.ToString();
            }
            else
            {
                customer.BusinessParticipantITL = securityTicket.TenantID.ToString();
            }
            customer.TenantITL = securityTicket.TenantID.ToString();
            customer.Name      = Parameter.ClientName;
            // customer.SourceRealm = BOp.Infrastructure.PropertyRepository.Instance.RealmID.ToString();

            subscriptionRequest.Customer = customer;

            /*
             * @see if catalog with the same ITL for that bussinessParticipant exists
             * */
            var subscribedCatalogQuery = new ORM_CMN_PRO_SubscribedCatalog.Query();
            subscribedCatalogQuery.Tenant_RefID   = securityTicket.TenantID;
            subscribedCatalogQuery.CatalogCodeITL = Parameter.CatalogCodeITL;
            if (Parameter.SubscribedBy_BusinessParticipant_RefID != Guid.Empty)
            {
                subscribedCatalogQuery.SubscribedBy_BusinessParticipant_RefID = Parameter.SubscribedBy_BusinessParticipant_RefID;
            }
            subscribedCatalogQuery.IsDeleted = false;

            var subscribedCatalog = ORM_CMN_PRO_SubscribedCatalog.Query.Search(Connection, Transaction, subscribedCatalogQuery).FirstOrDefault();

            #region Get VAT

            var defaultCountryISOCode = cls_Get_DefaultCountryISOCode_for_TenantID.Invoke(Connection, Transaction, securityTicket).Result;

            var param = new P_L3TX_GTfCICaT_1359();
            param.CountryISOCode = "DE";



            var taxes = cls_Get_Taxes_for_CountryISOCode_and_TenantID.Invoke(Connection, Transaction, param, securityTicket).Result;
            //if there are no taxes for tenant
            Guid countryID = Guid.Empty;
            if (taxes.Length == 0)
            {
                var country = cls_Get_AllCountries_for_TenantID.Invoke(Connection, Transaction, securityTicket).Result.FirstOrDefault();

                if (country != null)
                {
                    countryID = country.CMN_CountryID;
                }
            }
            else
            {
                countryID = taxes.First().CMN_CountryID; // ti slucajni posmatracu ovog koda nemoj zameriti na ovakvom resenju.
            }

            #endregion

            #region save

            if (subscribedCatalog == null)
            {
                /*
                 * @save ORM_CMN_PRO_SubscribedCatalog
                 * */
                subscribedCatalog = new ORM_CMN_PRO_SubscribedCatalog();
                subscribedCatalog.CMN_PRO_SubscribedCatalogID = Guid.NewGuid();
                subscribedCatalog.CatalogCodeITL         = Parameter.CatalogCodeITL;
                subscribedCatalog.SubscribedCatalog_Name = Parameter.CatalogName;
                subscribedCatalog.SubscribedBy_BusinessParticipant_RefID = Parameter.SubscribedBy_BusinessParticipant_RefID;
                subscribedCatalog.Tenant_RefID = securityTicket.TenantID;
                subscribedCatalog.SubscribedCatalog_ValidFrom    = Parameter.ValidFrom_Date;
                subscribedCatalog.SubscribedCatalog_ValidThrough = Parameter.ValidTo_Date;
                subscribedCatalog.SubscribedCatalog_Description  = Parameter.CatalogDescription;
                subscribedCatalog.Creation_Timestamp             = DateTime.Now;
                subscribedCatalog.IsDeleted = false;
                subscribedCatalog.SubscribedCatalog_CurrentRevision = Parameter.CatalogVersion;
                subscribedCatalog.IsCatalogPublic = Parameter.IsCatalogPublic;

                // check if language with that ISO exists for Tenant (Lower, exmpl de)
                var languageQuery = new ORM_CMN_Language.Query();
                languageQuery.ISO_639_1    = Parameter.CatalogLanguage_ISO_639_1_codes.ToLower();
                languageQuery.Tenant_RefID = securityTicket.TenantID;
                languageQuery.IsDeleted    = false;

                var language = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery).FirstOrDefault();

                // if language does not exist for that Tenant
                if (language == null)
                {
                    //check if language with that ISO exists for Tenant (Upper exmpl DE)
                    languageQuery              = new ORM_CMN_Language.Query();
                    languageQuery.ISO_639_1    = Parameter.CatalogLanguage_ISO_639_1_codes.ToUpper();
                    languageQuery.Tenant_RefID = securityTicket.TenantID;
                    languageQuery.IsDeleted    = false;

                    language = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery).FirstOrDefault();

                    // if language does not exist for that Tenant
                    if (language == null)
                    {
                        ORM_CMN_Language newLanguage = new ORM_CMN_Language();
                        newLanguage.CMN_LanguageID     = Guid.NewGuid();
                        newLanguage.ISO_639_1          = Parameter.CatalogLanguage_ISO_639_1_codes;
                        newLanguage.Creation_Timestamp = DateTime.Now;
                        newLanguage.Tenant_RefID       = securityTicket.TenantID;
                        newLanguage.IsDeleted          = false;
                        newLanguage.Save(Connection, Transaction);

                        subscribedCatalog.SubscribedCatalog_Language_RefID = newLanguage.CMN_LanguageID;
                    }
                    else
                    {
                        subscribedCatalog.SubscribedCatalog_Language_RefID = language.CMN_LanguageID;
                    }
                }
                else
                {
                    subscribedCatalog.SubscribedCatalog_Language_RefID = language.CMN_LanguageID;
                }

                // check if currency with that ISO exists for Tenant

                var currencyQuery = new ORM_CMN_Currency.Query();
                currencyQuery.ISO4127      = Parameter.CatalogCurrency_ISO_4217;
                currencyQuery.Tenant_RefID = securityTicket.TenantID;
                currencyQuery.IsDeleted    = false;

                var currency = ORM_CMN_Currency.Query.Search(Connection, Transaction, currencyQuery).FirstOrDefault();

                if (currency == null)
                {
                    ORM_CMN_Currency newCurrency = new ORM_CMN_Currency();
                    newCurrency.CMN_CurrencyID     = Guid.NewGuid();
                    newCurrency.ISO4127            = Parameter.CatalogCurrency_ISO_4217;
                    newCurrency.Tenant_RefID       = securityTicket.TenantID;
                    newCurrency.Creation_Timestamp = DateTime.Now;
                    newCurrency.Save(Connection, Transaction);

                    subscribedCatalog.SubscribedCatalog_Currency_RefID = newCurrency.CMN_CurrencyID;
                }
                else
                {
                    subscribedCatalog.SubscribedCatalog_Currency_RefID = currency.CMN_CurrencyID;
                }

                #region product group

                /*
                 * @Search product group
                 * */
                ORM_CMN_PRO_ProductGroup productGroup = new ORM_CMN_PRO_ProductGroup();

                var productGroupQuery = new ORM_CMN_PRO_ProductGroup.Query();
                productGroupQuery.Tenant_RefID             = securityTicket.TenantID;
                productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.Treatment);

                //if (Parameter.IsCatalogPublic == false)
                //{
                //    productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.HauseList);
                //}
                //else
                //{
                //    productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.ABDA);
                //}
                // for only Tenant specific cases add Business Participant ID
                if (Parameter.SubscribedBy_BusinessParticipant_RefID != Guid.Empty)
                {
                    productGroupQuery.GlobalPropertyMatchingID += Parameter.SubscribedBy_BusinessParticipant_RefID;
                }
                productGroupQuery.IsDeleted = false;

                productGroup = ORM_CMN_PRO_ProductGroup.Query.Search(Connection, Transaction, productGroupQuery).FirstOrDefault();

                if (productGroup == null)
                {
                    /*
                     * @Create product group for products if product group for that BP and Tenent does not exist
                     * */
                    productGroup = new ORM_CMN_PRO_ProductGroup();
                    productGroup.Tenant_RefID                  = securityTicket.TenantID;
                    productGroup.Creation_Timestamp            = DateTime.Now;
                    productGroup.CMN_PRO_ProductGroupID        = Guid.NewGuid();
                    productGroup.ProductGroup_Name             = new Dict(ORM_CMN_PRO_ProductGroup.TableName);
                    productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.Treatment);
                    productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "Treatment Group");

                    //if (Parameter.IsCatalogPublic == false)
                    //{
                    //    productGroup.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.HauseList);
                    //    productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "HauseList Group");
                    //}
                    //else
                    //{
                    //    productGroup.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.ABDA);
                    //    productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "ABDA Group");
                    //}

                    // for only Tenant specific cases add Business Participant ID
                    if (Parameter.SubscribedBy_BusinessParticipant_RefID != Guid.Empty)
                    {
                        productGroup.GlobalPropertyMatchingID += Parameter.SubscribedBy_BusinessParticipant_RefID;
                        productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "Treatment Group");
                    }
                    productGroup.Save(Connection, Transaction);
                }
                #endregion

                #region create priceList for Catalog

                /*
                 * @create pricelist_Release
                 * */
                ORM_CMN_SLS_Pricelist_Release pricelist_Release = new ORM_CMN_SLS_Pricelist_Release();
                pricelist_Release.CMN_SLS_Pricelist_ReleaseID = Guid.NewGuid();
                pricelist_Release.Release_Version             = "v1";
                if (Parameter.IsCatalogPublic == false)
                {
                    pricelist_Release.PricelistRelease_ValidFrom = Parameter.ValidFrom_Date;
                    pricelist_Release.PricelistRelease_ValidTo   = Parameter.ValidTo_Date;
                }
                else
                {
                    pricelist_Release.IsPricelistAlwaysActive = true;
                }
                pricelist_Release.Tenant_RefID       = securityTicket.TenantID;
                pricelist_Release.Creation_Timestamp = DateTime.Now;
                pricelist_Release.Pricelist_RefID    = Guid.NewGuid();//priceList.CMN_SLS_PricelistID
                pricelist_Release.Save(Connection, Transaction);

                /*
                 * @create pricelist
                 * */
                ORM_CMN_SLS_Pricelist priceList = new ORM_CMN_SLS_Pricelist();
                priceList.CMN_SLS_PricelistID = pricelist_Release.Pricelist_RefID;

                var DBLanguages = cls_Get_All_Languages.Invoke(Connection, Transaction, securityTicket).Result.ToList();

                Dict nameDict = new Dict("cmn_sls_pricelist");
                if (Parameter.IsCatalogPublic == false)
                {
                    for (int i = 0; i < DBLanguages.Count; i++)
                    {
                        nameDict.AddEntry(DBLanguages[i].CMN_LanguageID, Parameter.CatalogName + "_" + Parameter.ValidFrom_Date.ToShortDateString() + "_" + Parameter.ValidTo_Date.ToShortDateString());
                    }
                }
                else
                {
                    for (int i = 0; i < DBLanguages.Count; i++)
                    {
                        nameDict.AddEntry(DBLanguages[i].CMN_LanguageID, "ABDA_PriceList");
                    }
                }
                priceList.Pricelist_Name     = nameDict;
                priceList.Tenant_RefID       = securityTicket.TenantID;
                priceList.Creation_Timestamp = DateTime.Now;
                priceList.Save(Connection, Transaction);

                #endregion

                if (Parameter.IsCatalogPublic == false)
                {
                    #region create and save products in product group and give product its price , product amout and measure unit

                    /*
                     * @create and save products in product group
                     * */

                    bool isAlreadyInABDA = false;
                    foreach (var item in Parameter.Products)
                    {
                        ORM_CMN_PRO_Product product = new ORM_CMN_PRO_Product();

                        // only for Tenant specific cases add Business Participant ID (!Lucentis)
                        if (Parameter.SubscribedBy_BusinessParticipant_RefID == Guid.Empty)
                        {
                            var productQuery = new ORM_CMN_PRO_Product.Query();
                            productQuery.ProductITL   = item.ProductITL;
                            productQuery.Tenant_RefID = securityTicket.TenantID;
                            productQuery.IsDeleted    = false;
                            productQuery.IsProductAvailableForOrdering = true;

                            product = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, productQuery).FirstOrDefault();

                            //if it is not in ABDA
                            if (product == null)
                            {
                                product = new ORM_CMN_PRO_Product();
                                product.CMN_PRO_ProductID             = Guid.NewGuid();
                                product.Creation_Timestamp            = DateTime.Now;
                                product.Tenant_RefID                  = securityTicket.TenantID;
                                product.ProductITL                    = item.ProductITL;
                                product.Product_Name                  = item.Product_Name;
                                product.Product_Description           = item.Product_Description;
                                product.Product_Number                = item.Product_Number;
                                product.IsProduct_Article             = item.IsProduct_Article;
                                product.IsProductAvailableForOrdering = true;
                                product.PackageInfo_RefID             = Guid.NewGuid();//packageInfo.CMN_PRO_PAC_PackageInfoID

                                isAlreadyInABDA = false;
                            }
                            else
                            {
                                isAlreadyInABDA = true;
                            }
                        }
                        else
                        {
                            product.CMN_PRO_ProductID             = Guid.NewGuid();
                            product.Creation_Timestamp            = DateTime.Now;
                            product.Tenant_RefID                  = securityTicket.TenantID;
                            product.ProductITL                    = item.ProductITL;
                            product.Product_Name                  = item.Product_Name;
                            product.Product_Description           = item.Product_Description;
                            product.Product_Number                = item.Product_Number;
                            product.IsProduct_Article             = item.IsProduct_Article;
                            product.IsProductAvailableForOrdering = true;
                            product.PackageInfo_RefID             = Guid.NewGuid();//packageInfo.CMN_PRO_PAC_PackageInfoID

                            isAlreadyInABDA = false;
                        }

                        product.IfImportedFromExternalCatalog_CatalogSubscription_RefID = subscribedCatalog.CMN_PRO_SubscribedCatalogID;
                        product.Save(Connection, Transaction);

                        L3CCfTaIC_1526 pro = new L3CCfTaIC_1526();
                        pro.ProductID = product.CMN_PRO_ProductID;
                        if (product.IsProduct_Article)
                        {
                            pro.Dosage = item.Dosage;
                        }
                        pro.isEdit = false;
                        ProductList.Add(pro);

                        ORM_CMN_PRO_Product_2_ProductGroup product_2_productGroup = new ORM_CMN_PRO_Product_2_ProductGroup();
                        product_2_productGroup.CMN_PRO_Product_RefID      = product.CMN_PRO_ProductID;
                        product_2_productGroup.CMN_PRO_ProductGroup_RefID = productGroup.CMN_PRO_ProductGroupID;
                        product_2_productGroup.Tenant_RefID       = securityTicket.TenantID;
                        product_2_productGroup.Creation_Timestamp = DateTime.Now;
                        product_2_productGroup.Save(Connection, Transaction);

                        if (isAlreadyInABDA == false)
                        {
                            ORM_CMN_SLS_Price price = new ORM_CMN_SLS_Price();
                            price.CMN_SLS_PriceID        = Guid.NewGuid();
                            price.Tenant_RefID           = securityTicket.TenantID;
                            price.Creation_Timestamp     = DateTime.Now;
                            price.PricelistRelease_RefID = pricelist_Release.CMN_SLS_Pricelist_ReleaseID;
                            price.CMN_PRO_Product_RefID  = product.CMN_PRO_ProductID;
                            price.PriceAmount            = item.Price;
                            price.CMN_Currency_RefID     = subscribedCatalog.SubscribedCatalog_Currency_RefID;
                            price.Save(Connection, Transaction);

                            //add amount and Measure
                            ORM_CMN_PRO_PAC_PackageInfo packageInfo = new ORM_CMN_PRO_PAC_PackageInfo();
                            packageInfo.CMN_PRO_PAC_PackageInfoID = product.PackageInfo_RefID;
                            packageInfo.Tenant_RefID          = securityTicket.TenantID;
                            packageInfo.Creation_Timestamp    = DateTime.Now;
                            packageInfo.PackageContent_Amount = item.Amount;

                            //check if MeasureUnit exists for this Tenant
                            var unitsQuery = new ORM_CMN_Unit.Query();
                            unitsQuery.Tenant_RefID = securityTicket.TenantID;
                            unitsQuery.ISOCode      = item.MeasuredInUnit_ISO_um_ums;
                            unitsQuery.IsDeleted    = false;

                            var measuredInUnit = ORM_CMN_Unit.Query.Search(Connection, Transaction, unitsQuery).FirstOrDefault();
                            if (measuredInUnit == null)
                            {
                                ORM_CMN_Unit newMeasuredInUnit = new ORM_CMN_Unit();
                                newMeasuredInUnit.Tenant_RefID       = securityTicket.TenantID;
                                newMeasuredInUnit.Creation_Timestamp = DateTime.Now;
                                newMeasuredInUnit.ISOCode            = item.MeasuredInUnit_ISO_um_ums;
                                newMeasuredInUnit.CMN_UnitID         = Guid.NewGuid();
                                newMeasuredInUnit.Save(Connection, Transaction);

                                packageInfo.PackageContent_MeasuredInUnit_RefID = newMeasuredInUnit.CMN_UnitID;
                            }
                            else
                            {
                                packageInfo.PackageContent_MeasuredInUnit_RefID = measuredInUnit.CMN_UnitID;
                            }

                            packageInfo.Save(Connection, Transaction);

                            if (countryID != Guid.Empty)// if there is a country for this Tenant
                            {
                                #region Create Taxes

                                double productVAT = 0;
                                Double.TryParse(item.VAT, out productVAT);

                                var tax = taxes.Where(i => i.TaxRate == productVAT).SingleOrDefault();

                                if (tax == default(L3TX_GTfCICaT_1359))
                                {
                                    #region CreateTax

                                    var saveTaxParam = new P_L3TX_STX_1119();
                                    saveTaxParam.ACC_TAX_TaxeID = Guid.Empty;
                                    saveTaxParam.TaxName        = new Dict(ORM_ACC_TAX_Tax.TableName);
                                    saveTaxParam.TaxName.AddEntry(language.CMN_LanguageID, productVAT.ToString());
                                    saveTaxParam.TaxRate = productVAT;
                                    if (taxes.Length != 0)
                                    {
                                        saveTaxParam.EconomicRegion_RefID = taxes.First().CMN_EconomicRegionID;
                                        saveTaxParam.Country_RefID        = taxes.First().CMN_CountryID;
                                    }
                                    else
                                    {
                                        saveTaxParam.EconomicRegion_RefID = Guid.Empty;
                                        saveTaxParam.Country_RefID        = countryID;
                                    }
                                    var saveTaxResult = cls_Save_Tax.Invoke(Connection, Transaction, saveTaxParam, securityTicket).Result;

                                    #endregion

                                    #region Update Available taxes

                                    param = new P_L3TX_GTfCICaT_1359();
                                    param.CountryISOCode = "DE";

                                    taxes = cls_Get_Taxes_for_CountryISOCode_and_TenantID.Invoke(Connection, Transaction, param, securityTicket).Result;

                                    tax = taxes.Where(i => i.TaxRate == productVAT).SingleOrDefault();

                                    #endregion
                                }

                                var salesTax = new ORM_CMN_PRO_Product_SalesTaxAssignmnet();
                                salesTax.CMN_PRO_Product_SalesTaxAssignmnetID = Guid.NewGuid();
                                salesTax.Product_RefID            = product.CMN_PRO_ProductID;
                                salesTax.ApplicableSalesTax_RefID = tax.ACC_TAX_TaxeID;
                                salesTax.Creation_Timestamp       = DateTime.Now;
                                salesTax.Tenant_RefID             = securityTicket.TenantID;
                                salesTax.Save(Connection, Transaction);

                                #endregion
                            }
                        }
                    }
                    #endregion
                }

                /*
                 * @See if Supplier already exists in database
                 * */
                ORM_CMN_BPT_Supplier supplier = new ORM_CMN_BPT_Supplier();

                var supplierQuery = new ORM_CMN_BPT_BusinessParticipant.Query();
                supplierQuery.BusinessParticipantITL = Parameter.SupplierData.SupplierITL;
                supplierQuery.Tenant_RefID           = securityTicket.TenantID;
                supplierQuery.IsDeleted = false;

                var supplier_bussinessParticipant = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, supplierQuery).FirstOrDefault();

                #region if supplier does not exist

                if (supplier_bussinessParticipant == null)
                {
                    /*
                     * @Make Supplier Data
                     * */

                    var tenantQuery = new ORM_CMN_Tenant.Query()
                    {
                        TenantITL    = Parameter.SupplierData.TenantITL,
                        Tenant_RefID = securityTicket.TenantID
                    };

                    var supplierTenant = ORM_CMN_Tenant.Query.Search(Connection, Transaction, tenantQuery).SingleOrDefault();

                    if (supplierTenant == default(ORM_CMN_Tenant))
                    {
                        supplierTenant = new ORM_CMN_Tenant();
                        supplierTenant.CMN_TenantID       = Guid.NewGuid();
                        supplierTenant.TenantITL          = Parameter.SupplierData.TenantITL;
                        supplierTenant.Tenant_RefID       = securityTicket.TenantID;
                        supplierTenant.Creation_Timestamp = DateTime.Now;
                        supplierTenant.Save(Connection, Transaction);
                    }

                    supplier.CMN_BPT_SupplierID            = Guid.NewGuid();
                    supplier.Ext_BusinessParticipant_RefID = Guid.NewGuid();//supplierBussinessParticipant.CMN_BPT_BusinessParticipantID
                    supplier.Creation_Timestamp            = DateTime.Now;
                    supplier.IsDeleted    = false;
                    supplier.Tenant_RefID = securityTicket.TenantID;
                    supplier.Save(Connection, Transaction);

                    ORM_CMN_BPT_BusinessParticipant supplierBussinessParticipant = new ORM_CMN_BPT_BusinessParticipant();
                    supplierBussinessParticipant.CMN_BPT_BusinessParticipantID = supplier.Ext_BusinessParticipant_RefID;
                    supplierBussinessParticipant.DisplayName            = Parameter.SupplierData.Supplier_Name;
                    supplierBussinessParticipant.BusinessParticipantITL = Parameter.SupplierData.SupplierITL;
                    supplierBussinessParticipant.Creation_Timestamp     = DateTime.Now;
                    supplierBussinessParticipant.Tenant_RefID           = securityTicket.TenantID;
                    supplierBussinessParticipant.IsCompany             = true;
                    supplierBussinessParticipant.IsTenant              = true;
                    supplierBussinessParticipant.IfTenant_Tenant_RefID = supplierTenant.CMN_TenantID;
                    supplierBussinessParticipant.IfCompany_CMN_COM_CompanyInfo_RefID = Guid.NewGuid();//companyInfo.CMN_COM_CompanyInfoID
                    supplierBussinessParticipant.Save(Connection, Transaction);

                    ORM_CMN_COM_CompanyInfo companyInfo = new ORM_CMN_COM_CompanyInfo();
                    companyInfo.CMN_COM_CompanyInfoID = supplierBussinessParticipant.IfCompany_CMN_COM_CompanyInfo_RefID;
                    companyInfo.Creation_Timestamp    = DateTime.Now;
                    companyInfo.Tenant_RefID          = securityTicket.TenantID;
                    companyInfo.Contact_UCD_RefID     = Guid.NewGuid();//universalContactDetail.CMN_UniversalContactDetailID
                    companyInfo.Save(Connection, Transaction);

                    ORM_CMN_UniversalContactDetail universalContactDetail = new ORM_CMN_UniversalContactDetail();
                    universalContactDetail.CMN_UniversalContactDetailID = companyInfo.Contact_UCD_RefID;
                    universalContactDetail.IsCompany             = true;
                    universalContactDetail.Country_639_1_ISOCode = Parameter.SupplierData.CountryISO;
                    universalContactDetail.Street_Name           = Parameter.SupplierData.Supplier_Name;
                    universalContactDetail.Street_Number         = Parameter.SupplierData.Street_Number;
                    universalContactDetail.ZIP                = Parameter.SupplierData.ZIP;
                    universalContactDetail.Town               = Parameter.SupplierData.Town;
                    universalContactDetail.Region_Code        = Parameter.SupplierData.Region_Code;
                    universalContactDetail.Tenant_RefID       = securityTicket.TenantID;
                    universalContactDetail.Creation_Timestamp = DateTime.Now;
                    universalContactDetail.Save(Connection, Transaction);
                }
                #endregion
                #region if supplier exists , check if its data is changed
                else
                {
                    var tenantQuery = new ORM_CMN_Tenant.Query()
                    {
                        TenantITL    = Parameter.SupplierData.TenantITL,
                        Tenant_RefID = securityTicket.TenantID
                    };

                    var supplierTenant = ORM_CMN_Tenant.Query.Search(Connection, Transaction, tenantQuery).SingleOrDefault();

                    if (supplierTenant == default(ORM_CMN_Tenant))
                    {
                        supplierTenant = new ORM_CMN_Tenant();
                        supplierTenant.CMN_TenantID       = Guid.NewGuid();
                        supplierTenant.TenantITL          = Parameter.SupplierData.TenantITL;
                        supplierTenant.Tenant_RefID       = securityTicket.TenantID;
                        supplierTenant.Creation_Timestamp = DateTime.Now;
                        supplierTenant.Save(Connection, Transaction);

                        supplier_bussinessParticipant.IsTenant = true;
                        supplier_bussinessParticipant.IfTenant_Tenant_RefID = supplierTenant.CMN_TenantID;
                    }

                    supplier_bussinessParticipant.DisplayName = Parameter.SupplierData.Supplier_Name;
                    supplier_bussinessParticipant.Save(Connection, Transaction);

                    var query = new ORM_CMN_BPT_Supplier.Query();
                    query.Ext_BusinessParticipant_RefID = supplier_bussinessParticipant.CMN_BPT_BusinessParticipantID;
                    query.Tenant_RefID = securityTicket.TenantID;
                    query.IsDeleted    = false;

                    supplier = ORM_CMN_BPT_Supplier.Query.Search(Connection, Transaction, query).First();

                    //edit universal contact details

                    var companyInfoQuery = new ORM_CMN_COM_CompanyInfo.Query();
                    companyInfoQuery.CMN_COM_CompanyInfoID = supplier_bussinessParticipant.IfCompany_CMN_COM_CompanyInfo_RefID;
                    companyInfoQuery.Tenant_RefID          = securityTicket.TenantID;
                    companyInfoQuery.IsDeleted             = false;

                    var companyInfo = ORM_CMN_COM_CompanyInfo.Query.Search(Connection, Transaction, companyInfoQuery).First();

                    var universalContactDetailQuery = new ORM_CMN_UniversalContactDetail.Query();
                    universalContactDetailQuery.CMN_UniversalContactDetailID = companyInfo.Contact_UCD_RefID;
                    universalContactDetailQuery.Tenant_RefID = securityTicket.TenantID;
                    universalContactDetailQuery.IsDeleted    = false;

                    var universalContactDetail = ORM_CMN_UniversalContactDetail.Query.Search(Connection, Transaction, universalContactDetailQuery).First();

                    universalContactDetail.Country_639_1_ISOCode = Parameter.SupplierData.CountryISO;
                    universalContactDetail.Street_Name           = Parameter.SupplierData.Supplier_Name;
                    universalContactDetail.Street_Number         = Parameter.SupplierData.Street_Number;
                    universalContactDetail.ZIP         = Parameter.SupplierData.ZIP;
                    universalContactDetail.Town        = Parameter.SupplierData.Town;
                    universalContactDetail.Region_Code = Parameter.SupplierData.Region_Code;
                    universalContactDetail.Save(Connection, Transaction);
                }
                #endregion

                subscribedCatalog.SubscribedCatalog_PricelistRelease_RefID = pricelist_Release.CMN_SLS_Pricelist_ReleaseID;
                subscribedCatalog.PublishingSupplier_RefID = supplier.CMN_BPT_SupplierID;
                subscribedCatalog.Save(Connection, Transaction);

                /*
                 * @send Kika information which catalog has been subscribed to who
                 * */
                var result = _service.SubscribeToCatalog(subscriptionRequest);

                if (result.ResponseStatus != ResponseStatus.OK)
                {
                    throw new Exception("Catalog subscription failed!");
                }
            }
            #endregion

            returnValue.Result = ProductList.ToArray();
            return(returnValue);

            #endregion UserCode
        }
Esempio n. 6
0
        protected static FR_CAS_SPE_1805 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SPE_1805 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_CAS_SPE_1805();
            returnValue.Result = new CAS_SPE_1805();
            //Put your code here
            var case_id = Parameter.case_id;

            #region DATA
            var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_P_PA_GPDfPID_1124()
            {
                PatientID = Parameter.patient_id
            }, securityTicket).Result;
            if (patient_details == null)
            {
                throw new Exception("Patient details not found for ID: " + Parameter.patient_id);
            }

            var doctor = ORM_HEC_Doctor.Query.Search(Connection, Transaction, new ORM_HEC_Doctor.Query()
            {
                Tenant_RefID = securityTicket.TenantID, HEC_DoctorID = Parameter.doctor_id, IsDeleted = false
            }).SingleOrDefault();
            if (doctor == null)
            {
                throw new Exception("Doctor not found for ID: " + Parameter.doctor_id);
            }


            var doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
            {
                DoctorID = Parameter.doctor_id
            }, securityTicket).Result.FirstOrDefault();

            if (doctor_details == null)
            {
                throw new Exception("Doctor details not found for ID: " + Parameter.doctor_id);
            }

            var practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432()
            {
                PracticeID = doctor_details.practice_id
            }, securityTicket).Result.FirstOrDefault();
            if (practice_details == null)
            {
                throw new Exception("Practice details not found for ID: " + doctor_details.practice_id);
            }

            var shouldDownloadReportProperty = cls_Get_Practice_PropertyValue_for_PropertyName_and_PracticeID.Invoke(Connection, Transaction, new P_DO_GPPVfPNaPID_0916()
            {
                PracticeID = doctor_details.practice_id, PropertyName = "Download Report Upon Submission"
            }, securityTicket).Result;
            var shouldDownloadReport = shouldDownloadReportProperty == null ? false : shouldDownloadReportProperty.BooleanValue;

            ORM_USR_Account.Query trigger_accQ = new ORM_USR_Account.Query();
            trigger_accQ.Tenant_RefID  = securityTicket.TenantID;
            trigger_accQ.USR_AccountID = securityTicket.AccountID;
            trigger_accQ.IsDeleted     = false;

            ORM_USR_Account trigger_acc = ORM_USR_Account.Query.Search(Connection, Transaction, trigger_accQ).Single();

            ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query();
            all_languagesQ.Tenant_RefID = securityTicket.TenantID;
            all_languagesQ.IsDeleted    = false;

            var all_languagesL           = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();
            var intraocular_procedure_id = Guid.Empty;
            #endregion

            if (!Parameter.isResubmit)
            {
                #region NEW CASE
                ORM_HEC_CAS_Case new_case = new ORM_HEC_CAS_Case();
                new_case.HEC_CAS_CaseID     = Guid.NewGuid();
                new_case.Creation_Timestamp = DateTime.Now;
                new_case.CreatedBy_BusinessParticipant_RefID = trigger_acc.BusinessParticipant_RefID;
                new_case.Patient_RefID          = Parameter.patient_id;
                new_case.Patient_FirstName      = patient_details.patient_first_name;
                new_case.Patient_LastName       = patient_details.patient_last_name;
                new_case.Patient_Gender         = patient_details.gender;
                new_case.Patient_BirthDate      = patient_details.birthday;
                new_case.CaseNumber             = cls_Get_Next_Case_Number.Invoke(Connection, Transaction, securityTicket).Result.case_number;
                new_case.Modification_Timestamp = DateTime.Now;

                DateTime today = DateTime.Today;
                int      age   = today.Year - patient_details.birthday.Year;
                if (patient_details.birthday > today.AddYears(-age))
                {
                    age--;
                }

                new_case.Patient_Age  = age;
                new_case.Tenant_RefID = securityTicket.TenantID;

                new_case.Save(Connection, Transaction);
                case_id = new_case.HEC_CAS_CaseID;
                #endregion NEW CASE

                #region INITIAL PERFORMED ACTION
                var initial_performed_action_id = cls_Create_Initial_Performed_Action.Invoke(Connection, Transaction, new P_CAS_CIPA_1140()
                {
                    all_languagesL    = all_languagesL,
                    case_id           = new_case.HEC_CAS_CaseID,
                    created_by_bpt    = trigger_acc.BusinessParticipant_RefID,
                    patient_id        = Parameter.patient_id,
                    practice_id       = doctor_details.practice_id,
                    action_type_gpmid = "mm.docconect.doc.app.performed.action.preexamination"
                }, securityTicket).Result;
                #endregion INITIAL PERFORMED ACTION

                #region LOCALIZATION
                ORM_HEC_DIA_Diagnosis_Localization diagnosis_localization = new ORM_HEC_DIA_Diagnosis_Localization();
                diagnosis_localization.Modification_Timestamp = DateTime.Now;
                diagnosis_localization.Tenant_RefID           = securityTicket.TenantID;
                diagnosis_localization.LocalizationCode       = Parameter.localization;

                diagnosis_localization.Save(Connection, Transaction);

                ORM_HEC_ACT_PerformedAction_DiagnosisUpdate initial_performed_action_diagnose = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate();
                initial_performed_action_diagnose.HEC_ACT_PerformedAction_RefID = initial_performed_action_id;
                initial_performed_action_diagnose.Modification_Timestamp        = DateTime.Now;
                initial_performed_action_diagnose.Tenant_RefID = securityTicket.TenantID;

                initial_performed_action_diagnose.Save(Connection, Transaction);

                ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization initial_performed_action_diagnose_localization = new ORM_HEC_ACT_PerformedAction_DiagnosisUpdate_Localization();
                initial_performed_action_diagnose_localization.HEX_EXC_Action_DiagnosisUpdate_RefID = initial_performed_action_diagnose.HEC_ACT_PerformedAction_DiagnosisUpdateID;
                initial_performed_action_diagnose_localization.HEC_DIA_Diagnosis_Localization_RefID = diagnosis_localization.HEC_DIA_Diagnosis_LocalizationID;
                initial_performed_action_diagnose_localization.Modification_Timestamp = DateTime.Now;
                initial_performed_action_diagnose_localization.Tenant_RefID           = securityTicket.TenantID;
                initial_performed_action_diagnose_localization.IM_PotentialDiagnosisLocalization_Code = Parameter.localization;

                initial_performed_action_diagnose_localization.Save(Connection, Transaction);
                #endregion

                #region PLANNED ACTION
                var action_gpmid = "mm.docconect.doc.app.planned.action.preexamination";

                var planned_action_type = ORM_HEC_ACT_ActionType.Query.Search(Connection, Transaction, new ORM_HEC_ACT_ActionType.Query()
                {
                    GlobalPropertyMatchingID = action_gpmid,
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                }).SingleOrDefault();

                if (planned_action_type == null)
                {
                    planned_action_type = new ORM_HEC_ACT_ActionType();
                    planned_action_type.GlobalPropertyMatchingID = action_gpmid;
                    planned_action_type.Modification_Timestamp   = DateTime.Now;
                    planned_action_type.Tenant_RefID             = securityTicket.TenantID;

                    planned_action_type.Save(Connection, Transaction);
                }

                // circular reference to same performed action in order to be compatible with treatment planned actions,
                // so that it can be accessed in the same way
                var preexamination_planned_action = new ORM_HEC_ACT_PlannedAction();
                preexamination_planned_action.IfPlannedFollowup_PreviousAction_RefID = initial_performed_action_id;
                preexamination_planned_action.IsPerformed = true;
                preexamination_planned_action.IfPerformed_PerformedAction_RefID = initial_performed_action_id;
                preexamination_planned_action.MedicalPractice_RefID             = doctor_details.practice_id;
                preexamination_planned_action.Modification_Timestamp            = DateTime.Now;
                preexamination_planned_action.Patient_RefID   = Parameter.patient_id;
                preexamination_planned_action.PlannedFor_Date = Parameter.date;
                preexamination_planned_action.ToBePerformedBy_BusinessParticipant_RefID = doctor.BusinessParticipant_RefID;
                preexamination_planned_action.Tenant_RefID = securityTicket.TenantID;

                preexamination_planned_action.Save(Connection, Transaction);

                var action_to_type = new ORM_HEC_ACT_PlannedAction_2_ActionType();
                action_to_type.HEC_ACT_ActionType_RefID    = planned_action_type.HEC_ACT_ActionTypeID;
                action_to_type.HEC_ACT_PlannedAction_RefID = preexamination_planned_action.HEC_ACT_PlannedActionID;
                action_to_type.Modification_Timestamp      = DateTime.Now;
                action_to_type.Tenant_RefID = securityTicket.TenantID;

                action_to_type.Save(Connection, Transaction);
                #endregion

                #region GPOS
                var patient_consent = ORM_HEC_CRT_InsuranceToBrokerContract_ParticipatingPatient.Query.Search(Connection, Transaction, new ORM_HEC_CRT_InsuranceToBrokerContract_ParticipatingPatient.Query()
                {
                    Patient_RefID = Parameter.patient_id,
                    IsDeleted     = false,
                    Tenant_RefID  = securityTicket.TenantID
                }).Where(t =>
                {
                    var ctrParameter = cls_Get_Contract_Parameter_Value_for_InsuranceToBrokerContractID.Invoke(Connection, Transaction, new P_MD_GCPVfITBCID_1647()
                    {
                        ParameterName = "Duration of participation consent – Month",
                        InsuranceToBrokerContractID = t.InsuranceToBrokerContract_RefID
                    }, securityTicket).Result;

                    var validThrough = ctrParameter == null || ctrParameter.ConsentValidForMonths == double.MaxValue ? DateTime.MaxValue : t.ValidFrom.AddMonths(Convert.ToInt32(ctrParameter.ConsentValidForMonths));
                    return(t.ValidFrom <= Parameter.date && validThrough >= Parameter.date);
                }).OrderBy(t => t.ValidFrom).FirstOrDefault();

                if (patient_consent == null)
                {
                    throw new Exception("No patients consents found for selected date: " + Parameter.date.ToString("dd.MM.yyyy") + " and  patient id: " + Parameter.patient_id);
                }


                var gpos_gpmid = "mm.docconnect.gpos.catalog.voruntersuchung";
                var preexamination_gpos_catalog = ORM_HEC_BIL_PotentialCode_Catalog.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_Catalog.Query()
                {
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted                = false,
                    GlobalPropertyMatchingID = gpos_gpmid
                }).SingleOrDefault();

                if (preexamination_gpos_catalog == null)
                {
                    throw new Exception("Preexamination catalog not found.");
                }

                var gpos_connections_to_drugs = ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_HealthcareProduct.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).GroupBy(t => t.HEC_BIL_PotentialCode_RefID);

                var gpos_connections_to_diagnoses = ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode_2_PotentialDiagnosis.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).GroupBy(t => t.HEC_BIL_PotentialCode_RefID);

                var preexamination_gposes = ORM_HEC_BIL_PotentialCode.Query.Search(Connection, Transaction, new ORM_HEC_BIL_PotentialCode.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false,
                    PotentialCode_Catalog_RefID = preexamination_gpos_catalog.HEC_BIL_PotentialCode_CatalogID
                });

                var covered_gposes = ORM_HEC_CTR_InsuranceToBrokerContracts_CoveredPotentialBillCode.Query.Search(Connection, Transaction, new ORM_HEC_CTR_InsuranceToBrokerContracts_CoveredPotentialBillCode.Query()
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false,
                    InsuranceToBrokerContract_RefID = patient_consent.InsuranceToBrokerContract_RefID
                });

                preexamination_gposes = preexamination_gposes.Where(t => covered_gposes.Any(c => c.PotentialBillCode_RefID == t.HEC_BIL_PotentialCodeID)).ToList();

                var bill_header = new ORM_BIL_BillHeader();
                bill_header.Modification_Timestamp = DateTime.Now;
                bill_header.Tenant_RefID           = securityTicket.TenantID;

                foreach (var gpos in preexamination_gposes)
                {
                    if (!gpos_connections_to_diagnoses.Any(t => t.Key == gpos.HEC_BIL_PotentialCodeID) && !gpos_connections_to_drugs.Any(t => t.Key == gpos.HEC_BIL_PotentialCodeID))
                    {
                        var price_value = ORM_CMN_Price_Value.Query.Search(Connection, Transaction, new ORM_CMN_Price_Value.Query()
                        {
                            Price_RefID = gpos.Price_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID
                        }).SingleOrDefault();
                        if (price_value == null)
                        {
                            throw new Exception("Price value not found for GPOS: " + gpos.BillingCode);
                        }

                        ORM_BIL_BillPosition gpos_position = new ORM_BIL_BillPosition();
                        gpos_position.BIL_BilHeader_RefID        = bill_header.BIL_BillHeaderID;
                        gpos_position.Modification_Timestamp     = DateTime.Now;
                        gpos_position.Tenant_RefID               = securityTicket.TenantID;
                        gpos_position.PositionValue_IncludingTax = Convert.ToDecimal(price_value.PriceValue_Amount);
                        gpos_position.PositionNumber             = cls_Get_Next_Bill_Position_Number.Invoke(Connection, Transaction, securityTicket).Result.bill_position_number;

                        gpos_position.Save(Connection, Transaction);

                        ORM_BIL_BillPosition_TransmitionStatus fs_status = new ORM_BIL_BillPosition_TransmitionStatus();
                        fs_status.BillPosition_RefID     = gpos_position.BIL_BillPositionID;
                        fs_status.IsActive               = true;
                        fs_status.Modification_Timestamp = DateTime.Now;
                        fs_status.Tenant_RefID           = securityTicket.TenantID;
                        fs_status.TransmitionCode        = 1;
                        fs_status.TransmitionStatusKey   = "preexamination";
                        fs_status.TransmittedOnDate      = DateTime.Now;

                        fs_status.Save(Connection, Transaction);

                        ORM_HEC_BIL_BillPosition hec_gpos_position = new ORM_HEC_BIL_BillPosition();
                        hec_gpos_position.Ext_BIL_BillPosition_RefID = gpos_position.BIL_BillPositionID;
                        hec_gpos_position.Modification_Timestamp     = DateTime.Now;
                        hec_gpos_position.Tenant_RefID = securityTicket.TenantID;
                        hec_gpos_position.PositionFor_Patient_RefID = Parameter.patient_id;

                        hec_gpos_position.Save(Connection, Transaction);

                        ORM_HEC_BIL_BillPosition_BillCode hec_gpos_position_code = new ORM_HEC_BIL_BillPosition_BillCode();
                        hec_gpos_position_code.BillPosition_RefID     = hec_gpos_position.HEC_BIL_BillPositionID;
                        hec_gpos_position_code.IM_BillingCode         = gpos.BillingCode;
                        hec_gpos_position_code.Modification_Timestamp = DateTime.Now;
                        hec_gpos_position_code.PotentialCode_RefID    = gpos.HEC_BIL_PotentialCodeID;
                        hec_gpos_position_code.Tenant_RefID           = securityTicket.TenantID;

                        hec_gpos_position_code.Save(Connection, Transaction);

                        ORM_HEC_CAS_Case_BillCode hec_gpos_case_code = new ORM_HEC_CAS_Case_BillCode();
                        hec_gpos_case_code.HEC_BIL_BillPosition_BillCode_RefID = hec_gpos_position_code.HEC_BIL_BillPosition_BillCodeID;
                        hec_gpos_case_code.HEC_CAS_Case_RefID     = new_case.HEC_CAS_CaseID;
                        hec_gpos_case_code.Modification_Timestamp = DateTime.Now;
                        hec_gpos_case_code.Tenant_RefID           = securityTicket.TenantID;

                        hec_gpos_case_code.Save(Connection, Transaction);

                        ORM_BIL_BillPosition_PropertyValue gpos_management_fee_property_value = new ORM_BIL_BillPosition_PropertyValue();
                        gpos_management_fee_property_value.BIL_BillPosition_RefID           = gpos_position.BIL_BillPositionID;
                        gpos_management_fee_property_value.BIL_BillPosition_PropertyValueID = Guid.NewGuid();
                        gpos_management_fee_property_value.Creation_Timestamp     = DateTime.Now;
                        gpos_management_fee_property_value.Modification_Timestamp = DateTime.Now;
                        gpos_management_fee_property_value.PropertyKey            = "mm.doc.connect.management.fee";
                        gpos_management_fee_property_value.PropertyValue          = "waived";
                        gpos_management_fee_property_value.Tenant_RefID           = securityTicket.TenantID;

                        gpos_management_fee_property_value.Save(Connection, Transaction);

                        bill_header.TotalValue_IncludingTax += Convert.ToDecimal(price_value.PriceValue_Amount);
                    }
                }

                bill_header.Save(Connection, Transaction);
                #endregion
            }

            return(returnValue);

            #endregion UserCode
        }
Esempio n. 7
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5AR_SA_1614 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;
            var languages = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery);

            var product = new ORM_CMN_PRO_Product();

            if (Parameter.ArticleID == Guid.Empty)
            {
                #region ORM_CMN_PRO_Product

                product = new ORM_CMN_PRO_Product();
                product.CMN_PRO_ProductID = Guid.NewGuid();
                product.ProductITL        = Guid.NewGuid().ToString();

                product.IsProduct_Article             = true;
                product.IsProductAvailableForOrdering = true;
                product.IsImportedFromExternalCatalog = false;

                product.Product_Name        = new Dict(ORM_CMN_PRO_Product.TableName);
                product.Product_Description = new Dict(ORM_CMN_PRO_Product.TableName);

                product.PackageInfo_RefID = Guid.NewGuid();

                product.Creation_Timestamp = DateTime.Now;
                product.Tenant_RefID       = securityTicket.TenantID;
                product.IsDeleted          = Parameter.IsDeleted;


                #region Product picture

                if (Parameter.Image != null && Parameter.Image.Document_ID != Guid.Empty)
                {
                    ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                    structureHeader.Label        = "Product picture";
                    structureHeader.Tenant_RefID = securityTicket.TenantID;
                    structureHeader.Save(Connection, Transaction);

                    ORM_DOC_Structure structure = new ORM_DOC_Structure();
                    structure.Label = "Product picture";
                    structure.Structure_Header_RefID  = structureHeader.DOC_Structure_HeaderID;
                    structure.CreatedBy_Account_RefID = securityTicket.AccountID;
                    structure.Tenant_RefID            = securityTicket.TenantID;
                    structure.Save(Connection, Transaction);

                    ORM_DOC_Document document = new ORM_DOC_Document();
                    document.DOC_DocumentID = Parameter.Image.Document_ID;
                    document.Tenant_RefID   = securityTicket.TenantID;
                    document.Save(Connection, Transaction);

                    ORM_DOC_Document_2_Structure documentStructure = new ORM_DOC_Document_2_Structure();
                    documentStructure.Document_RefID        = document.DOC_DocumentID;
                    documentStructure.Structure_RefID       = structure.DOC_StructureID;
                    documentStructure.StructureHeader_RefID = structureHeader.DOC_Structure_HeaderID;
                    documentStructure.Tenant_RefID          = securityTicket.TenantID;
                    documentStructure.Save(Connection, Transaction);

                    ORM_DOC_DocumentRevision documentRevision = new ORM_DOC_DocumentRevision();
                    documentRevision.Document_RefID      = document.DOC_DocumentID;
                    documentRevision.Revision            = 1;
                    documentRevision.IsLocked            = false;
                    documentRevision.IsLastRevision      = true;
                    documentRevision.UploadedByAccount   = securityTicket.AccountID;
                    documentRevision.File_Name           = Parameter.Image.File_Name;
                    documentRevision.File_Description    = Parameter.Image.File_Description;
                    documentRevision.File_SourceLocation = Parameter.Image.File_Source_Location;
                    documentRevision.File_ServerLocation = Parameter.Image.File_Server_Location;
                    documentRevision.File_MIMEType       = Parameter.Image.File_MimeType;
                    documentRevision.File_Extension      = Parameter.Image.File_Extension;
                    documentRevision.File_Size_Bytes     = Parameter.Image.File_Size_Bytes;
                    documentRevision.Tenant_RefID        = securityTicket.TenantID;
                    documentRevision.Save(Connection, Transaction);

                    //add relation for product picture with product
                    product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                }

                #endregion

                product.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                product.Load(Connection, Transaction, Parameter.ArticleID);

                #region Product picture

                if (Parameter.Image != null && Parameter.Image.Document_ID != Guid.Empty)
                {
                    ORM_DOC_Structure_Header structureHeader = new ORM_DOC_Structure_Header();
                    structureHeader.Label        = "Product picture";
                    structureHeader.Tenant_RefID = securityTicket.TenantID;
                    structureHeader.Save(Connection, Transaction);

                    ORM_DOC_Structure structure = new ORM_DOC_Structure();
                    structure.Label = "Product picture";
                    structure.Structure_Header_RefID  = structureHeader.DOC_Structure_HeaderID;
                    structure.CreatedBy_Account_RefID = securityTicket.AccountID;
                    structure.Tenant_RefID            = securityTicket.TenantID;
                    structure.Save(Connection, Transaction);

                    ORM_DOC_Document document = new ORM_DOC_Document();
                    document.DOC_DocumentID = Parameter.Image.Document_ID;
                    document.Tenant_RefID   = securityTicket.TenantID;
                    document.Save(Connection, Transaction);

                    ORM_DOC_Document_2_Structure documentStructure = new ORM_DOC_Document_2_Structure();
                    documentStructure.Document_RefID        = document.DOC_DocumentID;
                    documentStructure.Structure_RefID       = structure.DOC_StructureID;
                    documentStructure.StructureHeader_RefID = structureHeader.DOC_Structure_HeaderID;
                    documentStructure.Tenant_RefID          = securityTicket.TenantID;
                    documentStructure.Save(Connection, Transaction);

                    ORM_DOC_DocumentRevision documentRevision = new ORM_DOC_DocumentRevision();
                    documentRevision.Document_RefID      = document.DOC_DocumentID;
                    documentRevision.Revision            = 1;
                    documentRevision.IsLocked            = false;
                    documentRevision.IsLastRevision      = true;
                    documentRevision.UploadedByAccount   = securityTicket.AccountID;
                    documentRevision.File_Name           = Parameter.Image.File_Name;
                    documentRevision.File_Description    = Parameter.Image.File_Description;
                    documentRevision.File_SourceLocation = Parameter.Image.File_Source_Location;
                    documentRevision.File_ServerLocation = Parameter.Image.File_Server_Location;
                    documentRevision.File_MIMEType       = Parameter.Image.File_MimeType;
                    documentRevision.File_Extension      = Parameter.Image.File_Extension;
                    documentRevision.File_Size_Bytes     = Parameter.Image.File_Size_Bytes;
                    documentRevision.Tenant_RefID        = securityTicket.TenantID;
                    documentRevision.Save(Connection, Transaction);

                    //add relation for product picture with product
                    product.Product_DocumentationStructure_RefID = structureHeader.DOC_Structure_HeaderID;
                }
                else
                {
                    //  if (Parameter.Image.IsForDeleting)  if product image has to be deleted
                }

                #endregion
            }


            #region ORM_CMN_PRO_Product

            product.Product_Number = Parameter.ProductNumber;

            foreach (var language in languages)
            {
                product.Product_Name.UpdateEntry(language.CMN_LanguageID, Parameter.ArticleName);
                product.Product_Description.UpdateEntry(language.CMN_LanguageID, Parameter.Description);
            }

            product.ProductType_RefID = Guid.Empty;

            product.IsPlaceholderArticle = Parameter.IsDummy;

            product.ProductSuccessor_RefID = Guid.Empty;
            product.IsDeleted = Parameter.IsDeleted;
            product.Save(Connection, Transaction);



            #endregion


            //#region ORM_CMN_PRO_Product_2_ProductCode

            //var product2CodeQuery = new ORM_CMN_PRO_Product_2_ProductCode.Query();
            //product2CodeQuery.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID;
            //product2CodeQuery.Tenant_RefID = securityTicket.TenantID;
            //product2CodeQuery.IsDeleted = false;

            //var productCodeAssignment = ORM_CMN_PRO_Product_2_ProductCode.Query.Search(Connection, Transaction, product2CodeQuery).SingleOrDefault();

            //if (productCodeAssignment == null)
            //{
            //    #region ORM_CMN_PRO_ProductCode
            #region Variant
            //Create default varient
            var defaultVarient = new ORM_CMN_PRO_Product_Variant();
            defaultVarient.CMN_PRO_Product_VariantID = Guid.NewGuid();
            defaultVarient.CMN_PRO_Product_RefID     = product.CMN_PRO_ProductID;
            defaultVarient.IsStandardProductVariant  = true;
            defaultVarient.Tenant_RefID = securityTicket.TenantID;
            defaultVarient.VariantName  = new Dict(ORM_CMN_PRO_Product_Variant.TableName);


            foreach (var language in languages)
            {
                defaultVarient.VariantName.UpdateEntry(language.CMN_LanguageID, String.Empty);
            }

            defaultVarient.Save(Connection, Transaction);
            #endregion

            returnValue.Result = product.CMN_PRO_ProductID;
            return(returnValue);

            #endregion UserCode
        }
Esempio n. 8
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_SC_1711 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here
            ORM_CMN_Language.Query all_languagesQ = new ORM_CMN_Language.Query();
            all_languagesQ.Tenant_RefID = securityTicket.TenantID;
            all_languagesQ.IsDeleted    = false;

            var all_languagesL           = ORM_CMN_Language.Query.Search(Connection, Transaction, all_languagesQ).ToArray();
            var intraocular_procedure_id = Guid.Empty;
            var treatment_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
            {
                DoctorID = Parameter.treatment_doctor_id
            }, securityTicket).Result.SingleOrDefault();
            var patient_details = cls_Get_Patient_Details_for_PatientID.Invoke(Connection, Transaction, new P_PA_GPDfPID_1729()
            {
                PatientID = Parameter.patient_id
            }, securityTicket).Result;
            var diagnose_details = cls_Get_Diagnose_Details_for_DiagnoseID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1357()
            {
                DiagnoseID = Parameter.diagnose_id
            }, securityTicket).Result;
            var drug_details = cls_Get_Drug_Details_for_DrugID.Invoke(Connection, Transaction, new P_CAS_GDDfDID_1614()
            {
                DrugID = Parameter.drug_id
            }, securityTicket).Result;

            #region NEW CASE
            ORM_HEC_CAS_Case new_case = new ORM_HEC_CAS_Case();
            new_case.HEC_CAS_CaseID     = Guid.NewGuid();
            new_case.Creation_Timestamp = DateTime.Now;
            new_case.Patient_RefID      = Parameter.patient_id;
            new_case.Patient_FirstName  = patient_details.patient_first_name;
            new_case.Patient_LastName   = patient_details.patient_last_name;
            new_case.Patient_Gender     = patient_details.gender;
            new_case.Patient_BirthDate  = patient_details.birthday;
            new_case.CaseNumber         = cls_Get_Next_Case_Number.Invoke(Connection, Transaction, securityTicket).Result.case_number;

            new_case.Modification_Timestamp = DateTime.Now;

            DateTime today = DateTime.Today;
            int      age   = today.Year - patient_details.birthday.Year;
            if (patient_details.birthday > today.AddYears(-age))
            {
                age--;
            }

            new_case.Patient_Age  = age;
            new_case.Tenant_RefID = securityTicket.TenantID;

            new_case.Save(Connection, Transaction);

            returnValue.Result = new_case.HEC_CAS_CaseID;
            #endregion NEW CASE

            #region INITIAL PERFORMED ACTION
            var initial_performed_action_id = cls_Create_Initial_Performed_Action.Invoke(Connection, Transaction, new P_CAS_CIPA_1140()
            {
                all_languagesL = all_languagesL,
                case_id        = new_case.HEC_CAS_CaseID,
                patient_id     = Parameter.patient_id,
                practice_id    = Parameter.practice_id
            }, securityTicket).Result;
            #endregion INITIAL PERFORMED ACTION

            #region POTENTIAL PROCEDURE
            ORM_HEC_TRE_PotentialProcedure_Package.Query intraocular_packageQ = new ORM_HEC_TRE_PotentialProcedure_Package.Query();
            intraocular_packageQ.Tenant_RefID             = securityTicket.TenantID;
            intraocular_packageQ.IsDeleted                = false;
            intraocular_packageQ.GlobalPropertyMatchingID = "mm.docconect.doc.app.intraocular.package";

            var intraocular_package = ORM_HEC_TRE_PotentialProcedure_Package.Query.Search(Connection, Transaction, intraocular_packageQ).FirstOrDefault();
            if (intraocular_package != null)
            {
                ORM_HEC_TRE_PotentialProcedure_2_ProcedurePackage.Query procedure_2_packageQ = new ORM_HEC_TRE_PotentialProcedure_2_ProcedurePackage.Query();
                procedure_2_packageQ.Tenant_RefID = securityTicket.TenantID;
                procedure_2_packageQ.IsDeleted    = false;
                procedure_2_packageQ.HEC_TRE_PotentialProcedure_Package_RefID = intraocular_package.HEC_TRE_PotentialProcedure_PackageID;

                var procedure_2_package = ORM_HEC_TRE_PotentialProcedure_2_ProcedurePackage.Query.Search(Connection, Transaction, procedure_2_packageQ).FirstOrDefault();
                if (procedure_2_package != null)
                {
                    intraocular_procedure_id = procedure_2_package.HEC_TRE_PotentialProcedure_RefID;
                }
                else
                {
                    intraocular_procedure_id = cls_Create_Potential_Procedure.Invoke(Connection, Transaction, securityTicket).Result;
                }
            }
            else
            {
                intraocular_procedure_id = cls_Create_Potential_Procedure.Invoke(Connection, Transaction, securityTicket).Result;
            }
            #endregion POTENTIAL PROCEDURE

            #region TREATMENT PLANNED ACTION
            cls_Create_Treatment_Planned_Action.Invoke(Connection, Transaction, new P_CAS_CTPA_1225()
            {
                all_languagesL = all_languagesL,
                case_id        = new_case.HEC_CAS_CaseID,
                diagnose_id    = Parameter.diagnose_id,
                initial_performed_action_id = initial_performed_action_id,
                drug_id = Parameter.drug_id,
                intraocular_procedure_id = intraocular_procedure_id,
                is_confirmed             = Parameter.is_confirmed,
                is_left_eye         = Parameter.is_left_eye,
                patient_id          = Parameter.patient_id,
                practice_id         = Parameter.practice_id,
                treatment_date      = Parameter.treatment_date,
                treatment_doctor_id = Parameter.treatment_doctor_id
            }, securityTicket);
            #endregion TREATMENT PLANNED ACTION

            #region AFTERCARE PLANNED ACTION
            if (Parameter.aftercare_doctor_practice_id != Guid.Empty)
            {
                cls_Create_Aftercare_Planned_Action.Invoke(Connection, Transaction, new P_CAS_CAPA_1237()
                {
                    aftercare_doctor_practice_id = Parameter.aftercare_doctor_practice_id,
                    all_languagesL = all_languagesL,
                    case_id        = new_case.HEC_CAS_CaseID,
                    patient_id     = Parameter.patient_id,
                    practice_id    = Parameter.practice_id,
                    treatment_date = Parameter.treatment_date
                }, securityTicket);
            }
            #endregion AFTERCARE PLANNED ACTION

            #region ADD GPOS TO THE CASE
            cls_Add_GPOS_to_Case.Invoke(Connection, Transaction, new P_CAS_AGPOStC_0906()
            {
                ac_doctor_id        = Parameter.aftercare_doctor_practice_id,
                all_languagesL      = all_languagesL,
                case_id             = new_case.HEC_CAS_CaseID,
                diagnose_id         = Parameter.diagnose_id,
                drug_id             = Parameter.drug_id,
                patient_id          = Parameter.patient_id,
                treatment_doctor_id = Parameter.treatment_doctor_id,
                localization        = Parameter.is_left_eye ? "L" : "R",
                treatment_gpos      = Parameter.treatment_gpos,
                aftercare_gpos      = Parameter.aftercare_gpos,
                bevacizumab_gpos    = Parameter.bevacizumab_gpos,
                management_fee_gpos = Parameter.management_fee_gpos
            }, securityTicket);
            #endregion

            #region IMPORT TO ELASTIC


            Case_Model case_model_elastic = new Case_Model();

            case_model_elastic.diagnose     = diagnose_details != null ? diagnose_details.diagnose_name + " (" + diagnose_details.catalog_display_name + ": " + diagnose_details.diagnose_icd_10 + ")" : "";
            case_model_elastic.drug         = drug_details != null ? drug_details.drug_name : "";
            case_model_elastic.id           = new_case.HEC_CAS_CaseID.ToString();
            case_model_elastic.localization = Parameter.diagnose_id == Guid.Empty ? "-" : Parameter.is_left_eye ? "L" : "R";
            case_model_elastic.previous_status_drug_order = "";
            case_model_elastic.status_treatment           = "OP1";
            case_model_elastic.diagnose_id                  = Parameter.diagnose_id.ToString();
            case_model_elastic.drug_id                      = Parameter.drug_id.ToString();
            case_model_elastic.patient_id                   = Parameter.patient_id.ToString();
            case_model_elastic.treatment_doctor_id          = Parameter.treatment_doctor_id.ToString();
            case_model_elastic.aftercare_doctor_practice_id = Parameter.aftercare_doctor_practice_id.ToString();
            case_model_elastic.patient_name                 = patient_details != null ? patient_details.patient_last_name + ", " + patient_details.patient_first_name : "";
            case_model_elastic.patient_birthdate_string     = patient_details.birthday.ToString("dd.MM.yyyy");
            case_model_elastic.patient_birthdate            = patient_details.birthday;

            var    is_aftercare_doctor = true;
            string aftercare_name      = "";

            var aftercare_doctor_details = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
            {
                DoctorID = Parameter.aftercare_doctor_practice_id
            }, securityTicket).Result.SingleOrDefault();

            if (aftercare_doctor_details != null)
            {
                case_model_elastic.aftercare_name = aftercare_doctor_details.title + " " + aftercare_doctor_details.last_name + " " + aftercare_doctor_details.first_name;
                case_model_elastic.aftercare_doctors_practice_name = aftercare_doctor_details.practice;
                case_model_elastic.aftercare_practice_bsnr         = aftercare_doctor_details.BSNR;

                aftercare_name = aftercare_doctor_details.title + " " + aftercare_doctor_details.first_name + " " + aftercare_doctor_details.last_name;
            }
            else
            {
                is_aftercare_doctor = false;
                var aftercare_practice_details = cls_Get_Practice_Details_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPDfPID_1432()
                {
                    PracticeID = Parameter.aftercare_doctor_practice_id
                }, securityTicket).Result.FirstOrDefault();
                if (aftercare_practice_details != null)
                {
                    case_model_elastic.aftercare_name          = aftercare_practice_details.practice_name;
                    case_model_elastic.aftercare_practice_bsnr = aftercare_doctor_details.BSNR;

                    aftercare_name = aftercare_practice_details.practice_name;
                }
                else
                {
                    case_model_elastic.aftercare_name = "-";
                }
            }

            case_model_elastic.is_aftercare_doctor = is_aftercare_doctor;
            DateTime treatment_date = DateTime.SpecifyKind(Parameter.treatment_date, DateTimeKind.Local);
            case_model_elastic.treatment_date            = Parameter.treatment_date;
            case_model_elastic.treatment_date_day_month  = Parameter.treatment_date.ToString("dd.MM.");
            case_model_elastic.treatment_date_month_year = Parameter.treatment_date.ToString("MMMM yyyy", new System.Globalization.CultureInfo("de", true));
            case_model_elastic.treatment_doctor_name     = treatment_doctor_details != null ? treatment_doctor_details.title + " " + treatment_doctor_details.first_name + " " + treatment_doctor_details.last_name : "-";
            case_model_elastic.practice_id          = Parameter.practice_id.ToString();
            case_model_elastic.delivery_time_string = case_model_elastic.delivery_time_from.ToString("HH:mm") + " - " + case_model_elastic.delivery_time_to.ToString("HH:mm");

            List <Case_Model> cases = new List <Case_Model>();
            cases.Add(case_model_elastic);

            Add_New_Case.Import_Case_Data_to_ElasticDB(cases, securityTicket.TenantID.ToString());

            #endregion IMPORT TO ELASTIC


            return(returnValue);

            #endregion UserCode
        }
Esempio n. 9
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3CA_IC_1426 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode

            var returnValue = new FR_Guid();

            #region Tenant is already subscribed to this catalog

            var subscribedCatalogQuery = new ORM_CMN_PRO_SubscribedCatalog.Query();
            subscribedCatalogQuery.Tenant_RefID   = securityTicket.TenantID;
            subscribedCatalogQuery.CatalogCodeITL = Parameter.CatalogCodeITL;
            subscribedCatalogQuery.IsDeleted      = false;

            var alreadySubscribedCatalog = ORM_CMN_PRO_SubscribedCatalog.Query.Search(Connection, Transaction, subscribedCatalogQuery).FirstOrDefault();

            if (alreadySubscribedCatalog != null)
            {
                throw new Exception("Tenant is already subscribed to this catalog!");
            }

            #endregion

            #region All tenant's languages

            var allTenantLanguages = cls_Get_All_Languages.Invoke(Connection, Transaction, securityTicket).Result.ToList();

            #endregion

            #region Get catalog's language or create it

            // check if language with that ISO exists for Tenant (Lower, exmpl de)
            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.ISO_639_1    = Parameter.CatalogLanguage_ISO_639_1_codes.ToLower();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;

            var language = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery).FirstOrDefault();

            // if language does not exist for that Tenant
            if (language == null)
            {
                //check if language with that ISO exists for Tenant (Upper exmpl DE)
                languageQuery              = new ORM_CMN_Language.Query();
                languageQuery.ISO_639_1    = Parameter.CatalogLanguage_ISO_639_1_codes.ToUpper();
                languageQuery.Tenant_RefID = securityTicket.TenantID;
                languageQuery.IsDeleted    = false;

                language = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery).FirstOrDefault();

                // if language does not exist for that Tenant create it
                if (language == null)
                {
                    language = new ORM_CMN_Language();
                    language.CMN_LanguageID = Guid.NewGuid();
                    language.ISO_639_1      = Parameter.CatalogLanguage_ISO_639_1_codes;
                    language.Name           = new Dict(ORM_CMN_Currency.TableName);
                    foreach (var item in allTenantLanguages)
                    {
                        language.Name.AddEntry(item.CMN_LanguageID, "CatalogLanguage - " + Parameter.CatalogLanguage_ISO_639_1_codes);
                    }
                    language.Creation_Timestamp = DateTime.Now;
                    language.Tenant_RefID       = securityTicket.TenantID;
                    language.IsDeleted          = false;
                    language.Save(Connection, Transaction);
                }
            }

            #endregion

            #region Get catalog's currency or create it

            // check if currency with that ISO exists for Tenant
            var currencyQuery = new ORM_CMN_Currency.Query();
            currencyQuery.ISO4127      = Parameter.CatalogCurrency_ISO_4217.ToUpper();
            currencyQuery.Tenant_RefID = securityTicket.TenantID;
            currencyQuery.IsDeleted    = false;

            var currency = ORM_CMN_Currency.Query.Search(Connection, Transaction, currencyQuery).FirstOrDefault();

            if (currency == null)
            {
                currencyQuery              = new ORM_CMN_Currency.Query();
                currencyQuery.ISO4127      = Parameter.CatalogCurrency_ISO_4217.ToLower();
                currencyQuery.Tenant_RefID = securityTicket.TenantID;
                currencyQuery.IsDeleted    = false;

                currency = ORM_CMN_Currency.Query.Search(Connection, Transaction, currencyQuery).FirstOrDefault();

                if (currency == null)
                {
                    currency = new ORM_CMN_Currency();
                    currency.CMN_CurrencyID = Guid.NewGuid();
                    currency.ISO4127        = Parameter.CatalogCurrency_ISO_4217;
                    currency.Name           = new Dict(ORM_CMN_Currency.TableName);
                    foreach (var item in allTenantLanguages)
                    {
                        currency.Name.AddEntry(item.CMN_LanguageID, "CatalogCurrency - " + Parameter.CatalogCurrency_ISO_4217);
                    }
                    currency.Tenant_RefID       = securityTicket.TenantID;
                    currency.Creation_Timestamp = DateTime.Now;
                    currency.Save(Connection, Transaction);
                }
            }

            #endregion

            /*
             * @save ORM_CMN_PRO_SubscribedCatalog
             * */
            var subscribedCatalog = new ORM_CMN_PRO_SubscribedCatalog();
            subscribedCatalog.CMN_PRO_SubscribedCatalogID = Guid.NewGuid();
            subscribedCatalog.CatalogCodeITL         = Parameter.CatalogCodeITL;
            subscribedCatalog.SubscribedCatalog_Name = Parameter.CatalogName;
            subscribedCatalog.SubscribedBy_BusinessParticipant_RefID = Guid.Empty; // This ClassLib is not used by Lucentis
            subscribedCatalog.Tenant_RefID = securityTicket.TenantID;
            subscribedCatalog.SubscribedCatalog_ValidFrom    = Parameter.ValidFrom_Date;
            subscribedCatalog.SubscribedCatalog_ValidThrough = Parameter.ValidTo_Date;
            subscribedCatalog.SubscribedCatalog_Description  = Parameter.CatalogDescription;
            subscribedCatalog.Creation_Timestamp             = DateTime.Now;
            subscribedCatalog.IsDeleted = false;
            subscribedCatalog.SubscribedCatalog_CurrentRevision = Parameter.CatalogVersion;
            subscribedCatalog.IsCatalogPublic = Parameter.IsCatalogPublic;

            subscribedCatalog.SubscribedCatalog_Language_RefID = language.CMN_LanguageID;
            subscribedCatalog.SubscribedCatalog_Currency_RefID = currency.CMN_CurrencyID;

            #region Create product group

            ORM_CMN_PRO_ProductGroup productGroup = new ORM_CMN_PRO_ProductGroup();

            var productGroupQuery = new ORM_CMN_PRO_ProductGroup.Query();
            productGroupQuery.Tenant_RefID = securityTicket.TenantID;
            productGroupQuery.IsDeleted    = false;
            if (Parameter.IsCatalogPublic == false)
            {
                if (Parameter.CatalogType == EnumUtils.GetEnumDescription(EPrivateCatalogType.SpecialRequests))
                {
                    productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.SpecialRequests);
                }
                else if (Parameter.CatalogType == EnumUtils.GetEnumDescription(EPrivateCatalogType.Houselist))
                {
                    productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.HauseList);
                }
                else if (Parameter.CatalogType == EnumUtils.GetEnumDescription(EPrivateCatalogType.Treatment))
                {
                    productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.Treatment);
                }
            }
            else
            {
                productGroupQuery.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.ABDA);
            }

            productGroup = ORM_CMN_PRO_ProductGroup.Query.Search(Connection, Transaction, productGroupQuery).FirstOrDefault();

            if (productGroup == null)
            {
                /*
                 * @Create product group for products if product group for that BP and Tenent does not exist
                 * */
                productGroup = new ORM_CMN_PRO_ProductGroup();
                productGroup.Tenant_RefID           = securityTicket.TenantID;
                productGroup.Creation_Timestamp     = DateTime.Now;
                productGroup.CMN_PRO_ProductGroupID = Guid.NewGuid();
                productGroup.ProductGroup_Name      = new Dict(ORM_CMN_PRO_ProductGroup.TableName);

                if (Parameter.IsCatalogPublic == false)
                {
                    if (Parameter.CatalogType == EnumUtils.GetEnumDescription(EPrivateCatalogType.SpecialRequests))
                    {
                        productGroup.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.SpecialRequests);
                        productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "SpecialRequests Group");
                    }
                    else if (Parameter.CatalogType == EnumUtils.GetEnumDescription(EPrivateCatalogType.Houselist))
                    {
                        productGroup.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.HauseList);
                        productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "HauseList Group");
                    }
                    else if (Parameter.CatalogType == EnumUtils.GetEnumDescription(EPrivateCatalogType.Treatment))
                    {
                        productGroup.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.Treatment);
                        productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "HauseList Group");
                    }
                }
                else
                {
                    productGroup.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EProductGroup.ABDA);
                    productGroup.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "ABDA Group");
                }

                productGroup.Save(Connection, Transaction);
            }
            #endregion

            #region Create priceList for catalog

            /*
             * @create pricelist_Release
             * */
            ORM_CMN_SLS_Pricelist_Release pricelist_Release = new ORM_CMN_SLS_Pricelist_Release();
            pricelist_Release.CMN_SLS_Pricelist_ReleaseID = Guid.NewGuid();
            pricelist_Release.Release_Version             = "v1";
            if (Parameter.IsCatalogPublic == false)
            {
                pricelist_Release.PricelistRelease_ValidFrom = Parameter.ValidFrom_Date;
                pricelist_Release.PricelistRelease_ValidTo   = Parameter.ValidTo_Date;
            }
            else
            {
                pricelist_Release.IsPricelistAlwaysActive = true;
            }
            pricelist_Release.Tenant_RefID       = securityTicket.TenantID;
            pricelist_Release.Creation_Timestamp = DateTime.Now;
            pricelist_Release.Pricelist_RefID    = Guid.NewGuid();
            pricelist_Release.Save(Connection, Transaction);

            /*
             * @create pricelist
             * */
            ORM_CMN_SLS_Pricelist priceList = new ORM_CMN_SLS_Pricelist();
            priceList.CMN_SLS_PricelistID = pricelist_Release.Pricelist_RefID;

            Dict nameDict = new Dict("cmn_sls_pricelist");
            if (Parameter.IsCatalogPublic == false)
            {
                for (int i = 0; i < allTenantLanguages.Count; i++)
                {
                    nameDict.AddEntry(allTenantLanguages[i].CMN_LanguageID, Parameter.CatalogName + "_" + Parameter.ValidFrom_Date.ToShortDateString() + "_" + Parameter.ValidTo_Date.ToShortDateString());
                }
            }
            else
            {
                for (int i = 0; i < allTenantLanguages.Count; i++)
                {
                    nameDict.AddEntry(allTenantLanguages[i].CMN_LanguageID, EPriceList.ABDAPriceList.ToString());
                }

                priceList.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EPriceList.ABDAPriceList);
            }
            priceList.Pricelist_Name     = nameDict;
            priceList.Tenant_RefID       = securityTicket.TenantID;
            priceList.Creation_Timestamp = DateTime.Now;
            priceList.Save(Connection, Transaction);

            #endregion

            #region Create Supplier

            var CMN_BPT_SupplierID = cls_CreateOrUpdateSupplier_for_ImportedCatalog.Invoke(Connection, Transaction, Parameter.SupplierData, securityTicket).Result;

            #endregion

            subscribedCatalog.SubscribedCatalog_PricelistRelease_RefID = pricelist_Release.CMN_SLS_Pricelist_ReleaseID;
            subscribedCatalog.PublishingSupplier_RefID = CMN_BPT_SupplierID;
            subscribedCatalog.Save(Connection, Transaction);

            if (Parameter.IsCatalogPublic == false)
            {
                var importProductsParam = new P_L3AR_IoUPfSC_1325();
                importProductsParam.SubscribedCatalogID = subscribedCatalog.CMN_PRO_SubscribedCatalogID;
                importProductsParam.CatalogCurrencyID   = subscribedCatalog.SubscribedCatalog_Currency_RefID;
                importProductsParam.CatalogLanguageID   = subscribedCatalog.SubscribedCatalog_Language_RefID;
                importProductsParam.ProductGroupID      = productGroup.CMN_PRO_ProductGroupID;
                importProductsParam.PriceListReleaseID  = pricelist_Release.CMN_SLS_Pricelist_ReleaseID;
                importProductsParam.Products            = Parameter.Products;

                cls_ImportOrUpdate_Products_for_SubscribedCatalog.Invoke(Connection, Transaction, importProductsParam, securityTicket);
            }
            else
            {
                #region Create Recommended ABDA Sales PriceList

                var recommendedABDASalsesPrice_priceList = ORM_CMN_SLS_Pricelist.Query.Search(Connection, Transaction, new ORM_CMN_SLS_Pricelist.Query()
                {
                    GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EPriceList.RecommendedABDASalesPriceList),
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                }).SingleOrDefault();

                if (recommendedABDASalsesPrice_priceList == null)
                {
                    recommendedABDASalsesPrice_priceList = new ORM_CMN_SLS_Pricelist();
                    recommendedABDASalsesPrice_priceList.CMN_SLS_PricelistID = Guid.NewGuid();
                    recommendedABDASalsesPrice_priceList.Pricelist_Name      = new Dict("cmn_sls_pricelist");
                    foreach (var lang in allTenantLanguages)
                    {
                        recommendedABDASalsesPrice_priceList.Pricelist_Name.AddEntry(lang.CMN_LanguageID, EPriceList.RecommendedABDASalesPriceList.ToString());
                    }
                    recommendedABDASalsesPrice_priceList.GlobalPropertyMatchingID = EnumUtils.GetEnumDescription(EPriceList.RecommendedABDASalesPriceList);
                    recommendedABDASalsesPrice_priceList.Tenant_RefID             = securityTicket.TenantID;
                    recommendedABDASalsesPrice_priceList.Creation_Timestamp       = DateTime.Now;
                    recommendedABDASalsesPrice_priceList.Save(Connection, Transaction);

                    ORM_CMN_SLS_Pricelist_Release recommendedABDASalsesPrice_pricelist_Release = new ORM_CMN_SLS_Pricelist_Release();
                    recommendedABDASalsesPrice_pricelist_Release.CMN_SLS_Pricelist_ReleaseID = Guid.NewGuid();
                    recommendedABDASalsesPrice_pricelist_Release.Release_Version             = "v1";
                    recommendedABDASalsesPrice_pricelist_Release.IsPricelistAlwaysActive     = true;
                    recommendedABDASalsesPrice_pricelist_Release.Tenant_RefID       = securityTicket.TenantID;
                    recommendedABDASalsesPrice_pricelist_Release.Creation_Timestamp = DateTime.Now;
                    recommendedABDASalsesPrice_pricelist_Release.Pricelist_RefID    = recommendedABDASalsesPrice_priceList.CMN_SLS_PricelistID;
                    recommendedABDASalsesPrice_pricelist_Release.Save(Connection, Transaction);
                }


                #endregion
            }

            return(returnValue);

            #endregion UserCode
        }
Esempio n. 10
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5AR_SA_1525 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;

            var languages = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery);

            var product = new ORM_CMN_PRO_Product();

            if (Parameter.ArticleID == Guid.Empty)
            {
                #region ORM_CMN_PRO_Product

                product = new ORM_CMN_PRO_Product();
                product.CMN_PRO_ProductID = Guid.NewGuid();
                product.ProductITL        = Guid.NewGuid().ToString();

                product.IsProduct_Article             = true;
                product.IsProductAvailableForOrdering = true;
                product.IsImportedFromExternalCatalog = false;

                product.Product_Name        = new Dict(ORM_CMN_PRO_Product.TableName);
                product.Product_Description = new Dict(ORM_CMN_PRO_Product.TableName);

                product.PackageInfo_RefID = Guid.NewGuid();

                product.Creation_Timestamp = DateTime.Now;
                product.Tenant_RefID       = securityTicket.TenantID;

                product.Save(Connection, Transaction);

                #endregion

                #region CustomArticles Group

                var customerArticlesGroupID = Guid.Empty;

                var customArticlesGlobalMatching = EnumUtils.GetEnumDescription(EProductGroup.CustomArticles);

                var customerArticlesGroup = ORM_CMN_PRO_ProductGroup.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ProductGroup.Query()
                {
                    GlobalPropertyMatchingID = customArticlesGlobalMatching,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                });

                if (customerArticlesGroup == null || customerArticlesGroup.Count() == 0)
                {
                    var group = new ORM_CMN_PRO_ProductGroup();
                    group.CMN_PRO_ProductGroupID   = Guid.NewGuid();
                    group.GlobalPropertyMatchingID = customArticlesGlobalMatching;
                    group.ProductGroup_Name        = new Dict(ORM_CMN_PRO_ProductGroup.TableName);
                    foreach (var language in languages)
                    {
                        group.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "Custom Articles");
                    }
                    group.ProductGroup_Description = new Dict(ORM_CMN_PRO_ProductGroup.TableName);
                    group.IsDeleted          = false;
                    group.Creation_Timestamp = DateTime.Now;
                    group.Tenant_RefID       = securityTicket.TenantID;
                    group.Save(Connection, Transaction);

                    customerArticlesGroupID = group.CMN_PRO_ProductGroupID;
                }
                else
                {
                    customerArticlesGroupID = customerArticlesGroup.Single().CMN_PRO_ProductGroupID;
                }

                var product2Group = new ORM_CMN_PRO_Product_2_ProductGroup();
                product2Group.AssignmentID               = Guid.NewGuid();
                product2Group.CMN_PRO_Product_RefID      = product.CMN_PRO_ProductID;
                product2Group.CMN_PRO_ProductGroup_RefID = customerArticlesGroupID;
                product2Group.Creation_Timestamp         = DateTime.Now;
                product2Group.Tenant_RefID               = securityTicket.TenantID;
                product2Group.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                product.Load(Connection, Transaction, Parameter.ArticleID);
            }

            #region ORM_CMN_PRO_Product

            product.Product_Number = Parameter.PZN;

            foreach (var language in languages)
            {
                product.Product_Name.UpdateEntry(language.CMN_LanguageID, Parameter.ArticleName);
            }

            foreach (var language in languages)
            {
                product.Product_Description.UpdateEntry(language.CMN_LanguageID, Parameter.Notice);
            }

            product.DefaultStorageTemperature_min_in_kelvin = Parameter.StorageTemperatureFrom_in_kelvin;
            product.DefaultStorageTemperature_max_in_kelvin = Parameter.StorageTemperatureTo_in_kelvin;
            product.DefaultExpirationPeriod_in_sec          = Parameter.Expiring_in_seconds;

            product.ProductType_RefID = Parameter.ArticleType_RefID;

            product.IsPlaceholderArticle = Parameter.IsDummy;

            product.IsStorage_CoolingRequired      = Parameter.IsStorage_CoolingRequired;
            product.IsStorage_BatchNumberMandatory = Parameter.IsStorage_BatchNumberMandatory;
            product.IsStorage_ExpiryDateMandatory  = Parameter.IsStorage_ExpiryDateMandatory;
            product.IsProductPartOfDefaultStock    = Parameter.IsProduct_PartOfDefaultStock;

            var xml = new ProductAdditionalInfoXML()
            {
                IsPharmacyOnlyDistribution = Parameter.IsProduct_PharmacyOnlyDistribution
            };
            product.ProductAdditionalInfoXML = xml.ToPayload();

            product.ProductSuccessor_RefID = Parameter.ProductSuccessor_RefID;

            product.Save(Connection, Transaction);

            #endregion

            #region ORM_HEC_Product

            var query = new ORM_HEC_Product.Query();
            query.Ext_PRO_Product_RefID = product.CMN_PRO_ProductID;
            query.IsDeleted             = false;
            query.Tenant_RefID          = securityTicket.TenantID;

            var hecProduct = ORM_HEC_Product.Query.Search(Connection, Transaction, query).SingleOrDefault();
            if (hecProduct == null)
            {
                hecProduct = new ORM_HEC_Product();
                hecProduct.HEC_ProductID         = Guid.NewGuid();
                hecProduct.Ext_PRO_Product_RefID = product.CMN_PRO_ProductID;
                hecProduct.Creation_Timestamp    = DateTime.Now;
                hecProduct.Tenant_RefID          = securityTicket.TenantID;
            }
            hecProduct.ProductDosageForm_RefID = Parameter.DosageForm_RefID;
            hecProduct.IsProduct_AddictiveDrug = Parameter.IsProduct_AddictiveDrug;
            hecProduct.Save(Connection, Transaction);

            #endregion

            #region ORM_CMN_PRO_Product_2_ProductGroup

            var groupQuery = new ORM_CMN_PRO_Product_2_ProductGroup.Query();
            groupQuery.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID;
            groupQuery.IsDeleted             = false;
            groupQuery.Tenant_RefID          = securityTicket.TenantID;

            var alreadyPersistedGroups = ORM_CMN_PRO_Product_2_ProductGroup.Query.Search(Connection, Transaction, groupQuery);

            //delete removed groups
            foreach (var item in alreadyPersistedGroups)
            {
                var globalGroup = new ORM_CMN_PRO_ProductGroup();
                globalGroup.Load(Connection, Transaction, item.CMN_PRO_ProductGroup_RefID);

                if (!Parameter.ArticleGroup_RefIDs.Contains(item.CMN_PRO_ProductGroup_RefID) && String.IsNullOrEmpty(globalGroup.GlobalPropertyMatchingID))
                {
                    item.IsDeleted = true;
                    item.Save(Connection, Transaction);
                }
            }

            //add new groups
            foreach (var groupID in Parameter.ArticleGroup_RefIDs)
            {
                if (!alreadyPersistedGroups.Select(i => i.CMN_PRO_ProductGroup_RefID).Contains(groupID))
                {
                    var group = new ORM_CMN_PRO_Product_2_ProductGroup();
                    group.AssignmentID               = Guid.NewGuid();
                    group.CMN_PRO_Product_RefID      = product.CMN_PRO_ProductID;
                    group.CMN_PRO_ProductGroup_RefID = groupID;
                    group.Creation_Timestamp         = DateTime.Now;
                    group.Tenant_RefID               = securityTicket.TenantID;
                    group.Save(Connection, Transaction);
                }
            }

            #endregion

            #region ORM_CMN_PRO_Product_SalesTaxAssignmnet

            var salesTaxQuery = new ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query();
            salesTaxQuery.Product_RefID = product.CMN_PRO_ProductID;
            salesTaxQuery.IsDeleted     = false;
            salesTaxQuery.Tenant_RefID  = securityTicket.TenantID;

            var salesTax = ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query.Search(Connection, Transaction, salesTaxQuery).SingleOrDefault();
            if (salesTax == null)
            {
                salesTax = new ORM_CMN_PRO_Product_SalesTaxAssignmnet();
                salesTax.CMN_PRO_Product_SalesTaxAssignmnetID = Guid.NewGuid();
                salesTax.Product_RefID      = product.CMN_PRO_ProductID;
                salesTax.Creation_Timestamp = DateTime.Now;
                salesTax.Tenant_RefID       = securityTicket.TenantID;
            }
            salesTax.ApplicableSalesTax_RefID = Parameter.VAT_RefID;
            salesTax.Save(Connection, Transaction);

            #endregion

            #region ORM_CMN_PRO_Product_2_ProductCode

            var product2CodeQuery = new ORM_CMN_PRO_Product_2_ProductCode.Query();
            product2CodeQuery.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID;
            product2CodeQuery.Tenant_RefID          = securityTicket.TenantID;
            product2CodeQuery.IsDeleted             = false;

            var productCodeAssignment = ORM_CMN_PRO_Product_2_ProductCode.Query.Search(Connection, Transaction, product2CodeQuery).SingleOrDefault();

            if (productCodeAssignment == null)
            {
                #region ORM_CMN_PRO_ProductCode

                //Get Product Code Type or create it if not exist
                var eanID = DMProductCodeTypes.Get_ProductCodeType_ByGlobalMatchingID(Connection, Transaction, EProductCodeType.EAN, securityTicket);

                var productCode = new ORM_CMN_PRO_ProductCode();
                productCode.CMN_PRO_ProductCodeID  = Guid.NewGuid();
                productCode.ProductCode_Type_RefID = eanID;
                productCode.ProductCode_Value      = Parameter.EAN;
                productCode.Creation_Timestamp     = DateTime.Now;
                productCode.Tenant_RefID           = securityTicket.TenantID;
                productCode.Save(Connection, Transaction);

                #endregion

                #region ORM_CMN_PRO_Product_2_ProductCode

                var product2Code = new ORM_CMN_PRO_Product_2_ProductCode();
                product2Code.AssignmentID              = Guid.NewGuid();
                product2Code.CMN_PRO_Product_RefID     = product.CMN_PRO_ProductID;
                product2Code.CMN_PRO_ProductCode_RefID = productCode.CMN_PRO_ProductCodeID;
                product2Code.Creation_Timestamp        = DateTime.Now;
                product2Code.Tenant_RefID              = securityTicket.TenantID;
                product2Code.Save(Connection, Transaction);

                #endregion
            }
            else
            {
                #region ORM_CMN_PRO_ProductCode

                var productCode = new ORM_CMN_PRO_ProductCode();
                productCode.Load(Connection, Transaction, productCodeAssignment.CMN_PRO_ProductCode_RefID);
                productCode.ProductCode_Value = Parameter.EAN;
                productCode.Save(Connection, Transaction);

                #endregion
            }

            #endregion

            #region ORM_CMN_PRO_PackageInfo

            var packageInfo = new ORM_CMN_PRO_PAC_PackageInfo();
            packageInfo.Load(Connection, Transaction, product.PackageInfo_RefID);
            if (packageInfo.CMN_PRO_PAC_PackageInfoID == Guid.Empty)
            {
                packageInfo = new ORM_CMN_PRO_PAC_PackageInfo();
                packageInfo.CMN_PRO_PAC_PackageInfoID = product.PackageInfo_RefID;
                packageInfo.Creation_Timestamp        = DateTime.Now;
                packageInfo.Tenant_RefID = securityTicket.TenantID;
            }
            packageInfo.PackageContent_Amount               = PackageAmountUtils.GetPackageAmount(Parameter.UnitAmount);
            packageInfo.PackageContent_DisplayLabel         = Parameter.UnitAmount;
            packageInfo.PackageContent_MeasuredInUnit_RefID = Parameter.Unit_RefID;
            packageInfo.Save(Connection, Transaction);

            #endregion

            #region Producer

            var producer = new ORM_CMN_BPT_BusinessParticipant();
            producer.Load(Connection, Transaction, product.ProducingBusinessParticipant_RefID);
            if (producer.CMN_BPT_BusinessParticipantID == Guid.Empty)
            {
                producer.CMN_BPT_BusinessParticipantID = Guid.NewGuid();
                producer.IsCompany          = true;
                producer.Tenant_RefID       = securityTicket.TenantID;
                producer.Creation_Timestamp = DateTime.Now;

                product.ProducingBusinessParticipant_RefID = producer.CMN_BPT_BusinessParticipantID;
                product.Save(Connection, Transaction);
            }
            producer.DisplayName = Parameter.Producer;
            producer.Save(Connection, Transaction);

            #endregion

            returnValue.Result = product.CMN_PRO_ProductID;
            return(returnValue);

            #endregion UserCode
        }
Esempio n. 11
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L3CA_IC_1527 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Guid();

            //Put your code here
            #region All tenant's languages
            P_L2LN_GALFTID_1530 langParam = new P_L2LN_GALFTID_1530();
            langParam.Tenant_RefID = securityTicket.TenantID;
            var allTenantLanguages = cls_Get_All_Languages_ForTenantID.Invoke(Connection, Transaction, langParam, securityTicket).Result;
            #endregion

            #region Get catalog's language or create it
            // check if language with that ISO exists for Tenant (Lower, exmpl de)
            var languageQuery = new ORM_CMN_Language.Query();
            languageQuery.ISO_639_1    = Parameter.CatalogLanguage_ISO_639_1.ToLower();
            languageQuery.Tenant_RefID = securityTicket.TenantID;
            languageQuery.IsDeleted    = false;

            var language = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery).FirstOrDefault();

            // if language does not exist for that Tenant
            if (language == null)
            {
                //check if language with that ISO exists for Tenant (Upper exmpl DE)
                languageQuery              = new ORM_CMN_Language.Query();
                languageQuery.ISO_639_1    = Parameter.CatalogLanguage_ISO_639_1.ToUpper();
                languageQuery.Tenant_RefID = securityTicket.TenantID;
                languageQuery.IsDeleted    = false;

                language = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery).FirstOrDefault();

                // if language does not exist for that Tenant create it
                if (language == null)
                {
                    language = new ORM_CMN_Language();
                    language.CMN_LanguageID = Guid.NewGuid();
                    language.ISO_639_1      = Parameter.CatalogLanguage_ISO_639_1;
                    language.Name           = new Dict(ORM_CMN_Language.TableName);
                    foreach (var item in allTenantLanguages)
                    {
                        language.Name.AddEntry(item.CMN_LanguageID, "CatalogLanguage - " + Parameter.CatalogLanguage_ISO_639_1);
                    }
                    language.Creation_Timestamp = DateTime.Now;
                    language.Tenant_RefID       = securityTicket.TenantID;
                    language.IsDeleted          = false;
                    language.Save(Connection, Transaction);
                }
            }
            #endregion

            #region Get catalog's currency or create it
            // check if currency with that ISO exists for Tenant
            var currencyQuery = new ORM_CMN_Currency.Query();
            currencyQuery.ISO4127      = Parameter.CatalogCurrency_ISO_4217.ToUpper();
            currencyQuery.Tenant_RefID = securityTicket.TenantID;
            currencyQuery.IsDeleted    = false;

            var currency = ORM_CMN_Currency.Query.Search(Connection, Transaction, currencyQuery).FirstOrDefault();

            if (currency == null)
            {
                currencyQuery              = new ORM_CMN_Currency.Query();
                currencyQuery.ISO4127      = Parameter.CatalogCurrency_ISO_4217.ToLower();
                currencyQuery.Tenant_RefID = securityTicket.TenantID;
                currencyQuery.IsDeleted    = false;

                currency = ORM_CMN_Currency.Query.Search(Connection, Transaction, currencyQuery).FirstOrDefault();

                if (currency == null)
                {
                    currency = new ORM_CMN_Currency();
                    currency.CMN_CurrencyID = Guid.NewGuid();
                    currency.ISO4127        = Parameter.CatalogCurrency_ISO_4217;
                    currency.Name           = new Dict(ORM_CMN_Currency.TableName);
                    foreach (var item in allTenantLanguages)
                    {
                        currency.Name.AddEntry(item.CMN_LanguageID, "CatalogCurrency - " + Parameter.CatalogCurrency_ISO_4217);
                    }
                    currency.Tenant_RefID       = securityTicket.TenantID;
                    currency.Creation_Timestamp = DateTime.Now;
                    currency.Save(Connection, Transaction);
                }
            }
            #endregion

            #region save ORM_CMN_PRO_SubscribedCatalog
            var businessParticipant = ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction,
                                                                                   new ORM_CMN_BPT_BusinessParticipant.Query()
            {
                IfTenant_Tenant_RefID = securityTicket.TenantID,
                IsDeleted             = false
            }).Single();

            var subscribedCatalog = new ORM_CMN_PRO_SubscribedCatalog();
            subscribedCatalog.CMN_PRO_SubscribedCatalogID = Guid.NewGuid();
            subscribedCatalog.CatalogCodeITL         = Parameter.CatalogCodeITL;
            subscribedCatalog.SubscribedCatalog_Name = Parameter.CatalogName;
            subscribedCatalog.SubscribedBy_BusinessParticipant_RefID = businessParticipant != null ? businessParticipant.CMN_BPT_BusinessParticipantID : Guid.Empty;
            subscribedCatalog.Tenant_RefID = securityTicket.TenantID;
            subscribedCatalog.SubscribedCatalog_ValidFrom    = Parameter.ValidFrom_Date;
            subscribedCatalog.SubscribedCatalog_ValidThrough = Parameter.ValidTo_Date;
            subscribedCatalog.SubscribedCatalog_Description  = Parameter.CatalogDescription;
            subscribedCatalog.Creation_Timestamp             = DateTime.Now;
            subscribedCatalog.IsDeleted = false;
            subscribedCatalog.SubscribedCatalog_CurrentRevision = Parameter.CatalogVersion;
            subscribedCatalog.IsCatalogPublic = Parameter.IsCatalogPublic;

            subscribedCatalog.SubscribedCatalog_Language_RefID = language.CMN_LanguageID;
            subscribedCatalog.SubscribedCatalog_Currency_RefID = currency.CMN_CurrencyID;

            #region Create Supplier

            var CMN_BPT_SupplierID = cls_CreateOrUpdateSupplier_for_ImportedCatalog.Invoke(Connection, Transaction, Parameter.SupplierData, securityTicket).Result;

            #endregion

            subscribedCatalog.PublishingSupplier_RefID = CMN_BPT_SupplierID;
            subscribedCatalog.Save(Connection, Transaction);

            #endregion

            return(returnValue);

            #endregion UserCode
        }