/// <summary>
        /// Вставка записи в Zero
        /// </summary>
        public void InsertToZero(FormalizationPosition position)
        {
            var drZero = dtZero.NewRow();
            var core   = position.Offer;

            drZero["PriceItemId"] = priceItemId;
            drZero["Name"]        = position.PositionName;
            drZero["FirmCr"]      = position.FirmCr;
            drZero["Code"]        = core.Code;
            drZero["CodeCr"]      = core.CodeCr;
            drZero["Unit"]        = core.Unit;
            drZero["Volume"]      = core.Volume;
            drZero["Quantity"]    = core.Quantity;
            drZero["Note"]        = core.Note;
            drZero["Period"]      = core.Period;
            drZero["Doc"]         = core.Doc;

            dtZero.Rows.Add(drZero);
            _loggingStat.Zero++;
        }
Example #2
0
        public void ResolveProducer(FormalizationPosition position)
        {
            if (!position.IsSet(UnrecExpStatus.NameForm))
            {
                return;
            }
            //если уже формализован по штрих коду
            if (position.IsSet(UnrecExpStatus.FirmForm))
            {
                return;
            }

            if (String.IsNullOrEmpty(position.FirmCr))
            {
                position.AddStatus(UnrecExpStatus.FirmForm);
                return;
            }
            position.NotCreateUnrecExp = CheckForbiddenProducerName(position);
            var synonym = Resolve(position);

            if (synonym == null || synonym["CodeFirmCr"] is DBNull)
            {
                var producerId = GetAssortimentOne(position)?["ProducerId"];
                if (synonym == null || producerId != null)
                {
                    synonym = CreateProducerSynonym(position, producerId);
                }
            }

            position.UpdateProducerSynonym(synonym);
            if (position.SynonymFirmCrCode != null)
            {
                _stats.ProducerSynonymUsedExistCount++;
            }

            if (position.CodeFirmCr == null && !position.NotCreateUnrecExp)
            {
                CheckExclude(position);
            }
        }
Example #3
0
        private void CheckExclude(FormalizationPosition position)
        {
            if (position.IsAutomaticProducerSynonym)
            {
                return;
            }

            DataRow[] dr;

            using (_stats.ExludeSearch())
                dr = _excludes.Select(String.Format("CatalogId = {0} and ProducerSynonym = '{1}'",
                                                    position.CatalogId,
                                                    position.FirmCr.Replace("'", "''")));

            //если подходящего исключения нет, то значит позиция должна быть
            //обработана оператором или это не фармацевтика для которой нашелся
            //только синоним без производителя
            if (dr.Length == 0)
            {
                position.Status &= ~UnrecExpStatus.FirmForm;
            }
        }
        //Смогли ли мы распознать позицию по коду, имени и оригинальному названию?
        public void GetProductId(FormalizationPosition position)
        {
            DataRow dr = null;

            if (_priceInfo.FormByCode)
            {
                if (!String.IsNullOrWhiteSpace(position.Code))
                {
                    var code = position.Code?.Trim().Replace("'", "''");
                    dr = dtSynonym.Select($"Code = {code}").FirstOrDefault();
                }
            }
            else
            {
                dr = LookupProductSynonym(position)?.FirstOrDefault();
            }

            if (dr != null)
            {
                position.UpdateProductSynonym(dr);
            }
        }
 private DataRow[] LookupProductSynonym(FormalizationPosition position)
 {
     DataRow[] result = null;
     if (!String.IsNullOrWhiteSpace(position.PositionName))
     {
         //var canonical = SpaceReg.Replace(position.PositionName, "").ToLower().Replace("'", "''");
         //result = dtSynonym.Select($"Canonical = '{canonical}'");
         //if (result.Length == 0) {
         var name = position.PositionName.ToLower().Replace("'", "''");
         result = dtSynonym.Select($"Synonym = '{name}'");
         //}
     }
     if ((result == null || result.Length == 0) && !String.IsNullOrWhiteSpace(position.OriginalName))
     {
         //var originalName = SpaceReg.Replace(position.OriginalName, "").Replace("'", "''");
         //result = dtSynonym.Select($"Canonical = '{originalName}'");
         //if (result.Length == 0) {
         var name = position.OriginalName.ToLower().Replace("'", "''");
         result = dtSynonym.Select($"Synonym = '{name}'");
         //}
     }
     return(result);
 }