Ejemplo n.º 1
0
        /// <summary>
        /// Получение перечня ремонтных работ.
        /// </summary>
        public ArrayList GetRepairWorks()
        {
            ArrayList RepairWorksList = new ArrayList();

            // Если прибор гарантийный и гарантия не аннулирована, не включаем ремонтные работы в калькуляцию
            if ((this.WarrantyRepair) && (!this.VoidWarranty))
            {
                return(RepairWorksList);
            }

            // Если клиент отказался от ремонта, то не включаем ремонтные работы в калькуляцию
            //if (this.RefusalToRepair)
            //{ return RepairWorksList; }

            CardData    SCard       = Card.CardScript.Session.CardManager.GetCardData(new Guid(this.ServiceCardID));
            SectionData RepairWorks = SCard.Sections[RefServiceCard.RepairWorks.ID.ToGuid()];

            if ((RepairWorks != null) && (RepairWorks.Rows.Count > 0))
            {
                RowDataCollection RowDescriptions = SCard.Sections[RefServiceCard.DescriptionOfFault.ID.ToGuid()].Rows;
                foreach (RowData Row in RepairWorks.Rows)
                {
                    if (Row.GetString(RefServiceCard.RepairWorks.NegotiationResult) != "Не выполнять")
                    {
                        RowData Description = null;
                        foreach (RowData RowDescription in RowDescriptions)
                        {
                            if (RowDescription.GetGuid(RefServiceCard.DescriptionOfFault.Id) == Row.GetGuid(RefServiceCard.RepairWorks.ParentTableRowId))
                            {
                                Description = RowDescription;
                            }
                        }

                        string BlockName           = Description.GetString(RefServiceCard.DescriptionOfFault.BlockOfDevice);
                        string BlockNameID         = Description.GetString(RefServiceCard.DescriptionOfFault.BlockOfDeviceID);
                        string WorksType           = Row.GetString(RefServiceCard.RepairWorks.WorksType);
                        string WorksTypeID         = Row.GetString(RefServiceCard.RepairWorks.WorksTypeID);
                        int    Amount              = this.DoubleCost == true ? (int)Row.GetDecimal(RefServiceCard.RepairWorks.Amount) * 2 : (int)Row.GetDecimal(RefServiceCard.RepairWorks.Amount);
                        bool   Improvement         = (bool)Row.GetBoolean(RefServiceCard.RepairWorks.Revision);
                        bool   VoidWarranty        = this.VoidWarranty;
                        bool   DoubleCost          = this.DoubleCost;
                        string DescriptionOfReason = this.DescriptionOfReason;
                        bool   RefusalToRepair     = this.RefusalToRepair;


                        CalculationItem NewItem = new CalculationItem(Card, DeviceName, DeviceItemID, BlockName, BlockNameID, WorksType, WorksTypeID, Improvement, Amount, true, VoidWarranty, DoubleCost,
                                                                      DescriptionOfReason, RefusalToRepair);
                        RepairWorksList.Add(NewItem);
                    }
                }
            }
            return(RepairWorksList);
        }
Ejemplo n.º 2
0
        public PgSQLDataRowStream(
            PgSQLDataColumnMetaDataImpl metadata,
            Int32 thisStreamIndex,
            PgSQLDataRowStream[] allDataRowStreams,
            PostgreSQLProtocol protocol,
            ReservedForStatement reservedForStatement,
            RowDescription rowDescription
            ) : base(metadata, thisStreamIndex, protocol.Buffer, allDataRowStreams, protocol, reservedForStatement)
        {
            var fieldInfo = rowDescription.Fields[thisStreamIndex];

            this._dataFormat = fieldInfo.DataFormat;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// The first row in a stored procedure command that has output parameters needs to be traversed twice -
        /// once for populating the output parameters and once for the actual result set traversal. So in this
        /// case we can't be sequential.
        /// </summary>
        void PopulateOutputParameters()
        {
            Debug.Assert(Command.Parameters.Any(p => p.IsOutputDirection));
            Debug.Assert(StatementIndex == 0);
            Debug.Assert(RowDescription != null);
            Debug.Assert(State == ReaderState.BeforeResult);

            // Temporarily set our state to InResult to allow us to read the values
            State = ReaderState.InResult;

            var pending = new Queue <NpgsqlParameter>();
            var taken   = new List <int>();

            foreach (var p in Command.Parameters.Where(p => p.IsOutputDirection))
            {
                if (RowDescription.TryGetFieldIndex(p.ParameterName, out var idx))
                {
                    // TODO: Provider-specific check?
                    p.Value = GetValue(idx);
                    taken.Add(idx);
                }
                else
                {
                    pending.Enqueue(p);
                }
            }
            for (var i = 0; pending.Count != 0 && i != _numColumns; ++i)
            {
                // TODO: Need to get the provider-specific value based on the out param's type
                if (!taken.Contains(i))
                {
                    pending.Dequeue().Value = GetValue(i);
                }
            }

            State = ReaderState.BeforeResult;  // Set the state back
        }
Ejemplo n.º 4
0
        public static async Task <(BackendMessageObject msg, Int32 msgSize)> ReadBackendMessageAsync(
            MessageIOArgs ioArgs,
            ResizableArray <ResettableTransformable <Int32?, Int32> > columnSizes
            )
        {
            var args   = ioArgs.Item1;
            var stream = ioArgs.Item2;
            var token  = ioArgs.Item3;
            var buffer = ioArgs.Item4;
            var code   = (BackendMessageCode)(await args.ReadByte(stream, buffer, token));
            var length = await args.ReadInt32(stream, buffer, token);

            var remaining = length - sizeof(Int32);

            if (code != BackendMessageCode.DataRow && code != BackendMessageCode.CopyData)
            {
                // Just read the whole message at once for everything else except DataRow and CopyData messages
                buffer.CurrentMaxCapacity = remaining;
                await stream.ReadSpecificAmountAsync(buffer.Array, 0, remaining, token);

                remaining = 0;
            }
            var array    = buffer.Array;
            var encoding = args.Encoding.Encoding;

            BackendMessageObject result;

            switch (code)
            {
            case BackendMessageCode.AuthenticationRequest:
                result = new AuthenticationResponse(array, length);
                break;

            case BackendMessageCode.ErrorResponse:
                result = new PgSQLErrorObject(array, encoding, true);
                break;

            case BackendMessageCode.NoticeResponse:
                result = new PgSQLErrorObject(array, encoding, false);
                break;

            case BackendMessageCode.RowDescription:
                result = new RowDescription(array, encoding);
                break;

            case BackendMessageCode.DataRow:
                (result, remaining) = await DataRowObject.ReadDataRow(args, stream, token, array, columnSizes, remaining);

                break;

            case BackendMessageCode.ParameterDescription:
                result = new ParameterDescription(array);
                break;

            case BackendMessageCode.ParameterStatus:
                result = new ParameterStatus(array, encoding);
                break;

            case BackendMessageCode.ReadyForQuery:
                result = new ReadyForQuery(array);
                break;

            case BackendMessageCode.BackendKeyData:
                result = new BackendKeyData(array);
                break;

            case BackendMessageCode.CommandComplete:
                result = new CommandComplete(array, encoding);
                break;

            case BackendMessageCode.NotificationResponse:
                result = new NotificationMessage(array, encoding);
                break;

            case BackendMessageCode.CopyInResponse:
                result = new CopyInOrOutMessage(array, true);
                break;

            case BackendMessageCode.CopyOutResponse:
                result = new CopyInOrOutMessage(array, false);
                break;

            case BackendMessageCode.CopyData:
                result = new CopyDataMessage(length);
                break;

            case BackendMessageCode.ParseComplete:
                result = MessageWithNoContents.PARSE_COMPLETE;
                break;

            case BackendMessageCode.BindComplete:
                result = MessageWithNoContents.BIND_COMPLETE;
                break;

            case BackendMessageCode.EmptyQueryResponse:
                result = MessageWithNoContents.EMPTY_QUERY;
                break;

            case BackendMessageCode.NoData:
                result = MessageWithNoContents.NO_DATA;
                break;

            case BackendMessageCode.CopyDone:
                result = MessageWithNoContents.COPY_DONE;
                break;

            case BackendMessageCode.CloseComplete:
                result = MessageWithNoContents.CLOSE_COMPLETE;
                break;

            default:
                throw new NotSupportedException("Not supported backend response: " + code);
            }

            return(result, remaining);
        }