예제 #1
0
        protected static FR_L6WS_GSCDfSCID_1458 Execute(DbConnection Connection, DbTransaction Transaction, P_L6WS_GSCDfSCID_1458 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6WS_GSCDfSCID_1458();

            //Put your code here
            if (Parameter.ShoppingCartID == Guid.Empty)
            {
                return(null);
            }

            returnValue.Result = new L6WS_GSCDfSCID_1458();

            #region ShoppingCart

            returnValue.Result.ShoppingCart = cls_Get_ShoppingCart_for_ShoppingCartID.Invoke(Connection, Transaction, new P_L6WS_GSCfSCID_1448()
            {
                ShoppingCartID = Parameter.ShoppingCartID
            }, securityTicket).Result;
            if (returnValue.Result.ShoppingCart == null)
            {
                return(null);
            }
            #endregion

            #region ShoppingCart_Notes

            returnValue.Result.ShoppingCart_Notes = cls_Get_ShoppingCart_Notes_for_ShoppingCartID.Invoke(Connection, Transaction, new P_L5AWSAR_GSCNfSC_1454()
            {
                ShoppingCartID = Parameter.ShoppingCartID
            }, securityTicket).Result.OrderBy(i => i.UpdatedOn).ToArray();

            #endregion

            #region Articles

            ORM_ORD_PRC_ShoppingCart_Product.Query shoppingCartProductsQuery = new ORM_ORD_PRC_ShoppingCart_Product.Query();
            shoppingCartProductsQuery.ORD_PRC_ShoppingCart_RefID = returnValue.Result.ShoppingCart.ORD_PRC_ShoppingCartID;
            shoppingCartProductsQuery.IsDeleted    = false;
            shoppingCartProductsQuery.IsCanceled   = false;
            shoppingCartProductsQuery.Tenant_RefID = securityTicket.TenantID;
            List <ORM_ORD_PRC_ShoppingCart_Product> productList = ORM_ORD_PRC_ShoppingCart_Product.Query.Search(Connection, Transaction, shoppingCartProductsQuery);

            List <Guid> articleIds = new List <Guid>();
            if (productList != null && productList.Count > 0)
            {
                articleIds.AddRange(productList.Select(i => i.CMN_PRO_Product_RefID));
            }

            List <L3AR_GAfAL_0942> articleInfos = new List <L3AR_GAfAL_0942>();

            if (articleIds.Count > 0)
            {
                articleInfos = cls_Get_Articles_for_ArticleList.Invoke(Connection, Transaction,
                                                                       new P_L3AR_GAfAL_0942()
                {
                    ProductID_List = articleIds.ToArray()
                }, securityTicket).Result.ToList();
            }


            List <L6WS_GSCDfSCID_1458_Product> products = new List <L6WS_GSCDfSCID_1458_Product>();
            L6WS_GSCDfSCID_1458_Product        product;
            L3AR_GAfAL_0942 articleInfo;
            double          taxRate = 0;
            #region ORM and Querie objects
            ORM_CMN_PRO_Product     orm_product;
            ORM_CMN_SLS_Price.Query priceQuery;
            ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query taxAssignmentQuery;
            ORM_ACC_TAX_Tax orm_tax;
            #endregion
            foreach (var productItem in productList)
            {
                #region check procurement order date and number
                if (returnValue.Result.OrderDate == null || returnValue.Result.OrderDate.Ticks == 0)
                {
                    ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition.Query shoppingCartOrderPositionQuery = new ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition.Query();
                    shoppingCartOrderPositionQuery.IsDeleted    = false;
                    shoppingCartOrderPositionQuery.Tenant_RefID = securityTicket.TenantID;
                    shoppingCartOrderPositionQuery.ORD_PRC_ShoppingCart_Product_RefID = productItem.ORD_PRC_ShoppingCart_ProductID;
                    List <ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition> shoppingCartOrderPositionList = ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, shoppingCartOrderPositionQuery);
                    foreach (var shoppingCartOrderPosition in shoppingCartOrderPositionList)
                    {
                        ORM_ORD_PRC_ProcurementOrder_Position procurementOrder_Position = new ORM_ORD_PRC_ProcurementOrder_Position();
                        var procurementOrder_PositionResult = procurementOrder_Position.Load(Connection, Transaction, shoppingCartOrderPosition.ORD_PRC_ProcurementOrder_Position_RefID);

                        if (procurementOrder_PositionResult.Status != FR_Status.Success || procurementOrder_Position.ORD_PRC_ProcurementOrder_PositionID == Guid.Empty)
                        {
                            continue;
                        }

                        ORM_ORD_PRC_ProcurementOrder_Header procurementOrder_Header = new ORM_ORD_PRC_ProcurementOrder_Header();
                        var procurementOrder_HeaderResult = procurementOrder_Header.Load(Connection, Transaction, procurementOrder_Position.ProcurementOrder_Header_RefID);

                        if (procurementOrder_HeaderResult.Status != FR_Status.Success || procurementOrder_Header.ORD_PRC_ProcurementOrder_HeaderID == Guid.Empty)
                        {
                            continue;
                        }

                        returnValue.Result.OrderDate   = procurementOrder_Header.ProcurementOrder_Date;
                        returnValue.Result.OrderNumber = procurementOrder_Header.ProcurementOrder_Number;
                        break;
                    }
                }
                #endregion

                #region get product
                orm_product = new ORM_CMN_PRO_Product();
                var productResult = orm_product.Load(Connection, Transaction, productItem.CMN_PRO_Product_RefID);
                if (productResult.Status != FR_Status.Success || orm_product.CMN_PRO_ProductID == Guid.Empty)
                {
                    continue;
                }
                #endregion

                #region get price
                ORM_CMN_PRO_SubscribedCatalog.Query catalogQuery = new ORM_CMN_PRO_SubscribedCatalog.Query();
                catalogQuery.Tenant_RefID = securityTicket.TenantID;
                catalogQuery.IsDeleted    = false;
                List <ORM_CMN_PRO_SubscribedCatalog> catalogList = ORM_CMN_PRO_SubscribedCatalog.Query.Search(Connection, Transaction, catalogQuery);

                priceQuery = new ORM_CMN_SLS_Price.Query();
                priceQuery.CMN_PRO_Product_RefID = orm_product.CMN_PRO_ProductID;
                priceQuery.Tenant_RefID          = securityTicket.TenantID;
                priceQuery.IsDeleted             = false;
                List <ORM_CMN_SLS_Price> prices = ORM_CMN_SLS_Price.Query.Search(Connection, Transaction, priceQuery);
                ORM_CMN_SLS_Price        price  = prices.Where(i => catalogList.Select(j => j.SubscribedCatalog_PricelistRelease_RefID).Contains(i.PricelistRelease_RefID)).FirstOrDefault();
                #endregion

                #region get taxes
                taxRate            = 0;
                taxAssignmentQuery = new ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query();
                taxAssignmentQuery.Product_RefID = orm_product.CMN_PRO_ProductID;
                taxAssignmentQuery.Tenant_RefID  = securityTicket.TenantID;
                taxAssignmentQuery.IsDeleted     = false;
                List <ORM_CMN_PRO_Product_SalesTaxAssignmnet> taxAssignmentList = ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query.Search(Connection, Transaction, taxAssignmentQuery);

                foreach (var taxAssignment in taxAssignmentList)
                {
                    orm_tax = new ORM_ACC_TAX_Tax();
                    var taxResult = orm_tax.Load(Connection, Transaction, taxAssignment.ApplicableSalesTax_RefID);
                    if (taxResult.Status == FR_Status.Success && orm_tax.ACC_TAX_TaxeID != Guid.Empty)
                    {
                        taxRate += orm_tax.TaxRate;
                    }
                }
                #endregion

                #region set product item
                product = new L6WS_GSCDfSCID_1458_Product();
                product.CMN_PRO_Product_RefID = orm_product.CMN_PRO_ProductID;
                product.PriceAmount           = price == null ? 0 : (price.PriceAmount == null ? 0 : Double.Parse(price.PriceAmount.ToString()));
                product.TaxRate           = taxRate;
                product.Quantity          = productItem.Quantity.ToString();
                product.IsProductCanceled = productItem.IsCanceled;
                if (!String.IsNullOrEmpty(productItem.Comment))
                {
                    string[] comments = productItem.Comment.Split('@');
                    if (comments.Length == 2)
                    {
                        product.ProductComment = comments[1];
                    }
                }
                product.IsProductReplacementAllowed = productItem.IsProductReplacementAllowed;

                articleInfo = articleInfos.FirstOrDefault(i => i.CMN_PRO_ProductID == orm_product.CMN_PRO_ProductID);
                if (articleInfo != null)
                {
                    product.Product_Name    = articleInfo.Product_Name;
                    product.Product_Number  = articleInfo.Product_Number;
                    product.UnitAmount      = articleInfo.UnitAmount.ToString();
                    product.UnitIsoCode     = articleInfo.UnitIsoCode;
                    product.DossageFormName = articleInfo.DossageFormName;
                }
                #endregion

                products.Add(product);
            }

            returnValue.Result.Products = products.ToArray();

            #endregion

            #region Person info
            // current user
            ORM_CMN_PER_PersonInfo_2_Account.Query accountQuery = new ORM_CMN_PER_PersonInfo_2_Account.Query();
            accountQuery.USR_Account_RefID = securityTicket.AccountID;
            accountQuery.Tenant_RefID      = securityTicket.TenantID;
            accountQuery.IsDeleted         = false;
            ORM_CMN_PER_PersonInfo_2_Account account = ORM_CMN_PER_PersonInfo_2_Account.Query.Search(Connection, Transaction, accountQuery).FirstOrDefault();

            if (account != null)
            {
                ORM_CMN_PER_PersonInfo personInfo = new ORM_CMN_PER_PersonInfo();
                var personInfoResult = personInfo.Load(Connection, Transaction, account.CMN_PER_PersonInfo_RefID);
                if (personInfoResult.Status == FR_Status.Success && personInfo.CMN_PER_PersonInfoID != Guid.Empty)
                {
                    returnValue.Result.CurrentUser = personInfo.FirstName + " " + personInfo.LastName;
                }
            }

            #region Approved by user

            ORM_ORD_PRC_ShoppingCart_Status.Query stusesQuery = new ORM_ORD_PRC_ShoppingCart_Status.Query();
            stusesQuery.Tenant_RefID = securityTicket.TenantID;
            stusesQuery.IsDeleted    = false;
            List <ORM_ORD_PRC_ShoppingCart_Status> statuses       = ORM_ORD_PRC_ShoppingCart_Status.Query.Search(Connection, Transaction, stusesQuery);
            ORM_ORD_PRC_ShoppingCart_Status        approvedStatus = statuses.FirstOrDefault(i => i.GlobalPropertyMatchingID.Contains("approved"));

            if (approvedStatus != null)
            {
                ORM_ORD_PRC_ShoppingCartStatus_History.Query statusHistoryQuery = new ORM_ORD_PRC_ShoppingCartStatus_History.Query();
                statusHistoryQuery.Tenant_RefID = securityTicket.TenantID;
                statusHistoryQuery.IsDeleted    = false;
                statusHistoryQuery.ORD_PRC_ShoppingCart_RefID        = returnValue.Result.ShoppingCart.ORD_PRC_ShoppingCartID;
                statusHistoryQuery.ORD_PRC_ShoppingCart_Status_RefID = approvedStatus.ORD_PRC_ShoppingCart_StatusID;
                ORM_ORD_PRC_ShoppingCartStatus_History statusHistory = ORM_ORD_PRC_ShoppingCartStatus_History.Query.Search(Connection, Transaction, statusHistoryQuery).FirstOrDefault();
                if (statusHistory != null)
                {
                    accountQuery = new ORM_CMN_PER_PersonInfo_2_Account.Query();
                    accountQuery.USR_Account_RefID = statusHistory.PerformedBy_Account_RefID;
                    accountQuery.Tenant_RefID      = securityTicket.TenantID;
                    accountQuery.IsDeleted         = false;
                    account = ORM_CMN_PER_PersonInfo_2_Account.Query.Search(Connection, Transaction, accountQuery).FirstOrDefault();

                    if (account != null)
                    {
                        ORM_CMN_PER_PersonInfo personInfo = new ORM_CMN_PER_PersonInfo();
                        var personInfoResult = personInfo.Load(Connection, Transaction, account.CMN_PER_PersonInfo_RefID);
                        if (personInfoResult.Status == FR_Status.Success && personInfo.CMN_PER_PersonInfoID != Guid.Empty)
                        {
                            returnValue.Result.ApprovedByUser = personInfo.FirstName + " " + personInfo.LastName;
                            returnValue.Result.DateOfApproval = statusHistory.Creation_Timestamp;
                        }
                    }
                }
            }

            #endregion

            #endregion

            return(returnValue);

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

            List <Guid> discountGuidList = new List <Guid>();

            if (Parameter.Discounts != null)
            {
                List <Guid> positionIDs = new List <Guid>();

                if (Parameter.SaveNaturalDiscountForAllPositions)
                {
                    var position = new ORM_ORD_PRC_ProcurementOrder_Position();
                    position.Load(Connection, Transaction, Parameter.ProcurementOrderPositionID);
                    var headerID = position.ProcurementOrder_Header_RefID;

                    var headerPositions = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction,
                                                                                             new ORM_ORD_PRC_ProcurementOrder_Position.Query {
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false,
                        ProcurementOrder_Header_RefID = headerID
                    }).ToList();

                    positionIDs.AddRange(headerPositions.Select(x => x.ORD_PRC_ProcurementOrder_PositionID));
                }

                var positionDiscounts = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query.Search(Connection, Transaction,
                                                                                                                new ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query
                {
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false,
                    ORD_PRC_ProcurementOrder_Position_RefID = Parameter.ProcurementOrderPositionID
                }
                                                                                                                ).ToArray();

                //Preload discount types and choose those that are applying to stock reciept positions
                var discountTypesParam = new P_L2DT_GDTfGPMIL_1546();
                discountTypesParam.GlobalPropertyMatchingID_List = new string[]
                {
                    EnumUtils.GetEnumDescription(EDiscountType.MainDiscount),
                    EnumUtils.GetEnumDescription(EDiscountType.Discount2),
                    EnumUtils.GetEnumDescription(EDiscountType.Discount3),
                    EnumUtils.GetEnumDescription(EDiscountType.NaturalDiscount)
                };
                var discountTypes = cls_Get_DiscountTypes_for_GlobalPropertyMatchingID_List.Invoke(Connection, Transaction, discountTypesParam, securityTicket).Result;

                ORM_ORD_PRC_ProcurementOrder_Position_Discount discount = null;
                foreach (var item in discountTypes)
                {
                    var paramDiscount = Parameter.Discounts.SingleOrDefault(x => x.DiscountTypeID == item.ORD_PRC_DiscountTypeID);
                    if (paramDiscount == null)
                    {
                        continue;
                    }

                    discount = positionDiscounts.SingleOrDefault(x => x.ORD_PRC_DiscountType_RefID == item.ORD_PRC_DiscountTypeID);
                    if (discount == null)
                    {
                        discount = new ORM_ORD_PRC_ProcurementOrder_Position_Discount
                        {
                            ORD_PRC_ProcurementOrder_Position_DiscountID = Guid.NewGuid(),
                            ORD_PRC_DiscountType_RefID = item.ORD_PRC_DiscountTypeID,
                            ORD_PRC_ProcurementOrder_Position_RefID = Parameter.ProcurementOrderPositionID,
                            Tenant_RefID       = securityTicket.TenantID,
                            Creation_Timestamp = DateTime.Now,
                            IsDeleted          = false
                        };
                    }

                    discount.DiscountValue = paramDiscount.DiscountValue;
                    discount.Save(Connection, Transaction);

                    discountGuidList.Add(discount.ORD_PRC_ProcurementOrder_Position_DiscountID);
                }

                //if SaveNaturalDiscountForAllPositions, change discount value for natural discount for all positions of procurement header
                if (Parameter.SaveNaturalDiscountForAllPositions)
                {
                    foreach (var currentPosID in positionIDs)
                    {
                        if (currentPosID != Parameter.ProcurementOrderPositionID)
                        {
                            var posDiscounts = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query.Search(Connection, Transaction,
                                                                                                                       new ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query
                            {
                                Tenant_RefID = securityTicket.TenantID,
                                IsDeleted    = false,
                                ORD_PRC_ProcurementOrder_Position_RefID = currentPosID
                            }
                                                                                                                       ).ToArray();

                            //Preload discount types and choose those that are applying to stock reciept positions
                            var discountTypesPar = new P_L2DT_GDTfGPMIL_1546();
                            discountTypesPar.GlobalPropertyMatchingID_List = new string[]
                            {
                                EnumUtils.GetEnumDescription(EDiscountType.NaturalDiscount)
                            };
                            var discNaturalType = cls_Get_DiscountTypes_for_GlobalPropertyMatchingID_List.Invoke(Connection, Transaction, discountTypesPar, securityTicket).Result;

                            ORM_ORD_PRC_ProcurementOrder_Position_Discount discountNatural = null;
                            foreach (var item in discNaturalType)
                            {
                                var paramDiscount = Parameter.Discounts.SingleOrDefault(x => x.DiscountTypeID == discNaturalType.First().ORD_PRC_DiscountTypeID);
                                if (paramDiscount == null)
                                {
                                    continue;
                                }

                                discountNatural = posDiscounts.SingleOrDefault(x => x.ORD_PRC_DiscountType_RefID == discNaturalType.First().ORD_PRC_DiscountTypeID);
                                if (discountNatural == null)
                                {
                                    discountNatural = new ORM_ORD_PRC_ProcurementOrder_Position_Discount
                                    {
                                        ORD_PRC_ProcurementOrder_Position_DiscountID = Guid.NewGuid(),
                                        ORD_PRC_DiscountType_RefID = item.ORD_PRC_DiscountTypeID,
                                        ORD_PRC_ProcurementOrder_Position_RefID = currentPosID,
                                        Tenant_RefID       = securityTicket.TenantID,
                                        Creation_Timestamp = DateTime.Now,
                                        IsDeleted          = false
                                    };
                                }

                                discountNatural.DiscountValue = paramDiscount.DiscountValue;
                                discountNatural.Save(Connection, Transaction);

                                discountGuidList.Add(discount.ORD_PRC_ProcurementOrder_Position_DiscountID);
                            }
                        }
                    }
                }
            }

            returnValue.Result = discountGuidList.ToArray();

            return(returnValue);

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



            #region Get ProcurementOrder Header
            var header = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction
                                                                          , new ORM_ORD_PRC_ProcurementOrder_Header.Query()
            {
                ORD_PRC_ProcurementOrder_HeaderID = Parameter.ORD_PRC_ProcurementOrder_HeaderID,
                Tenant_RefID = securityTicket.TenantID,
                IsDeleted    = false
            }).FirstOrDefault();

            if (header.Equals(default(ORM_ORD_PRC_ProcurementOrder_Header)))
            {
                returnValue.Status = FR_Status.Error_Internal;
                return(returnValue);
            }
            #endregion

            #region Get Positions count, if we are creating the positions
            int positionsCount = 0;
            if (Parameter.Positions[0].ORD_PRC_ProcurementOrder_PositionID == Guid.Empty)
            {
                positionsCount = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction,
                                                                                    new ORM_ORD_PRC_ProcurementOrder_Position.Query()
                {
                    ProcurementOrder_Header_RefID = Parameter.ORD_PRC_ProcurementOrder_HeaderID,
                    IsDeleted    = false,
                    Tenant_RefID = securityTicket.TenantID
                }).Count();
            }
            #endregion

            List <Guid> createdPositionsIDs = new List <Guid>();

            decimal oldHeaderTotalValue = 0, newHeaderTotalValue = 0;
            foreach (var p in Parameter.Positions)
            {
                ORM_ORD_PRC_ProcurementOrder_Position position;
                if (p.ORD_PRC_ProcurementOrder_PositionID == Guid.Empty)
                {
                    #region Create ProcurementOrder Position

                    #region Get Unit ID
                    var product = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product.Query
                    {
                        CMN_PRO_ProductID = p.ProductID,
                        IsDeleted         = false,
                        Tenant_RefID      = securityTicket.TenantID
                    }).Single();

                    var packageInfo = ORM_CMN_PRO_PAC_PackageInfo.Query.Search(Connection, Transaction,
                                                                               new ORM_CMN_PRO_PAC_PackageInfo.Query
                    {
                        CMN_PRO_PAC_PackageInfoID = product.PackageInfo_RefID,
                        IsDeleted    = false,
                        Tenant_RefID = securityTicket.TenantID
                    }).Single();

                    var unitID = packageInfo.PackageContent_MeasuredInUnit_RefID;
                    #endregion

                    #region Create ProcurementPosition Object
                    position = new ORM_ORD_PRC_ProcurementOrder_Position()
                    {
                        ORD_PRC_ProcurementOrder_PositionID = Guid.NewGuid(),
                        CMN_PRO_Product_RefID            = p.ProductID,
                        Creation_Timestamp               = DateTime.Now,
                        Tenant_RefID                     = securityTicket.TenantID,
                        ProcurementOrder_Header_RefID    = Parameter.ORD_PRC_ProcurementOrder_HeaderID,
                        Position_Quantity                = p.Position_Quantity,
                        Position_ValuePerUnit            = p.PricePerUnit,
                        Position_ValueTotal              = p.PricePerUnit * Convert.ToDecimal(p.Position_Quantity),
                        Position_RequestedDateOfDelivery = DateTime.MinValue,
                        Position_Unit_RefID              = unitID,
                        Position_OrdinalNumber           = ++positionsCount
                    };
                    #endregion

                    createdPositionsIDs.Add(position.ORD_PRC_ProcurementOrder_PositionID);

                    newHeaderTotalValue += position.Position_ValueTotal;
                    #endregion
                }
                else
                {
                    #region Update ProcurementOrder Position

                    #region Get ProcurementOrder Position
                    position = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction
                                                                                  , new ORM_ORD_PRC_ProcurementOrder_Position.Query()
                    {
                        ORD_PRC_ProcurementOrder_PositionID = p.ORD_PRC_ProcurementOrder_PositionID,
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false
                    }).FirstOrDefault();
                    if (position.Equals(default(ORM_ORD_PRC_ProcurementOrder_Position)))
                    {
                        returnValue.Status = FR_Status.Error_Internal;
                        return(returnValue);
                    }
                    #endregion

                    #region Update ProcurementOrder Position and Total Values
                    oldHeaderTotalValue         += position.Position_ValueTotal;
                    position.Position_Quantity   = p.Position_Quantity;
                    position.Position_ValueTotal = Convert.ToDecimal(p.Position_Quantity) * position.Position_ValuePerUnit;
                    newHeaderTotalValue         += position.Position_ValueTotal;
                    position.IsDeleted           = p.IsDeleted;
                    #endregion

                    #endregion
                }

                if (position.Save(Connection, Transaction).Status != FR_Status.Success)
                {
                    returnValue.Status = FR_Status.Error_Internal;
                    return(returnValue);
                }
            }

            #region Update ProcurementOrder Header
            header.TotalValue_BeforeTax = (header.TotalValue_BeforeTax - oldHeaderTotalValue) + newHeaderTotalValue;
            if (header.Save(Connection, Transaction).Status != FR_Status.Success)
            {
                returnValue.Status = FR_Status.Error_Internal;
                return(returnValue);
            }
            #endregion

            returnValue.Result = createdPositionsIDs.ToArray();
            returnValue.Status = FR_Status.Success;

            return(returnValue);

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

            P_L6TR_SQT_1308 param = new P_L6TR_SQT_1308();
            param = Parameter.QuickTreatment;

            Guid TreatmentID = cls_Save_Quick_Treatment.Invoke(Connection, Transaction, param, securityTicket).Result;

            #region Save Order

            var status_query = new ORM_ORD_PRC_ProcurementOrder_Status.Query();
            status_query.IsDeleted                = false;
            status_query.Tenant_RefID             = securityTicket.TenantID;
            status_query.GlobalPropertyMatchingID = STLD_ORD_CUO_CustomerOrder_Status.Ordered.ToString();
            var notOrderedstatus = ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, status_query).First();

            var prod_param = new P_L6PD_GPaPOSfT_1702();
            prod_param.TreatmentID = TreatmentID;
            var products = cls_Get_Product_and_ProcurementOrderStatuses_for_TreatmentID.Invoke(Connection, Transaction, prod_param, securityTicket).Result;

            var notOrdered_Products = products.Where(i => i.BoundTo_ProcurementOrderPosition_RefID == Guid.Empty);

            if (notOrdered_Products.Count() == 0)
            {
                return(returnValue);
            }

            #region Save Header and Status

            var header_query = new ORM_ORD_PRC_ProcurementOrder_Header.Query();
            header_query.IsDeleted    = false;
            header_query.Tenant_RefID = securityTicket.TenantID;
            var headers = ORM_ORD_PRC_ProcurementOrder_Header.Query.Search(Connection, Transaction, header_query);

            var count = 0;
            if (headers != null)
            {
                count = headers.Count();
            }

            String ordernumber = "000000000000" + (count + 1).ToString();
            ordernumber = ordernumber.Substring(ordernumber.Length - 12);

            var header = new ORM_ORD_PRC_ProcurementOrder_Header();
            header.ORD_PRC_ProcurementOrder_HeaderID    = Guid.NewGuid();
            header.Current_ProcurementOrderStatus_RefID = notOrderedstatus.ORD_PRC_ProcurementOrder_StatusID;
            header.ProcurementOrder_Number = ordernumber;
            header.ProcurementOrder_Date   = DateTime.Now;
            header.Creation_Timestamp      = DateTime.Now;
            header.Tenant_RefID            = securityTicket.TenantID;
            header.Save(Connection, Transaction);

            var history = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
            history.ORD_PRC_ProcurementOrder_StatusHistoryID = Guid.NewGuid();
            history.ProcurementOrder_Header_RefID            = header.ORD_PRC_ProcurementOrder_HeaderID;
            history.ProcurementOrder_Status_RefID            = notOrderedstatus.ORD_PRC_ProcurementOrder_StatusID;
            history.StatusHistoryComment = "";
            history.Creation_Timestamp   = DateTime.Now;
            history.Tenant_RefID         = securityTicket.TenantID;
            history.Save(Connection, Transaction);


            #endregion

            int cnt = 0;

            foreach (var product in notOrdered_Products)
            {
                cnt++;

                var position = new ORM_ORD_PRC_ProcurementOrder_Position();
                position.ORD_PRC_ProcurementOrder_PositionID = Guid.NewGuid();
                position.ProcurementOrder_Header_RefID       = header.ORD_PRC_ProcurementOrder_HeaderID;
                position.Position_OrdinalNumber           = cnt;
                position.Position_Quantity                = product.Quantity;
                position.Position_ValuePerUnit            = 1;
                position.Position_ValueTotal              = decimal.Parse(product.Quantity.ToString());
                position.CMN_PRO_Product_Variant_RefID    = Guid.Empty;
                position.CMN_PRO_Product_RefID            = product.CMN_PRO_ProductID;
                position.CMN_PRO_Product_Release_RefID    = Guid.Empty;
                position.Position_RequestedDateOfDelivery = product.ExpectedDateOfDelivery;
                position.Creation_Timestamp               = DateTime.Now;
                position.Tenant_RefID = securityTicket.TenantID;
                position.Save(Connection, Transaction);


                var item = new ORM_HEC_Patient_Treatment_RequiredProduct();
                item.Load(Connection, Transaction, product.HEC_Patient_Treatment_RequiredProductID);
                item.BoundTo_CustomerOrderPosition_RefID = position.ORD_PRC_ProcurementOrder_PositionID;
                item.Save(Connection, Transaction);
            }

            #endregion

            return(returnValue);

            #endregion UserCode
        }
