Advertisement
Guest User

Untitled

a guest
Sep 8th, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASP 14.23 KB | None | 0 0
  1. <%@ Page Title="" Language="C#" MasterPageFile="~/Layouts/Request.master" AutoEventWireup="true"
  2.     CodeBehind="Add.aspx.cs" Inherits="AquaEMS.Web.Request.Add" %>
  3.  
  4. <%@ Register Assembly="DevExpress.Web.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
  5.     Namespace="DevExpress.Web.ASPxCallbackPanel" TagPrefix="dx" %>
  6. <%@ Register Assembly="DevExpress.Web.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
  7.     Namespace="DevExpress.Web.ASPxCallback" TagPrefix="dx" %>
  8. <%@ Register Assembly="DevExpress.Web.ASPxEditors.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
  9.     Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
  10. <%@ Register Assembly="DevExpress.Data.v9.3.Linq, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
  11.     Namespace="DevExpress.Data.Linq" TagPrefix="dx" %>
  12. <%@ Register Assembly="DevExpress.Web.ASPxGridView.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
  13.     Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
  14. <%@ Register Src="../Controls/ErrorMessage.ascx" TagName="ErrorMessage" TagPrefix="uc1" %>
  15. <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
  16. </asp:Content>
  17. <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
  18.  
  19.     <script type="text/javascript">
  20.  
  21.         RequestProductionQtyCalcluator = {
  22.             disable : false,
  23.             _packingRules: eval('<%= JsonPackingRules %>'),
  24.             _productions: eval('<%= JsonProductions %>'),
  25.             palletMin: 0,
  26.             palletMax: 65535,
  27.             rowMin: 0,
  28.             rowMax: 65535,
  29.             packMin: 0,
  30.             packMax: 65535,
  31.             RequestProductionQty: 0,
  32.             checkedValues: new Array(),
  33.  
  34.             Calculate: function (productionId, productionQty) {
  35.                 this.palletMin = this.rowMin = this.packMin = 0
  36.                 this.palletMax = this.rowMax = this.packMax = 65535;
  37.                 this.RequestProductionQty = productionQty;
  38.                 this.checkedValues = new Array();
  39.                 infoMessage = '';
  40.  
  41.                 query = new jsinq.Query('\
  42.                     from p in $0 \
  43.                     where p.ProductionId == $1 \
  44.                     select p \
  45.                 ');
  46.                 productionsEnumerable = new jsinq.Enumerable(this._productions);
  47.                 query.setValue(0, productionsEnumerable);
  48.                 query.setValue(1, productionId);
  49.                 var production = query.execute().first();
  50.  
  51.                 this._calculateBoundary(production.BottlesCountInPack, 'packMin', 'packMax');
  52.  
  53.                 prodRulesEnumerable = new jsinq.Enumerable(this._packingRules);
  54.                 query = new jsinq.Query('\
  55.                     from r in $0 \
  56.                     where r.ProductionId == $1 && r.BottlesCount>0 && r.RowsCount>0 \
  57.                     select r \
  58.                 ');
  59.                 query.setValue(0, prodRulesEnumerable);
  60.                 query.setValue(1, productionId);
  61.                 var packingRules = query.execute().toArray();
  62.                 for (var pr in packingRules) {
  63.                     this._calculateBoundary(packingRules[pr].BottlesCount, 'palletMin', 'palletMax');
  64.                     this._calculateBoundary(packingRules[pr].BottlesCount / packingRules[pr].RowsCount, 'rowMin', 'rowMax');
  65.                 }
  66.  
  67.                 cv = this._checkValues('Наилучший', this.palletMin, this.palletMax);
  68.                 if (cv == true) {
  69.                     return infoMessage;
  70.                 }
  71.                 infoMessage += cv;
  72.  
  73.                 cv = this._checkValues('Хороший', this.rowMin, this.rowMax);
  74.                 if (cv == true) {
  75.                     return infoMessage;
  76.                 }
  77.                 infoMessage += cv;
  78.  
  79.                 cv = this._checkValues('Удовлетворительный', this.rowMin, this.rowMax);
  80.                 if (cv == true) {
  81.                     return infoMessage;
  82.                 }
  83.                 infoMessage += cv;
  84.  
  85.                 if (infoMessage.length > 0) infoMessage += '<br/>';
  86.  
  87.                 return infoMessage;
  88.             },
  89.  
  90.             _checkValues: function (packingComplexityInfo, minValue, maxValue) {
  91.                 if (maxValue == 65535 || minValue == maxValue) {
  92.                     return true;
  93.                 }
  94.                 if ($.inArray(minValue, this.checkedValues) != -1 && ($.inArray(maxValue, this.checkedValues) != -1)) {
  95.                     return '';  // ???
  96.                 }
  97.                 else if ($.inArray(minValue, this.checkedValues) != -1 && !($.inArray(maxValue, this.checkedValues) != -1)) {
  98.                     //this.checkedValues.shift();
  99.                     this.checkedValues.push(maxValue);
  100.                     return '<br/><b>' + packingComplexityInfo + '  вариант:</b> ' + maxValue;
  101.                 }
  102.                 else if (!($.inArray(minValue, this.checkedValues) != -1) && ($.inArray(maxValue, this.checkedValues) != -1)) {
  103.                     //this.checkedValues.shift();
  104.                     this.checkedValues.push(maxValue);
  105.                     return '<br/><b>' + packingComplexityInfo + '  вариант:</b> ' + minValue;
  106.                 }
  107.                 else {
  108.                     //this.checkedValues.shift();
  109.                     //this.checkedValues.shift();
  110.  
  111.                     this.checkedValues.push(maxValue);
  112.                     this.checkedValues.push(minValue);
  113.  
  114.                     return '<br/><b>' + packingComplexityInfo + '  вариант:</b> ' + minValue + ' или ' + maxValue;
  115.                 }
  116.             },
  117.  
  118.             _calculateBoundary: function (value, minRef, maxRef) {
  119.                 if (this[minRef] == this[maxRef]) return;
  120.                 rem = this.RequestProductionQty % value;
  121.                 if (value == 0 || rem == 0) {
  122.                     this[minRef] = this[maxRef] = this.RequestProductionQty;
  123.                 }
  124.                 else {
  125.                     this[minRef] = Math.max(this[minRef], this.RequestProductionQty - rem);
  126.                     this[maxRef] = Math.min(this[maxRef], this.RequestProductionQty + value - rem);
  127.                 }
  128.             }
  129.  
  130.         };
  131.  
  132.         function validateRequestProductionQty(caller) {
  133.             var value = $(caller).attr('value');
  134.             if (value.length > 0) {
  135.                 var regexp = /^\d+$/;
  136.                 if (!regexp.test(value)) {
  137.                     return "Недопустимое значение";
  138.                 }
  139.  
  140.                 if (RequestProductionQtyCalcluator.disable) return null;
  141.  
  142.                 value = parseInt(value);
  143.                 var productionId = parseInt($(caller).attr('ProductionId'));
  144.                 var result = RequestProductionQtyCalcluator.Calculate(productionId, value);
  145.                 if (result.length > 0)
  146.                     return result;
  147.         }
  148.         return null;    //all ok
  149.     }
  150.     </script>
  151.  
  152.     <script type="text/javascript">
  153.         RequestPriceCalculator = {
  154.             Calculate: function (productionId, productionQty) {
  155.                 return 0;
  156.             }
  157.         };
  158.  
  159.         function calculateRequestPrice(caller) {
  160.             //todo: add code here
  161.             return null;    ///all ok
  162.         }
  163.     </script>
  164.  
  165.     <script type="text/javascript">
  166.         /*<![CDATA[*/
  167.         $(function () {
  168.                 $(".leftmenu").removeClass("sel");
  169.                 $("#leftlink_add").addClass("sel");
  170.             });
  171.         /*]]>*/
  172.     </script>
  173.     <div class="forms-title">
  174.         <h1><a href="/Request/Index.aspx">Заявки</a>&nbsp;→&nbsp;Создание новой заявки</h1>
  175.     </div>
  176.     <div class="forms">
  177.         <div class="forms-body" style="width: 480px;">
  178.             <div><uc1:ErrorMessage ID="errorMessage" runat="server" Visible="false" /></div>
  179.  
  180.             <div>
  181.                 <span style="float: left; width: 145px;">Условия поставки:</span>
  182.                 <dx:ASPxComboBox ID="TermsOfDelivery" Width="265px" runat="server" ValueType="System.Int32"
  183.                     TextField="Value" ValueField="Key">
  184.                 </dx:ASPxComboBox>
  185.             </div>
  186.            
  187.             <asp:LinqDataSource ID="CurrencyDS" runat="server" ContextTypeName="AquaEMS.Web.Data.DatabaseDataContext"
  188.                 EntityTypeName="" TableName="Currencies">
  189.             </asp:LinqDataSource>
  190.  
  191.             <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
  192.                 <ItemTemplate>
  193.                     <div class="clear">&nbsp;</div>
  194.                     <div>
  195.  
  196.                     <div>
  197.                         <span style="float: left; width: 145px;">Валюта заявки:</span>
  198.                         <dx:ASPxComboBox ID="Currency" Width="265px" runat="server" ValueType="System.Int32" SelectedIndex="0"
  199.                             DataSourceID="CurrencyDS" TextField="CurrencyName" ValueField="CurrencyId">
  200.                         </dx:ASPxComboBox>
  201.                     </div>
  202.  
  203.                     <div class="clear">
  204.                         &nbsp;</div>
  205.                     <div>
  206.                         <asp:HiddenField ID="ConsigneeId" runat="server" Value='<%# DataBinder.Eval(Container.DataItem,"ConsigneeId") %>' />
  207.                         Номенклатуры
  208.                         <%# DataBinder.Eval(Container.DataItem, "ClientName").ToString().Length >0 ? "(" + DataBinder.Eval(Container.DataItem, "ClientName") + ")" : "" %>
  209.                         :
  210.                         <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" Width="100%"
  211.                             ClientInstanceName="ASPxGridView1" DataSourceID="RequestProductionDS" KeyFieldName="RequestProductionId">
  212.                             <Columns>
  213.                                 <dx:GridViewDataComboBoxColumn FieldName="ProductionId" VisibleIndex="2">
  214.                                     <PropertiesComboBox DataSourceID="ProductionDS" TextField="ProductionName" ValueField="ProductionId"
  215.                                         ValueType="System.Int32">
  216.                                     </PropertiesComboBox>
  217.                                 </dx:GridViewDataComboBoxColumn>
  218.                                 <dx:GridViewDataTextColumn FieldName="RequestProductionQty" VisibleIndex="3">
  219.                                     <DataItemTemplate>
  220.                                         <center>
  221.                                             <asp:TextBox
  222.                                                 ProductionId='<%# Eval("ProductionId") %>'
  223.                                                 ID="RequestProductionQtyEdit" runat="server" placeholder="Введите количество"
  224.                                                 Width="140px"
  225.                                                 CssClass="validate[funcCall[validateRequestProductionQty]] customKeyEvents" Text='<%# (int)Eval("RequestProductionQty")>0 ? Eval("RequestProductionQty") : "" %>' />
  226.                                         </center>
  227.                                     </DataItemTemplate>
  228.                                 </dx:GridViewDataTextColumn>
  229.                             </Columns>
  230.                             <SettingsPager Visible="False">
  231.                             </SettingsPager>
  232.                             <Settings ShowColumnHeaders="False" />
  233.                         </dx:ASPxGridView>
  234.                         <asp:ObjectDataSource ID="RequestProductionDS" runat="server" DataObjectTypeName="AquaEMS.Web.Data.RequestProduction"
  235.                             SelectMethod="GetRequestProduction" TypeName="AquaEMS.Web.Request.Add">
  236.                             <SelectParameters>
  237.                                 <asp:Parameter Name="consigneeId" Type="Int32" />
  238.                             </SelectParameters>
  239.                         </asp:ObjectDataSource>
  240.                     </div>
  241.                     <div class="clear">
  242.                         &nbsp;</div>
  243.                     <div>
  244.                         Комментарий:<dx:ASPxMemo ID="Comment" runat="server" Height="120px" Width="100%"
  245.                             placeholder="Введите комментарий">
  246.                         </dx:ASPxMemo>
  247.                     </div>
  248.                 </ItemTemplate>
  249.             </asp:Repeater>
  250.             <asp:LinqDataSource ID="ProductionDS" runat="server" ContextTypeName="AquaEMS.Web.Data.DatabaseDataContext"
  251.                 EntityTypeName="" TableName="Productions">
  252.             </asp:LinqDataSource>
  253.             <div class="clear">
  254.                 &nbsp;</div>
  255.             <div>
  256.                 <center>
  257.                     <dx:ASPxButton ID="SaveBtn" runat="server" Text="Сохранить" OnClick="SaveBtn_Click">
  258.                         <ClientSideEvents Click="function(s,e){RequestProductionQtyCalcluator.disable = true;}" />
  259.                     </dx:ASPxButton>
  260.                 </center>
  261.             </div>
  262.             <p>
  263.         </div>
  264.     </div>
  265.  
  266.     <script type="text/javascript">
  267.         function processInputKey(e, ctx, action) {
  268.             if ((e.keyCode == 13 && action == "keypress")
  269.                     || (e.keyCode == 40 && action == "keyup")
  270.                     || (e.keyCode == 38 && action == "keyup") ){
  271.  
  272.                 var inputs = ctx.parents("form").eq(0).find(".customKeyEvents");
  273.                 var idx = inputs.index(ctx.context);
  274.                 var selectElementOffset = e.keyCode == 38 ? -1 : +1;    //next or prev element must be selected
  275.  
  276.                 if ((idx == inputs.length - 1 && selectElementOffset>0) || (idx == 0 && selectElementOffset < 0)) {
  277.                     inputs[0].select()
  278.                 } else {
  279.                     inputs[idx + selectElementOffset].focus();
  280.                     inputs[idx + selectElementOffset].select();
  281.                 }
  282.                 return false;
  283.             }
  284.         }
  285.  
  286.         $('.customKeyEvents').live("keypress", function (e) {
  287.                 return processInputKey(e, $(this), "keypress");
  288.         });
  289.  
  290.         $('.customKeyEvents').live("keyup", function (e) {
  291.                 return processInputKey(e, $(this), "keyup");
  292.             });    
  293.         </script>
  294. </asp:Content>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement