Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <%@ Page Title="" Language="C#" MasterPageFile="~/Layouts/Request.master" AutoEventWireup="true"
- CodeBehind="Add.aspx.cs" Inherits="AquaEMS.Web.Request.Add" %>
- <%@ Register Assembly="DevExpress.Web.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
- Namespace="DevExpress.Web.ASPxCallbackPanel" TagPrefix="dx" %>
- <%@ Register Assembly="DevExpress.Web.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
- Namespace="DevExpress.Web.ASPxCallback" TagPrefix="dx" %>
- <%@ Register Assembly="DevExpress.Web.ASPxEditors.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
- Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
- <%@ Register Assembly="DevExpress.Data.v9.3.Linq, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
- Namespace="DevExpress.Data.Linq" TagPrefix="dx" %>
- <%@ Register Assembly="DevExpress.Web.ASPxGridView.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
- Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
- <%@ Register Src="../Controls/ErrorMessage.ascx" TagName="ErrorMessage" TagPrefix="uc1" %>
- <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
- </asp:Content>
- <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
- <script type="text/javascript">
- RequestProductionQtyCalcluator = {
- disable : false,
- _packingRules: eval('<%= JsonPackingRules %>'),
- _productions: eval('<%= JsonProductions %>'),
- palletMin: 0,
- palletMax: 65535,
- rowMin: 0,
- rowMax: 65535,
- packMin: 0,
- packMax: 65535,
- RequestProductionQty: 0,
- checkedValues: new Array(),
- Calculate: function (productionId, productionQty) {
- this.palletMin = this.rowMin = this.packMin = 0
- this.palletMax = this.rowMax = this.packMax = 65535;
- this.RequestProductionQty = productionQty;
- this.checkedValues = new Array();
- infoMessage = '';
- query = new jsinq.Query('\
- from p in $0 \
- where p.ProductionId == $1 \
- select p \
- ');
- productionsEnumerable = new jsinq.Enumerable(this._productions);
- query.setValue(0, productionsEnumerable);
- query.setValue(1, productionId);
- var production = query.execute().first();
- this._calculateBoundary(production.BottlesCountInPack, 'packMin', 'packMax');
- prodRulesEnumerable = new jsinq.Enumerable(this._packingRules);
- query = new jsinq.Query('\
- from r in $0 \
- where r.ProductionId == $1 && r.BottlesCount>0 && r.RowsCount>0 \
- select r \
- ');
- query.setValue(0, prodRulesEnumerable);
- query.setValue(1, productionId);
- var packingRules = query.execute().toArray();
- for (var pr in packingRules) {
- this._calculateBoundary(packingRules[pr].BottlesCount, 'palletMin', 'palletMax');
- this._calculateBoundary(packingRules[pr].BottlesCount / packingRules[pr].RowsCount, 'rowMin', 'rowMax');
- }
- cv = this._checkValues('Наилучший', this.palletMin, this.palletMax);
- if (cv == true) {
- return infoMessage;
- }
- infoMessage += cv;
- cv = this._checkValues('Хороший', this.rowMin, this.rowMax);
- if (cv == true) {
- return infoMessage;
- }
- infoMessage += cv;
- cv = this._checkValues('Удовлетворительный', this.rowMin, this.rowMax);
- if (cv == true) {
- return infoMessage;
- }
- infoMessage += cv;
- if (infoMessage.length > 0) infoMessage += '<br/>';
- return infoMessage;
- },
- _checkValues: function (packingComplexityInfo, minValue, maxValue) {
- if (maxValue == 65535 || minValue == maxValue) {
- return true;
- }
- if ($.inArray(minValue, this.checkedValues) != -1 && ($.inArray(maxValue, this.checkedValues) != -1)) {
- return ''; // ???
- }
- else if ($.inArray(minValue, this.checkedValues) != -1 && !($.inArray(maxValue, this.checkedValues) != -1)) {
- //this.checkedValues.shift();
- this.checkedValues.push(maxValue);
- return '<br/><b>' + packingComplexityInfo + ' вариант:</b> ' + maxValue;
- }
- else if (!($.inArray(minValue, this.checkedValues) != -1) && ($.inArray(maxValue, this.checkedValues) != -1)) {
- //this.checkedValues.shift();
- this.checkedValues.push(maxValue);
- return '<br/><b>' + packingComplexityInfo + ' вариант:</b> ' + minValue;
- }
- else {
- //this.checkedValues.shift();
- //this.checkedValues.shift();
- this.checkedValues.push(maxValue);
- this.checkedValues.push(minValue);
- return '<br/><b>' + packingComplexityInfo + ' вариант:</b> ' + minValue + ' или ' + maxValue;
- }
- },
- _calculateBoundary: function (value, minRef, maxRef) {
- if (this[minRef] == this[maxRef]) return;
- rem = this.RequestProductionQty % value;
- if (value == 0 || rem == 0) {
- this[minRef] = this[maxRef] = this.RequestProductionQty;
- }
- else {
- this[minRef] = Math.max(this[minRef], this.RequestProductionQty - rem);
- this[maxRef] = Math.min(this[maxRef], this.RequestProductionQty + value - rem);
- }
- }
- };
- function validateRequestProductionQty(caller) {
- var value = $(caller).attr('value');
- if (value.length > 0) {
- var regexp = /^\d+$/;
- if (!regexp.test(value)) {
- return "Недопустимое значение";
- }
- if (RequestProductionQtyCalcluator.disable) return null;
- value = parseInt(value);
- var productionId = parseInt($(caller).attr('ProductionId'));
- var result = RequestProductionQtyCalcluator.Calculate(productionId, value);
- if (result.length > 0)
- return result;
- }
- return null; //all ok
- }
- </script>
- <script type="text/javascript">
- RequestPriceCalculator = {
- Calculate: function (productionId, productionQty) {
- return 0;
- }
- };
- function calculateRequestPrice(caller) {
- //todo: add code here
- return null; ///all ok
- }
- </script>
- <script type="text/javascript">
- /*<![CDATA[*/
- $(function () {
- $(".leftmenu").removeClass("sel");
- $("#leftlink_add").addClass("sel");
- });
- /*]]>*/
- </script>
- <div class="forms-title">
- <h1><a href="/Request/Index.aspx">Заявки</a> → Создание новой заявки</h1>
- </div>
- <div class="forms">
- <div class="forms-body" style="width: 480px;">
- <div><uc1:ErrorMessage ID="errorMessage" runat="server" Visible="false" /></div>
- <div>
- <span style="float: left; width: 145px;">Условия поставки:</span>
- <dx:ASPxComboBox ID="TermsOfDelivery" Width="265px" runat="server" ValueType="System.Int32"
- TextField="Value" ValueField="Key">
- </dx:ASPxComboBox>
- </div>
- <asp:LinqDataSource ID="CurrencyDS" runat="server" ContextTypeName="AquaEMS.Web.Data.DatabaseDataContext"
- EntityTypeName="" TableName="Currencies">
- </asp:LinqDataSource>
- <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
- <ItemTemplate>
- <div class="clear"> </div>
- <div>
- <div>
- <span style="float: left; width: 145px;">Валюта заявки:</span>
- <dx:ASPxComboBox ID="Currency" Width="265px" runat="server" ValueType="System.Int32" SelectedIndex="0"
- DataSourceID="CurrencyDS" TextField="CurrencyName" ValueField="CurrencyId">
- </dx:ASPxComboBox>
- </div>
- <div class="clear">
- </div>
- <div>
- <asp:HiddenField ID="ConsigneeId" runat="server" Value='<%# DataBinder.Eval(Container.DataItem,"ConsigneeId") %>' />
- Номенклатуры
- <%# DataBinder.Eval(Container.DataItem, "ClientName").ToString().Length >0 ? "(" + DataBinder.Eval(Container.DataItem, "ClientName") + ")" : "" %>
- :
- <dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" Width="100%"
- ClientInstanceName="ASPxGridView1" DataSourceID="RequestProductionDS" KeyFieldName="RequestProductionId">
- <Columns>
- <dx:GridViewDataComboBoxColumn FieldName="ProductionId" VisibleIndex="2">
- <PropertiesComboBox DataSourceID="ProductionDS" TextField="ProductionName" ValueField="ProductionId"
- ValueType="System.Int32">
- </PropertiesComboBox>
- </dx:GridViewDataComboBoxColumn>
- <dx:GridViewDataTextColumn FieldName="RequestProductionQty" VisibleIndex="3">
- <DataItemTemplate>
- <center>
- <asp:TextBox
- ProductionId='<%# Eval("ProductionId") %>'
- ID="RequestProductionQtyEdit" runat="server" placeholder="Введите количество"
- Width="140px"
- CssClass="validate[funcCall[validateRequestProductionQty]] customKeyEvents" Text='<%# (int)Eval("RequestProductionQty")>0 ? Eval("RequestProductionQty") : "" %>' />
- </center>
- </DataItemTemplate>
- </dx:GridViewDataTextColumn>
- </Columns>
- <SettingsPager Visible="False">
- </SettingsPager>
- <Settings ShowColumnHeaders="False" />
- </dx:ASPxGridView>
- <asp:ObjectDataSource ID="RequestProductionDS" runat="server" DataObjectTypeName="AquaEMS.Web.Data.RequestProduction"
- SelectMethod="GetRequestProduction" TypeName="AquaEMS.Web.Request.Add">
- <SelectParameters>
- <asp:Parameter Name="consigneeId" Type="Int32" />
- </SelectParameters>
- </asp:ObjectDataSource>
- </div>
- <div class="clear">
- </div>
- <div>
- Комментарий:<dx:ASPxMemo ID="Comment" runat="server" Height="120px" Width="100%"
- placeholder="Введите комментарий">
- </dx:ASPxMemo>
- </div>
- </ItemTemplate>
- </asp:Repeater>
- <asp:LinqDataSource ID="ProductionDS" runat="server" ContextTypeName="AquaEMS.Web.Data.DatabaseDataContext"
- EntityTypeName="" TableName="Productions">
- </asp:LinqDataSource>
- <div class="clear">
- </div>
- <div>
- <center>
- <dx:ASPxButton ID="SaveBtn" runat="server" Text="Сохранить" OnClick="SaveBtn_Click">
- <ClientSideEvents Click="function(s,e){RequestProductionQtyCalcluator.disable = true;}" />
- </dx:ASPxButton>
- </center>
- </div>
- <p>
- </div>
- </div>
- <script type="text/javascript">
- function processInputKey(e, ctx, action) {
- if ((e.keyCode == 13 && action == "keypress")
- || (e.keyCode == 40 && action == "keyup")
- || (e.keyCode == 38 && action == "keyup") ){
- var inputs = ctx.parents("form").eq(0).find(".customKeyEvents");
- var idx = inputs.index(ctx.context);
- var selectElementOffset = e.keyCode == 38 ? -1 : +1; //next or prev element must be selected
- if ((idx == inputs.length - 1 && selectElementOffset>0) || (idx == 0 && selectElementOffset < 0)) {
- inputs[0].select()
- } else {
- inputs[idx + selectElementOffset].focus();
- inputs[idx + selectElementOffset].select();
- }
- return false;
- }
- }
- $('.customKeyEvents').live("keypress", function (e) {
- return processInputKey(e, $(this), "keypress");
- });
- $('.customKeyEvents').live("keyup", function (e) {
- return processInputKey(e, $(this), "keyup");
- });
- </script>
- </asp:Content>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement