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

            foreach (var billHeaderID in Parameter.BillHeaderIDs)
            {
                #region Delete current status assignment

                var query = new CL1_BIL.ORM_BIL_BillHeader_2_BillStatus.Query();
                query.BIL_BillHeader_RefID = billHeaderID;
                query.IsCurrentStatus      = true;
                query.IsDeleted            = false;
                query.Tenant_RefID         = securityTicket.TenantID;
                var currentStatus = CL1_BIL.ORM_BIL_BillHeader_2_BillStatus.Query.Search(Connection, Transaction, query).Single();
                currentStatus.IsCurrentStatus = false;
                currentStatus.Save(Connection, Transaction);

                #endregion

                #region Create new status - Closed

                var newStatus = new CL1_BIL.ORM_BIL_BillHeader_2_BillStatus();
                newStatus.AssignmentID         = Guid.NewGuid();
                newStatus.BIL_BillHeader_RefID = billHeaderID;
                newStatus.IsCurrentStatus      = true;

                #region Get status' ID closed by Global Property Matching ID

                var query2 = new CL1_BIL.ORM_BIL_BillStatus.Query();
                query2.GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(DLCore_DBCommons.APODemand.EBillStatus.Closed);
                query2.IsDeleted    = false;
                query2.Tenant_RefID = securityTicket.TenantID;
                var statusClosed = CL1_BIL.ORM_BIL_BillStatus.Query.Search(Connection, Transaction, query2).Single();

                #endregion

                newStatus.BIL_BillStatus_RefID = statusClosed.BIL_BillStatusID;
                newStatus.Creation_Timestamp   = DateTime.Now;
                newStatus.Tenant_RefID         = securityTicket.TenantID;
                newStatus.Save(Connection, Transaction);

                #endregion

                #region Create bookings for bill on closing

                var param = new P_L3PY_CBfB_0959
                {
                    BillHeaderID = billHeaderID
                };
                cls_Create_Bookings_for_Bill_on_Closing.Invoke(Connection, Transaction, param, securityTicket);

                #endregion
            }

            returnValue.Result = true;
            return(returnValue);

            #endregion UserCode
        }
Example #2
0
        protected static FR_Bool Execute(DbConnection Connection, DbTransaction Transaction, P_L5BL_CBH_1330 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Bool();

            foreach (var BillHeaderID in Parameter.BillHeaderIDs)
            {
                // Retrieve bill header
                var billHeader = new CL1_BIL.ORM_BIL_BillHeader();
                billHeader.Load(Connection, Transaction, BillHeaderID);

                // Find current status for bill header
                var billHeaderStatus = CL1_BIL.ORM_BIL_BillHeader_2_BillStatus.Query.Search(Connection, Transaction,
                                                                                            new CL1_BIL.ORM_BIL_BillHeader_2_BillStatus.Query
                {
                    BIL_BillHeader_RefID = BillHeaderID,
                    IsCurrentStatus      = true,
                    Tenant_RefID         = securityTicket.TenantID,
                    IsDeleted            = false
                }).Single();

                var status = CL1_BIL.ORM_BIL_BillStatus.Query.Search(Connection, Transaction,
                                                                     new CL1_BIL.ORM_BIL_BillStatus.Query
                {
                    BIL_BillStatusID = billHeaderStatus.BIL_BillStatus_RefID,
                    Tenant_RefID     = securityTicket.TenantID,
                    IsDeleted        = false
                }).Single();

                bool result = status.GlobalPropertyMatchingID ==
                              DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(DLCore_DBCommons.APODemand.EBillStatus.Closed);

                if (result == false)
                {
                    throw new Exception("Bill header status is not expected. It cannot be canceled!");
                }

                #region Cancel customerOrderReturnPosition



                #endregion

                #region Cancel bill positions

                // Retrieve bill positions for bill header.
                var billPositions = CL1_BIL.ORM_BIL_BillPosition.Query.Search(Connection, Transaction,
                                                                              new CL1_BIL.ORM_BIL_BillPosition.Query
                {
                    BIL_BilHeader_RefID = BillHeaderID,
                    Tenant_RefID        = securityTicket.TenantID,
                    IsDeleted           = false
                });

                // Cancel all bill positions
                foreach (var billPosition in billPositions)
                {
                    // Delete relationship between BillPositions and ShipmentPosition in Assignment table.
                    CL1_BIL.ORM_BIL_BillPosition_2_ShipmentPosition.Query.SoftDelete(Connection, Transaction,
                                                                                     new CL1_BIL.ORM_BIL_BillPosition_2_ShipmentPosition.Query
                    {
                        BIL_BillPosition_RefID = billPosition.BIL_BillPositionID,
                        Tenant_RefID           = securityTicket.TenantID,
                        IsDeleted = false
                    });


                    CL1_BIL.ORM_BIL_BillPosition_2_CustomerOrderReturnPosition.Query.SoftDelete(Connection, Transaction,
                                                                                                new CL1_BIL.ORM_BIL_BillPosition_2_CustomerOrderReturnPosition.Query
                    {
                        BIL_BillPosition_RefID = billPosition.BIL_BillPositionID,
                        Tenant_RefID           = securityTicket.TenantID,
                        IsDeleted = false
                    });
                }

                #endregion

                #region Deactivate current bill statuses

                billHeaderStatus.IsCurrentStatus = false;
                billHeaderStatus.Save(Connection, Transaction);

                #endregion

                #region Add status "Canceled" for Bill Header

                var statusCanceled = CL1_BIL.ORM_BIL_BillStatus.Query.Search(Connection, Transaction,
                                                                             new CL1_BIL.ORM_BIL_BillStatus.Query
                {
                    GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(DLCore_DBCommons.APODemand.EBillStatus.Canceled),
                    Tenant_RefID             = securityTicket.TenantID,
                    IsDeleted = false
                }).Single();

                var billHeader2BillStatusCanceled = new CL1_BIL.ORM_BIL_BillHeader_2_BillStatus()
                {
                    BIL_BillHeader_RefID = BillHeaderID,
                    BIL_BillStatus_RefID = statusCanceled.BIL_BillStatusID,
                    IsCurrentStatus      = true,
                    Tenant_RefID         = securityTicket.TenantID,
                    Creation_Timestamp   = DateTime.Now
                };
                billHeader2BillStatusCanceled.Save(Connection, Transaction);

                #endregion
            }

            // Return success
            returnValue.Status = FR_Status.Success;
            returnValue.Result = true;
            return(returnValue);

            #endregion UserCode
        }