예제 #5
0
        protected static FR_CAS_CDO_1202 Execute(DbConnection Connection, DbTransaction Transaction, P_CAS_CDO_1202 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_CAS_CDO_1202();
            returnValue.Result = new CAS_CDO_1202();
            //Put your code here
            var statusCodePrefix = "MO";
            var statusCode       = 0;

            var drugOrderStatus = String.Format("{0}{1}", statusCodePrefix, statusCode);

            var hec_drugQ = new ORM_HEC_Product.Query();
            hec_drugQ.Tenant_RefID  = securityTicket.TenantID;
            hec_drugQ.IsDeleted     = false;
            hec_drugQ.HEC_ProductID = Parameter.drug_id;

            var hec_drug = ORM_HEC_Product.Query.Search(Connection, Transaction, hec_drugQ).SingleOrDefault();
            if (hec_drug != null)
            {
                var ord_drug_order_header = new ORM_ORD_PRC_ProcurementOrder_Header();
                ord_drug_order_header.CreatedBy_BusinessParticipant_RefID = Parameter.created_by_bpt;
                ord_drug_order_header.ProcurementOrder_Date   = DateTime.Now;
                ord_drug_order_header.Tenant_RefID            = securityTicket.TenantID;
                ord_drug_order_header.ProcurementOrder_Number = cls_Get_Next_Order_Number.Invoke(Connection, Transaction, securityTicket).Result.order_number;

                returnValue.Result.procurement_order_header_id = ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;

                var drug_order_status = new ORM_ORD_PRC_ProcurementOrder_Status();
                drug_order_status.GlobalPropertyMatchingID = String.Format("mm.doc.connect.drug.order.status.{0}", drugOrderStatus.ToLower());
                drug_order_status.Status_Code  = statusCode;
                drug_order_status.Tenant_RefID = securityTicket.TenantID;
                drug_order_status.Status_Name  = new Dict(ORM_ORD_PRC_ProcurementOrder_Status.TableName);
                foreach (var lang in Parameter.all_languagesL)
                {
                    drug_order_status.Status_Name.AddEntry(lang.CMN_LanguageID, drugOrderStatus);
                }

                drug_order_status.Save(Connection, Transaction);

                ord_drug_order_header.Current_ProcurementOrderStatus_RefID = drug_order_status.ORD_PRC_ProcurementOrder_StatusID;
                ord_drug_order_header.Save(Connection, Transaction);

                var drug_order_status_history = new ORM_ORD_PRC_ProcurementOrder_StatusHistory();
                drug_order_status_history.ProcurementOrder_Header_RefID = ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;
                drug_order_status_history.ProcurementOrder_Status_RefID = drug_order_status.ORD_PRC_ProcurementOrder_StatusID;
                drug_order_status_history.Tenant_RefID     = securityTicket.TenantID;
                drug_order_status_history.IsStatus_Created = true;
                drug_order_status_history.TriggeredAt_Date = DateTime.Now;
                drug_order_status_history.TriggeredBy_BusinessParticipant_RefID = Parameter.created_by_bpt;

                drug_order_status_history.Save(Connection, Transaction);

                var ord_drug_order_position = new ORM_ORD_PRC_ProcurementOrder_Position();
                ord_drug_order_position.CMN_PRO_Product_RefID            = hec_drug.Ext_PRO_Product_RefID;
                ord_drug_order_position.Position_RequestedDateOfDelivery = Parameter.delivery_date;
                ord_drug_order_position.ProcurementOrder_Header_RefID    = ord_drug_order_header.ORD_PRC_ProcurementOrder_HeaderID;
                ord_drug_order_position.Tenant_RefID = securityTicket.TenantID;
                ord_drug_order_position.RequestedDateOfDelivery_TimeFrame_From = Parameter.is_alternative_delivery_date ? Parameter.alternative_delivery_date_from : Parameter.treatment_date.AddHours(08).AddMinutes(00).AddSeconds(00);
                ord_drug_order_position.RequestedDateOfDelivery_TimeFrame_To   = Parameter.is_alternative_delivery_date ? Parameter.alternative_delivery_date_to : Parameter.treatment_date.AddHours(17).AddMinutes(59).AddSeconds(59);
                ord_drug_order_position.IsProFormaOrderPosition = Parameter.is_label_only;
                ord_drug_order_position.Position_Comment        = Parameter.order_comment;

                if (Parameter.is_send_invoice_to_practice)
                {
                    var id = Guid.Empty;
                    var practice_account = cls_Get_Practice_AccountID_for_PracticeID.Invoke(Connection, Transaction, new P_DO_GPAIDfPID_1351()
                    {
                        PracticeID = Parameter.practice_id
                    }, securityTicket).Result;
                    if (practice_account != null)
                    {
                        id = practice_account.accountID;
                    }

                    var invoice_practice_accountQ = new ORM_USR_Account.Query();
                    invoice_practice_accountQ.USR_AccountID = id;
                    invoice_practice_accountQ.Tenant_RefID  = securityTicket.TenantID;
                    invoice_practice_accountQ.IsDeleted     = false;

                    var invoice_practice_account = ORM_USR_Account.Query.Search(Connection, Transaction, invoice_practice_accountQ).SingleOrDefault();
                    if (invoice_practice_account != null)
                    {
                        ord_drug_order_position.BillTo_BusinessParticipant_RefID = invoice_practice_account.BusinessParticipant_RefID;
                    }
                }

                ord_drug_order_position.Save(Connection, Transaction);

                var ord_drug_order_history = new ORM_ORD_PRC_ProcurementOrder_Position_History();
                ord_drug_order_history.Creation_Timestamp     = DateTime.Now;
                ord_drug_order_history.IsCreated              = true;
                ord_drug_order_history.Modification_Timestamp = DateTime.Now;
                ord_drug_order_history.Tenant_RefID           = securityTicket.TenantID;
                ord_drug_order_history.TriggeredBy_BusinessParticipant_RefID = Parameter.created_by_bpt;
                ord_drug_order_history.ProcurementOrder_Position_RefID       = ord_drug_order_position.ORD_PRC_ProcurementOrder_PositionID;

                ord_drug_order_history.Save(Connection, Transaction);

                var hec_drug_order_position = new ORM_HEC_PRC_ProcurementOrder_Position();
                hec_drug_order_position.Creation_Timestamp = DateTime.Now;
                hec_drug_order_position.Ext_ORD_PRC_ProcurementOrder_Position_RefID = ord_drug_order_position.ORD_PRC_ProcurementOrder_PositionID;
                hec_drug_order_position.Modification_Timestamp   = DateTime.Now;
                hec_drug_order_position.OrderedFor_Patient_RefID = Parameter.patient_id;
                hec_drug_order_position.Tenant_RefID             = securityTicket.TenantID;
                hec_drug_order_position.IfProFormaOrderPosition_PrintLabelOnly = Parameter.is_label_only;
                hec_drug_order_position.IsOrderForPatient_PatientFeeWaived     = Parameter.is_patient_fee_waived;

                if (Parameter.treatment_doctor_id != Guid.Empty)
                {
                    hec_drug_order_position.OrderedFor_Doctor_RefID      = Parameter.treatment_doctor_id;
                    hec_drug_order_position.OrderedForDoctor_DisplayName = GenericUtils.GetDoctorName(Parameter.treatment_doctor_details);
                }
                else
                {
                    var doctor_id = cls_Get_DoctorID_for_AccountID.Invoke(Connection, Transaction, securityTicket).Result;
                    if (doctor_id != null)
                    {
                        var doctor = cls_Get_Doctor_Details_for_DoctorID.Invoke(Connection, Transaction, new P_DO_GDDfDID_0823()
                        {
                            DoctorID = doctor_id.DoctorID
                        }, securityTicket).Result.SingleOrDefault();
                        if (doctor != null)
                        {
                            hec_drug_order_position.OrderedFor_Doctor_RefID      = doctor.id;
                            hec_drug_order_position.OrderedForDoctor_DisplayName = GenericUtils.GetDoctorName(doctor);
                        }
                    }
                }

                hec_drug_order_position.OrderedForPatient_DisplayName = Parameter.patient_details.patient_last_name + " " + Parameter.patient_details.patient_first_name;

                hec_drug_order_position.Save(Connection, Transaction);

                returnValue.Result.procurement_order_position_id = hec_drug_order_position.HEC_PRC_ProcurementOrder_PositionID;

                var practice_invoice_universal_property = ORM_HEC_CAS_Case_UniversalProperty.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalProperty.Query()
                {
                    GlobalPropertyMatchingID = "mm.doc.connect.case.practice.invoice",
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                }).SingleOrDefault();

                if (practice_invoice_universal_property == null)
                {
                    practice_invoice_universal_property = new ORM_HEC_CAS_Case_UniversalProperty();
                    practice_invoice_universal_property.Tenant_RefID             = securityTicket.TenantID;
                    practice_invoice_universal_property.PropertyName             = "Send Invoice to Practice";
                    practice_invoice_universal_property.IsValue_Boolean          = true;
                    practice_invoice_universal_property.GlobalPropertyMatchingID = "mm.doc.connect.case.practice.invoice";
                    practice_invoice_universal_property.Modification_Timestamp   = DateTime.Now;

                    practice_invoice_universal_property.Save(Connection, Transaction);
                }

                var practice_invoice_universal_property_value = ORM_HEC_CAS_Case_UniversalPropertyValue.Query.Search(Connection, Transaction, new ORM_HEC_CAS_Case_UniversalPropertyValue.Query()
                {
                    HEC_CAS_Case_RefID = Parameter.case_id,
                    HEC_CAS_Case_UniversalProperty_RefID = practice_invoice_universal_property.HEC_CAS_Case_UniversalPropertyID,
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).SingleOrDefault();

                if (practice_invoice_universal_property_value == null)
                {
                    practice_invoice_universal_property_value = new ORM_HEC_CAS_Case_UniversalPropertyValue();
                    practice_invoice_universal_property_value.Tenant_RefID       = securityTicket.TenantID;
                    practice_invoice_universal_property_value.HEC_CAS_Case_RefID = Parameter.case_id;
                    practice_invoice_universal_property_value.HEC_CAS_Case_UniversalProperty_RefID = practice_invoice_universal_property.HEC_CAS_Case_UniversalPropertyID;
                }
                practice_invoice_universal_property_value.Modification_Timestamp = DateTime.Now;
                practice_invoice_universal_property_value.Value_Boolean          = Parameter.is_send_invoice_to_practice;

                practice_invoice_universal_property_value.Save(Connection, Transaction);
            }

            return(returnValue);

            #endregion UserCode
        }