INF

PHOTO EMBED

Tue Jan 21 2025 14:50:03 GMT+0000 (Coordinated Universal Time)

Saved by @asepmaulana

Secure Page
ASP.NET (.aspx) File
<%@ Page Language="C#" AutoEventWireup="true" Inherits="master_files_delivery_route" CodeFile="delivery_route.aspx.cs" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Delivery Route</title>
    <script type="text/javascript">
        function ProcessKeyDown(e) {
            if (e == 13) { gv_delivery_route.UpdateEdit(); }
            if (e == 27) { gv_delivery_route.CancelEdit(); }
        }

        var command = '';
        var cperror_msgnum;
        function Begin_CallBack(s, e) {
            command = e.command;
        }
        function End_CallBack(s, e) {
            if ((command == 'UPDATEEDIT' || command == 'DELETEROW') && s.cperror_add_info != 'error') {
                msg_popup.SetContentUrl("../common/error_message.aspx?message_num=" + s.cperror_msg_num + "&additional_info=" + s.cperror_add_info);
                msg_popup.Show();
            }
        }

        function End_CallBack_Grid(s, e) {
            if (s.cperror_msg_num != "-1") {
                msg_popup.SetContentUrl("../common/error_message.aspx?message_num=" + s.cperror_msg_num + "&additional_info=" + s.cperror_add_info);
                msg_popup.Show();
                s.cperror_msg_num = '-1';
            }
        }

        function DeliveryZone_Init(s, e) {
            s.GetMainElement().onclick = function () {
                var delivery_zone = s.GetText();
                s.PerformCallback();
                s.SetText(delivery_zone);
            };
        }

        function DeliveryZone_EndCallBack(s, e) {
            s.ShowDropDown();
        }

        function DeliveryZone_GotFocus(s, e) {
            var item_zone = s.GetSelectedItem();
            if (item_zone) {
                s.SetText(item_zone.GetColumnText('delivery_zone'));
            }
        }

        function DeliveryZone_SelectedChanged(s, e) {
            var item_zone = s.GetSelectedItem();
            if (item_zone) s.SetText(item_zone.GetColumnText('delivery_zone'));
            gv_delivery_route_d.GetEditor('description').SetValue(item_zone.GetColumnText('description'));
            gv_delivery_route_d.GetEditor('zone_group').SetValue(item_zone.GetColumnText('zone_group'));
            gv_delivery_route_d.GetEditor('zone_sub_group').SetValue(item_zone.GetColumnText('zone_sub_group'));
            gv_delivery_route_d.PerformCallback();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div style="display: inline-block; width: 100%; margin: -8;">
            <div style="padding-bottom: 3px;">
                <dx:ASPxButton runat="server" ID="btn_new_row" Text="Add New" Theme="Aqua" AutoPostBack="false" Width="88px" UseSubmitBehavior="false">
                    <ClientSideEvents Click="function(s, e) {
                                       gv_delivery_route.AddNewRow();   }" />
                </dx:ASPxButton>
            </div>
            <dx:ASPxGridView ID="gv_delivery_route" runat="server" AutoGenerateColumns="False" DataSourceID="sql_delivery_route" KeyFieldName="delivery_route" Theme="Aqua" OnInit="gv_delivery_route_Init"
                OnRowValidating="gv_delivery_route_RowValidating" EnableCallBacks="true" ClientInstanceName="gv_delivery_route" OnCellEditorInitialize="gv_delivery_route_CellEditorInitialize"
                Settings-ShowFilterBar="Auto" Settings-ShowFilterRow="true">
                <Columns>
                    <dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image" Width="60px">
                        <EditButton Text="Edit" Visible="true" Image-Url="../images/img_edit.png">
                            <Image Url="../images/img_edit.png"></Image>
                        </EditButton>
                        <UpdateButton Text="Edit" Visible="true" Image-Url="../images/img_edit.png">
                            <Image Url="../images/Apply.png"></Image>
                        </UpdateButton>
                        <CancelButton Text="Edit" Visible="true" Image-Url="../images/img_edit.png">
                            <Image Url="../images/Cancel.png"></Image>
                        </CancelButton>
                    </dx:GridViewCommandColumn>
                    <dx:GridViewDataTextColumn FieldName="delivery_route" ReadOnly="true" VisibleIndex="1" Caption="Delivery Route" PropertiesTextEdit-Style-BackColor="#C2E2ED">
                        <PropertiesTextEdit>
                            <ClientSideEvents KeyDown="function(s, e) {ProcessKeyDown(e.htmlEvent.keyCode); }" />
                        </PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="description" VisibleIndex="2" Caption="Description">
                        <PropertiesTextEdit>
                            <ClientSideEvents KeyDown="function(s, e) {ProcessKeyDown(e.htmlEvent.keyCode); }" />
                        </PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="created_by" ReadOnly="true" Visible="true" VisibleIndex="3" Caption="Create By">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataDateColumn FieldName="created_date" VisibleIndex="4" Caption="Create Date" ReadOnly="true" PropertiesDateEdit-DropDownButton-Enabled="false" PropertiesDateEdit-DisplayFormatInEditMode="true">
                        <PropertiesDateEdit></PropertiesDateEdit>
                    </dx:GridViewDataDateColumn>
                    <dx:GridViewDataTextColumn FieldName="updated_by" ReadOnly="true" VisibleIndex="5" Caption="Update By">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataDateColumn FieldName="updated_date" VisibleIndex="6" Caption="Updated Date" PropertiesDateEdit-DropDownButton-Enabled="false" ReadOnly="true" PropertiesDateEdit-DisplayFormatInEditMode="true">
                        <PropertiesDateEdit></PropertiesDateEdit>
                    </dx:GridViewDataDateColumn>
                    <dx:GridViewCommandColumn VisibleIndex="7" ButtonType="Image" Width="30px">
                        <DeleteButton Visible="true" Text="Delete" Image-Url="../images/img_delete.png">
                            <Image Url="../images/img_delete.png"></Image>
                        </DeleteButton>
                    </dx:GridViewCommandColumn>
                </Columns>
                <SettingsBehavior AllowSelectByRowClick="True" ConfirmDelete="True" AllowFocusedRow="true" />
                <SettingsEditing Mode="Inline" />
                <SettingsText ConfirmDelete="Are you sure you want to delete?" />
                <ClientSideEvents FocusedRowChanged="function(s, e) {               
                                                        if (typeof(gv_delivery_route_d) != 'undefined')
                                                        {                                                       
                                                            gv_delivery_route_d.PerformCallback(s.GetFocusedRowIndex());                                                                                                
                                                        }
                                                    }"
                    EndCallback="End_CallBack" BeginCallback="Begin_CallBack" />
                <Styles>
                    <CommandColumn Spacing="3px" Wrap="False" />
                </Styles>
            </dx:ASPxGridView>
            <div style="padding-top: 10px"></div>

            <div style="padding-bottom: 3px;">
                <dx:ASPxButton runat="server" ID="btn_add_delivery_route_d" Text="Add New" Theme="Aqua" AutoPostBack="false" Width="88px" UseSubmitBehavior="false">
                    <ClientSideEvents Click="function(s, e) {
                                       gv_delivery_route_d.AddNewRow();   }" />
                </dx:ASPxButton>
            </div>
            <dx:ASPxGridView ID="gv_delivery_route_d" runat="server" AutoGenerateColumns="False"
                OnCellEditorInitialize="gv_delivery_route_d_CellEditorInitialize"
                OnRowValidating="gv_delivery_route_d_RowValidating"
                OnInit="gv_delivery_route_d_Init"
                ClientInstanceName="gv_delivery_route_d"
                DataSourceID="sql_delivery_route_d"
                KeyFieldName="i_delivery_route;i_delivery_zone"
                OnCustomCallback="gv_delivery_route_d_CustomCallback"
                OnCommandButtonInitialize="gv_delivery_route_d_CommandButtonInitialize"
                Settings-ShowFilterBar="Auto"
                Settings-ShowFilterRow="true"
                Theme="Aqua" Width="100%">
                <Columns>
                    <dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image">
                        <EditButton Text="Edit" Visible="true" Image-Url="../images/img_edit.png">
                            <Image Url="../images/img_edit.png"></Image>
                        </EditButton>
                        <UpdateButton Text="Edit" Visible="true" Image-Url="../images/img_edit.png">
                            <Image Url="../images/Apply.png"></Image>
                        </UpdateButton>
                        <CancelButton Text="Edit" Visible="true" Image-Url="../images/img_edit.png">
                            <Image Url="../images/Cancel.png"></Image>
                        </CancelButton>
                    </dx:GridViewCommandColumn>
                    <dx:GridViewCommandColumn VisibleIndex="1" ButtonType="Image">
                        <CustomButtons>
                            <dx:GridViewCommandColumnCustomButton ID="cmdUp">
                                <Image Url="../images/Up.ico"></Image>
                            </dx:GridViewCommandColumnCustomButton>
                        </CustomButtons>
                        <CustomButtons>
                            <dx:GridViewCommandColumnCustomButton ID="cmdDown">
                                <Image Url="../images/Down.ico"></Image>
                            </dx:GridViewCommandColumnCustomButton>
                        </CustomButtons>                        
                    </dx:GridViewCommandColumn>
                    <dx:GridViewDataTextColumn FieldName="i_delivery_route" VisibleIndex="2" Width="150px" Visible="false">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataComboBoxColumn FieldName="i_delivery_zone" VisibleIndex="3" ReadOnly="true">
                        <PropertiesComboBox ValueField="delivery_zone" TextField="delivery_zone" TextFormatString="{0}"
                            DisplayFormatString="{0}" CallbackPageSize="30" EnableCallbackMode="true" DropDownStyle="DropDown"
                            OnItemsRequestedByFilterCondition="cbo_delivery_zone_ItemsRequestedByFilterCondition" IncrementalFilteringMode="Contains"
                            OnItemRequestedByValue="cbo_delivery_zone_ItemRequestedByValue">
                            <Columns>
                                <dx:ListBoxColumn Caption="Delivery Zone" FieldName="delivery_zone" Name="delivery_zone" />
                                <dx:ListBoxColumn Caption="Description" FieldName="description" Name="description" />
                                <dx:ListBoxColumn FieldName="zone_group" Name="zone_group" Caption="Zone Group" />
                                <dx:ListBoxColumn FieldName="zone_sub_group" Name="zone_sub_group" Caption="Zone Sub Group" />
                            </Columns>
                            <ClientSideEvents GotFocus="DeliveryZone_GotFocus"
                                Init="DeliveryZone_Init" ValueChanged="DeliveryZone_GotFocus" EndCallback="DeliveryZone_EndCallback" />
                        </PropertiesComboBox>
                    </dx:GridViewDataComboBoxColumn>
                    <dx:GridViewDataTextColumn FieldName="description" VisibleIndex="4" Width="150px" ReadOnly="true">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="zone_group" VisibleIndex="5" ReadOnly="true" Caption="Zone Group">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="zone_sub_group" VisibleIndex="6" ReadOnly="true" Caption="Zone Sub Group">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="load_seq" VisibleIndex="7" ReadOnly="true">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataTextColumn FieldName="created_by" ReadOnly="true" Visible="true" VisibleIndex="8" PropertiesTextEdit-Style-BackColor="LightGray">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataDateColumn FieldName="created_date" VisibleIndex="9" ReadOnly="true" PropertiesDateEdit-DropDownButton-Enabled="false" PropertiesDateEdit-DisplayFormatInEditMode="true">
                        <PropertiesDateEdit></PropertiesDateEdit>
                    </dx:GridViewDataDateColumn>
                    <dx:GridViewDataTextColumn FieldName="updated_by" ReadOnly="true" VisibleIndex="10" PropertiesTextEdit-Style-BackColor="LightGray">
                        <PropertiesTextEdit></PropertiesTextEdit>
                    </dx:GridViewDataTextColumn>
                    <dx:GridViewDataDateColumn FieldName="updated_date" VisibleIndex="11" PropertiesDateEdit-DropDownButton-Enabled="false" ReadOnly="true" PropertiesDateEdit-DisplayFormatInEditMode="true">
                        <PropertiesDateEdit></PropertiesDateEdit>
                    </dx:GridViewDataDateColumn>
                    <dx:GridViewCommandColumn VisibleIndex="12" ButtonType="Image">                        
                        <DeleteButton Visible="true" Text="Delete" Image-Url="../images/img_delete.png">
                            <Image Url="../images/img_delete.png"></Image>
                        </DeleteButton>
                    </dx:GridViewCommandColumn>
                </Columns>
                <ClientSideEvents EndCallback="End_CallBack_Grid" BeginCallback="Begin_CallBack" />
                <SettingsBehavior AllowSelectByRowClick="True" ConfirmDelete="True" />
                <SettingsEditing Mode="Inline" />
                <SettingsText ConfirmDelete="Are you sure you want to delete?" />
                <Styles>
                    <CommandColumn Spacing="3px" Wrap="False" />
                </Styles>
            </dx:ASPxGridView>

            <asp:SqlDataSource ID="sql_delivery_route_d" runat="server" ConnectionString="<%$ ConnectionStrings:mainConnection %>"
                SelectCommand="select_delivery_route_d" SelectCommandType="StoredProcedure"
                DeleteCommand="delete_delivery_route_d" DeleteCommandType="StoredProcedure"
                InsertCommand="save_delivery_route_d" InsertCommandType="StoredProcedure"
                UpdateCommand="save_delivery_route_d" UpdateCommandType="StoredProcedure"
                OnDeleted="sql_delivery_route_d_deleted" OnInserted="sql_delivery_route_d_inserted" OnUpdated="sql_delivery_route_d_updated"
                OnDeleting="sql_delivery_route_d_tran" OnUpdating="sql_delivery_route_d_tran" OnInserting="sql_delivery_route_d_tran" 
                OnSelecting="sql_delivery_route_d_Selecting">
                <SelectParameters>
                    <asp:Parameter Name="i_delivery_route" Type="String" />
                </SelectParameters>
                <DeleteParameters>
                    <asp:Parameter Name="i_delivery_route" Type="String" />
                    <asp:Parameter Name="i_delivery_zone" Type="String" />
                    <asp:Parameter Name="o_succeed" Type="Boolean" Direction="InputOutput" />
                    <asp:Parameter Name="o_msg_num" Type="Int32" Direction="InputOutput" Size="10" />
                    <asp:Parameter Name="o_add_info" Type="String" Direction="InputOutput" DefaultValue="" Size="3000" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="i_delivery_route" Type="String" />
                    <asp:Parameter Name="i_delivery_zone" Type="String" />
                    <asp:SessionParameter Name="i_user" SessionField="username" Type="String" />
                    <asp:Parameter Name="o_succeed" Type="Boolean" Direction="InputOutput" DefaultValue="false" />
                    <asp:Parameter Name="o_msg_num" Type="Int32" Direction="InputOutput" Size="10" />
                    <asp:Parameter Name="o_add_info" Type="String" Direction="InputOutput" DefaultValue="" Size="3000" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="i_delivery_route" Type="String" />
                    <asp:Parameter Name="i_delivery_zone" Type="String" />
                    <asp:SessionParameter Name="i_user" SessionField="username" Type="String" />
                    <asp:Parameter Name="o_succeed" Type="Boolean" Direction="InputOutput" DefaultValue="false" />
                    <asp:Parameter Name="o_msg_num" Type="Int32" Direction="InputOutput" Size="10" />
                    <asp:Parameter Name="o_add_info" Type="String" Direction="InputOutput" DefaultValue="" Size="3000" />
                </UpdateParameters>
            </asp:SqlDataSource>

            <asp:SqlDataSource ID="sql_delivery_route" runat="server"
                ConnectionString="<%$ ConnectionStrings:mainConnection %>"
                SelectCommand="select_delivery_route" SelectCommandType="StoredProcedure" DeleteCommand="delete_delivery_route"
                DeleteCommandType="StoredProcedure" InsertCommand="save_delivery_route" InsertCommandType="StoredProcedure"
                UpdateCommand="save_delivery_route" UpdateCommandType="StoredProcedure"
                OnDeleted="sql_delivery_route_popup" OnInserted="sql_delivery_route_popup" OnUpdated="sql_delivery_route_popup"
                OnUpdating="sql_delivery_route_tran" OnDeleting="sql_delivery_route_tran" OnInserting="sql_delivery_route_tran">

                <DeleteParameters>
                    <asp:Parameter Name="delivery_route" Type="String" />
                    <asp:Parameter Direction="InputOutput" Name="success" Type="Boolean" />
                    <asp:Parameter Name="o_msg_num" Type="Int32" Direction="InputOutput" Size="10" />
                    <asp:Parameter Name="o_add_info" Type="String" Direction="InputOutput" DefaultValue="" Size="3000" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="delivery_route" Type="String" />
                    <asp:Parameter Name="description" Type="String" />
                    <asp:SessionParameter Name="i_updated_by" SessionField="username" Type="String" />
                    <asp:SessionParameter Name="i_created_by" SessionField="username" Type="String" />
                    <asp:Parameter Name="success" Type="Boolean" Direction="InputOutput" DefaultValue="false" />
                    <asp:Parameter Name="o_msg_num" Type="Int32" Direction="InputOutput" Size="10" />
                    <asp:Parameter Name="o_add_info" Type="String" Direction="InputOutput" DefaultValue="" Size="3000" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="delivery_route" Type="String" />
                    <asp:Parameter Name="description" Type="String" />
                    <asp:SessionParameter Name="i_updated_by" SessionField="username" Type="String" />
                    <asp:SessionParameter Name="i_created_by" SessionField="username" Type="String" />
                    <asp:Parameter Name="success" Type="Boolean" Direction="InputOutput" DefaultValue="false" />
                    <asp:Parameter Name="o_msg_num" Type="Int32" Direction="InputOutput" Size="10" />
                    <asp:Parameter Name="o_add_info" Type="String" Direction="InputOutput" DefaultValue="" Size="3000" />
                </UpdateParameters>
            </asp:SqlDataSource>

            <asp:SqlDataSource ID="Sql_filter" runat="server" ConnectionString="<%$ ConnectionStrings:mainConnection%>"></asp:SqlDataSource>

            <dx:ASPxPopupControl ID="ASPxPopupControl2" runat="server"
                ClientInstanceName="msg_popup" ShowLoadingPanel="true" Theme="Aqua" ShowMaximizeButton="true" ContentUrl="javascript:void(0);"
                Width="400px" CloseAction="CloseButton" PopupHorizontalAlign="WindowCenter" PopupVerticalAlign="Above" MaxHeight="200px">
                <ContentCollection>
                    <dx:PopupControlContentControl ID="PopupControlContentControl1" runat="server">
                    </dx:PopupControlContentControl>
                </ContentCollection>

                <ClientSideEvents CloseUp="function(s,e){msg_popup.Hide();}" />
            </dx:ASPxPopupControl>
        </div>
    </form>
</body>
</html>
        
 Save
C# (.cs) File
using DevExpress.Web.ASPxGridView;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;
using DevExpress.Web.ASPxEditors;

public partial class master_files_delivery_route : System.Web.UI.Page
{
    string asn_no, str_success, msg_num, g_messge, add_info;
    public SystemInfo sys;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Label_setting();
            FormatDate();
        }
        gv_delivery_route_d.JSProperties["cperror_msg_num"] = -1; //nilai default - tidak ada kesalahan /error
    }
    protected void gv_delivery_route_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
    {
        if (e.NewValues["delivery_route"] == null)
        {
            AddError(e.Errors, gv_delivery_route.Columns["delivery_route"], "Delivery route is required.");
            gv_delivery_route.JSProperties["cperror_add_info"] = "error";
        }
        if (e.NewValues["description"] == null)
        {
            AddError(e.Errors, gv_delivery_route.Columns["description"], "Description is required.");
            gv_delivery_route.JSProperties["cperror_add_info"] = "error";
        }
    }
    private void FormatDate()
    {
        string dateformat = Session["date_format_desc"].ToString();

        //gv_delivery_route
        GridViewDataDateColumn col_created = gv_delivery_route.Columns["created_date"] as GridViewDataDateColumn;
        if (col_created != null)
        {
            col_created.PropertiesDateEdit.DisplayFormatString = dateformat;
        }
        GridViewDataDateColumn col_updated = gv_delivery_route.Columns["updated_date"] as GridViewDataDateColumn;
        if (col_updated != null)
        {
            col_updated.PropertiesDateEdit.DisplayFormatString = dateformat;
        }

        //gv_delivery_route_d
        GridViewDataDateColumn col_created1 = gv_delivery_route.Columns["created_date"] as GridViewDataDateColumn;
        if (col_created1 != null)
        {
            col_created1.PropertiesDateEdit.DisplayFormatString = dateformat;
        }
        GridViewDataDateColumn col_updated1 = gv_delivery_route.Columns["updated_date"] as GridViewDataDateColumn;
        if (col_updated1 != null)
        {
            col_updated1.PropertiesDateEdit.DisplayFormatString = dateformat;
        }
    }
    void AddError(Dictionary errors, GridViewColumn column, string errorText)
    {
        if (errors.ContainsKey(column)) return;
        errors[column] = errorText;
    }
    private void Label_setting()
    {
        DataSet ds = new DataSet();
        String sysMsg;
        DataTable dtLabelNum = new DataTable();
        dtLabelNum.Columns.Add("lblNum", typeof(int));
        DataTable dtLabelTabCol = new DataTable();
        //details
        dtLabelTabCol.Columns.Add("table_column", typeof(string));
        dtLabelTabCol.Rows.Add("delivery_route_d.delivery_route");
        dtLabelTabCol.Rows.Add("delivery_route_d.delivery_zone");
        dtLabelTabCol.Rows.Add("delivery_route_d.description");
        dtLabelTabCol.Rows.Add("delivery_route_d.load_seq");
        dtLabelTabCol.Rows.Add("delivery_route_d.updated_by");
        dtLabelTabCol.Rows.Add("delivery_route_d.updated_date");
        dtLabelTabCol.Rows.Add("delivery_route_d.created_by");
        dtLabelTabCol.Rows.Add("delivery_route_d.created_date");
        dtLabelTabCol.Rows.Add("delivery_zone.zone_group");
        dtLabelTabCol.Rows.Add("delivery_zone.zone_sub_group");

        //header       
        dtLabelTabCol.Rows.Add("delivery_route.updated_by");
        dtLabelTabCol.Rows.Add("delivery_route.updated_date");
        dtLabelTabCol.Rows.Add("delivery_route.created_by");
        dtLabelTabCol.Rows.Add("delivery_route.created_date");
        dtLabelTabCol.Rows.Add("delivery_route.description");
        dtLabelTabCol.Rows.Add("delivery_route.delivery_route");
        dtLabelNum.Rows.Add(6077);

        string owner_code = Session["default_owner_code"].ToString();
        string whs_code = Session["default_whs_code"].ToString();

        try
        {
            sys = new SystemInfo();
            ds = sys.Select_GetLabelByNum(dtLabelNum, dtLabelTabCol, owner_code, whs_code);
            gv_delivery_route_d.Columns["i_delivery_zone"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.delivery_zone", ds);
            gv_delivery_route_d.Columns["load_seq"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.load_seq", ds);
            gv_delivery_route_d.Columns["description"].Caption = SystemInfo.GetLabelByTabCol("delivery_route.description", ds);
            gv_delivery_route_d.Columns["zone_group"].Caption = SystemInfo.GetLabelByTabCol("delivery_zone.zone_group", ds);
            gv_delivery_route_d.Columns["zone_sub_group"].Caption = SystemInfo.GetLabelByTabCol("delivery_zone.zone_sub_group", ds);
            gv_delivery_route_d.Columns["updated_by"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.updated_by", ds);
            gv_delivery_route_d.Columns["updated_date"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.updated_date", ds);
            gv_delivery_route_d.Columns["created_by"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.created_by", ds);
            gv_delivery_route_d.Columns["created_date"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.created_date", ds);

            gv_delivery_route.Columns["delivery_route"].Caption = SystemInfo.GetLabelByTabCol("delivery_route.delivery_route", ds);
            gv_delivery_route.Columns["description"].Caption = SystemInfo.GetLabelByTabCol("delivery_route.description", ds);
            gv_delivery_route.Columns["created_by"].Caption = SystemInfo.GetLabelByTabCol("delivery_route.created_by", ds);
            gv_delivery_route.Columns["created_date"].Caption = SystemInfo.GetLabelByTabCol("delivery_route.created_date", ds);
            gv_delivery_route.Columns["updated_by"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.updated_by", ds);
            gv_delivery_route.Columns["updated_date"].Caption = SystemInfo.GetLabelByTabCol("delivery_route_d.updated_date", ds);

            //mandatory delivery route
            if (SystemInfo.GetMandatoryByTabCol("delivery_route.delivery_route", ds)) ((GridViewDataTextColumn)gv_delivery_route.Columns["delivery_route"]).PropertiesEdit.Style.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFEF97");
            if (SystemInfo.GetMandatoryByTabCol("delivery_route.description", ds)) ((GridViewDataTextColumn)gv_delivery_route.Columns["description"]).PropertiesEdit.Style.BackColor = System.Drawing.ColorTranslator.FromHtml("#FFEF97");


            DataTable dt = new DataTable();
            dt = sys.Select_Getdate_Format(Session["date_format"].ToString());
            ((GridViewDataDateColumn)gv_delivery_route_d.Columns["created_date"]).PropertiesDateEdit.DisplayFormatString = dt.Rows[0]["description2"].ToString() + " " + dt.Rows[0]["time_format"].ToString();
            ((GridViewDataDateColumn)gv_delivery_route_d.Columns["updated_date"]).PropertiesDateEdit.DisplayFormatString = dt.Rows[0]["description2"].ToString() + " " + dt.Rows[0]["time_format"].ToString();

            //add new button
            btn_add_delivery_route_d.Text = btn_new_row.Text = SystemInfo.GetLabelByNum(6077, ds);

            int page_row_size = 0;

            page_row_size = sys.GetRowPerPage(Session["default_owner_code"].ToString(), Session["default_whs_code"].ToString());
            gv_delivery_route.SettingsPager.PageSize = page_row_size;
            gv_delivery_route_d.SettingsPager.PageSize = page_row_size;

        }
        catch (Exception ex)
        {
            sysMsg = ex.ToString();
            Response.Write(sysMsg);
        }
    }
    protected void sql_delivery_route_popup(object sender, SqlDataSourceStatusEventArgs e)
    {
        Boolean success;
        Int32 msgNum;
        string addinfo;
        
        // Pastikan koneksi database terbuka
        if (e.Command.Connection.State.Equals("Closed")) e.Command.Connection.Open();
        if (e.Command.Transaction == null) e.Command.Transaction = e.Command.Connection.BeginTransaction();
        try
        {
            success = Convert.ToBoolean(e.Command.Parameters["@success"].Value);
            msgNum = Convert.ToInt32(e.Command.Parameters["@o_msg_num"].Value);
            addinfo = Convert.ToString(e.Command.Parameters["@o_add_info"].Value);
            if (success)
            {
              //coomit jika sukses
                e.Command.Transaction.Commit();


            // Mengirimkan informasi sukses ke client-side menggunakan JSProperties
                gv_delivery_route.JSProperties["cperror_msg_num"] = msgNum;
                gv_delivery_route.JSProperties["cperror_add_info"] = addinfo;

            }
            else
            {
              // Jika operasi gagal, rollback transaksi
                if (e.Command.Transaction != null)
                {
                    e.Command.Transaction.Rollback();
                }
                    // Mengirimkan informasi kesalahan ke client-side menggunakan JSProperties
                gv_delivery_route.JSProperties["cperror_msg_num"] = msgNum;
                gv_delivery_route.JSProperties["cperror_add_info"] = addinfo;

            }
        }
        catch (Exception ex)
        {
            //// Jika terjadi error, batalkan transaksi dan lemparkan exception
            if (e.Command.Transaction != null)
                e.Command.Transaction.Dispose();
            throw (ex);
        }
        finally
        {
            // Pastikan transaksi dibersihkan setelah selesai
            if (e.Command.Transaction != null)
                e.Command.Transaction.Dispose();
        }

    }
 
   
    protected void gv_delivery_route_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
    {
      // Mengecek apakah sedang mengedit baris baru
        if (gv_delivery_route.IsNewRowEditing)
        {
  
           // Mengecek apakah kolom yang diedit adalah kolom "delivery_route"
            if (e.Column.FieldName == "delivery_route")
              // Membuat editor kolom "delivery_route" menjadi bisa diedit
                e.Editor.ReadOnly = false;
            else
                return; // Jika kolom yang diedit bukan "delivery_route", tidak ada tindakan lebih lanjut
        }
        else
            return;
    }
    protected void gv_delivery_route_Init(object sender, EventArgs e)
    {
      //Mendapatkan pesan konfirmasi penghapusan berdasarkan ID pesan (262) dan bahasa yang dipilih oleh pengguna
        string label = SystemInfo.errorMsg(262, (string)Session["language"]);
        ASPxGridView grid_ln = (ASPxGridView)sender;
        grid_ln.SettingsText.ConfirmDelete = label;
    }
    protected void sql_delivery_route_tran(object sender, SqlDataSourceCommandEventArgs e)
    {
      //open koneksi
        e.Command.Connection.Open();
        // Memulai transaksi pada koneksi yang terbuka
        e.Command.Transaction = e.Command.Connection.BeginTransaction();
    }
    protected void gv_delivery_route_d_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
    {
        gv_delivery_route_d.DataBind();
    }

    // Event handler untuk validasi baris baru
    protected void gv_delivery_route_d_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
    {
        if (e.NewValues["i_delivery_zone"] == null)
        {
            AddError(e.Errors, gv_delivery_route.Columns["i_delivery_zone"], "Delivery Zone is required.");
            gv_delivery_route.JSProperties["cperror_add_info"] = "error";
        }
    }
    protected void gv_delivery_route_d_Init(object sender, EventArgs e)
    {
        string label = SystemInfo.errorMsg(262, (string)Session["language"]);
        ASPxGridView grid_ln = (ASPxGridView)sender;
        grid_ln.SettingsText.ConfirmDelete = label;
    }
    protected void gv_delivery_route_d_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
    {
        if (gv_delivery_route_d.IsNewRowEditing)
        {
            if (e.Column.FieldName == "i_delivery_zone")
                e.Editor.ReadOnly = false;
            else
                return;
        }
        else
            return;

        if (e.Column.FieldName == "i_delivery_zone")
        {
            ASPxComboBox combo = e.Editor as ASPxComboBox;
            combo.ClientSideEvents.SelectedIndexChanged = "DeliveryZone_SelectedChanged";
        }
    }
    protected void sql_delivery_route_d_deleted(object sender, SqlDataSourceStatusEventArgs e)
    {
        DbCommand command = e.Command;
        DbTransaction tx = command.Transaction;

        try
        {
            str_success = e.Command.Parameters["@o_succeed"].Value.ToString();
            msg_num = e.Command.Parameters["@o_msg_num"].Value.ToString();
            add_info = e.Command.Parameters["@o_add_info"].Value.ToString();
            if ((bool)e.Command.Parameters["@o_succeed"].Value)
            {
                tx.Commit();
                Show_Error_Detail("173", "~/images/ok-icon.png", "");
            }
            else
            {
                tx.Rollback();
                Show_Error_Detail(msg_num, "~/images/error_button.png", "Add Info [ " + add_info + " ]");
            }

        }
        catch (Exception ex)
        {
            if (e.Command.Transaction != null)
            {
                e.Command.Transaction.Dispose();
                e.Command.Connection.Close();
            }
            throw (ex);
        }
        finally
        {
            if (e.Command.Transaction != null)
            {
                e.Command.Transaction.Dispose();
                e.Command.Connection.Close();
            }
        }
    }
    protected void sql_delivery_route_d_inserted(object sender, SqlDataSourceStatusEventArgs e)
    {
        DbCommand command = e.Command;
        DbTransaction tx = command.Transaction;

        try
        {
            str_success = e.Command.Parameters["@o_succeed"].Value.ToString();
            msg_num = e.Command.Parameters["@o_msg_num"].Value.ToString();
            add_info = e.Command.Parameters["@o_add_info"].Value.ToString();
            if ((bool)e.Command.Parameters["@o_succeed"].Value)
            {
                tx.Commit();
                Show_Error_Detail("170", "~/images/ok-icon.png", "");
            }
            else
            {
                tx.Rollback();
                Show_Error_Detail(msg_num, "~/images/error_button.png", "Add Info [ " + add_info + " ]");
            }

        }
        catch (Exception ex)
        {
            if (e.Command.Transaction != null)
            {
                e.Command.Transaction.Dispose();
                e.Command.Connection.Close();
            }
            throw (ex);
        }
        finally
        {
            if (e.Command.Transaction != null)
            {
                e.Command.Transaction.Dispose();
                e.Command.Connection.Close();
            }
        }
    }
    protected void sql_delivery_route_d_updated(object sender, SqlDataSourceStatusEventArgs e)
    {
        DbCommand command = e.Command;
        DbTransaction tx = command.Transaction;

        try
        {
            str_success = e.Command.Parameters["@o_succeed"].Value.ToString();
            msg_num = e.Command.Parameters["@o_msg_num"].Value.ToString();
            add_info = e.Command.Parameters["@o_add_info"].Value.ToString();
            if ((bool)e.Command.Parameters["@o_succeed"].Value)
            {
                tx.Commit();
                Show_Error_Detail("171", "~/images/ok-icon.png", "");
            }
            else
            {
                tx.Rollback();
                Show_Error_Detail(msg_num, "~/images/error_button.png", "Add Info [ " + add_info + " ]");
            }

        }
        catch (Exception ex)
        {
            if (e.Command.Transaction != null)
            {
                e.Command.Transaction.Dispose();
                e.Command.Connection.Close();
            }
            throw (ex);
        }
        finally
        {
            if (e.Command.Transaction != null)
            {
                e.Command.Transaction.Dispose();
                e.Command.Connection.Close();
            }
        }
    }
    protected void sql_delivery_route_d_tran(object sender, SqlDataSourceCommandEventArgs e)
    {
        e.Command.Parameters["@i_delivery_route"].Value = gv_delivery_route.GetRowValues(gv_delivery_route.FocusedRowIndex, "delivery_route").ToString();
        DbCommand command = e.Command;
        DbConnection cx = command.Connection;
        cx.Open();
        DbTransaction tx = cx.BeginTransaction();
        command.Transaction = tx;
    }
    public void Show_Error(string msgnum, string Url, string AddInfo)
    {
        gv_delivery_route.JSProperties["cperror_msg_num"] = msgnum;
        gv_delivery_route.JSProperties["cperror_add_info"] = AddInfo;
        gv_delivery_route.JSProperties["cperror_image_url"] = Url;
    }
    public void Show_Error_Detail(string msgnum, string Url, string AddInfo)
    {
        gv_delivery_route_d.JSProperties["cperror_msg_num"] = msgnum;
        gv_delivery_route_d.JSProperties["cperror_add_info"] = AddInfo;
        gv_delivery_route_d.JSProperties["cperror_image_url"] = Url;
    }
    protected void sql_delivery_route_d_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        object values = gv_delivery_route.GetRowValues(gv_delivery_route.FocusedRowIndex, new string[] { "delivery_route" });
        string focusrow = (values == null) ? null : values.ToString();
        e.Command.Parameters["@i_delivery_route"].Value = focusrow;
    }
    protected void cbo_delivery_zone_ItemsRequestedByFilterCondition(object source, ListEditItemsRequestedByFilterConditionEventArgs e)
    {
        ASPxComboBox comboBox_zone = (ASPxComboBox)source; 
       //// Memeriksa apakah permintaan berasal dari callback dan jika halaman sedang melakukan postback
        if (comboBox_zone.IsCallback && Page.IsPostBack)
        {
            comboBox_zone.Items.Clear(); //hapus yang ada sebelum input baru
            Sql_filter.SelectParameters.Clear();
            Sql_filter.SelectCommand = "wm_select_delivery_zone";
            Sql_filter.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;
            Sql_filter.SelectParameters.Add("zone", TypeCode.String, string.Format("%{0}%", e.Filter));
            Sql_filter.SelectParameters.Add("startIndex", TypeCode.Int64, (e.BeginIndex + 1).ToString());
            Sql_filter.SelectParameters.Add("endIndex", TypeCode.Int64, (e.EndIndex + 9).ToString());
            //DataView dv = (DataView)Sql_filter.Select(DataSourceSelectArguments.Empty);
            comboBox_zone.DataSource = Sql_filter;
            comboBox_zone.DataBind();
        }
    }
    protected void cbo_delivery_zone_ItemRequestedByValue(object source, ListEditItemRequestedByValueEventArgs e)
    {

    }
    protected void gv_delivery_route_d_CommandButtonInitialize(object sender, ASPxGridViewCommandButtonEventArgs e)
    {
        if (e.ButtonType == DevExpress.Web.ASPxGridView.ColumnCommandButtonType.Edit)
            e.Visible = false;
    }
}
        
content_copyCOPY