예제 #1
0
        private void CreateObject(RacunGlavaEntity racunGlava, ConfigEntity config)
        {
            this.RacunGlava = racunGlava;
            this.Config     = config;

            this.RacunStavkaCollection = this.RacunGlava.RacunStavkaCollection;

            switch ((StatusEnum)this.RacunGlava.StatusId)
            {
            case StatusEnum.Unpaid:
                this.Valuta = "Valuta: " + Convert.ToDateTime(this.RacunGlava.Datum).AddDays(this.RacunGlava.Valuta).ToShortDateString();
                break;

            default:
                this.Valuta = this.RacunGlava.Status.Name;
                break;
            }

            if (this.RacunStavkaCollection.Count() > 0)
            {
                this.PdvPosto = this.RacunStavkaCollection.First().PdvPosto;
            }

            foreach (RacunStavkaEntity racunStavka in this.RacunStavkaCollection)
            {
                this.Netto       += racunStavka.Netto;
                this.TarifaIznos += racunStavka.TarifaIznos;
                this.PdvIznos    += racunStavka.PdvIznos;
                this.Ukupno      += racunStavka.Iznos;
            }
        }
예제 #2
0
        public RacunReport(DataAccessAdapterBase adapter, long racunGlavaId)
        {
            RacunGlavaEntity racunGlava = RacunGlavaEntity.FetchRacunGlavaForReport(adapter, racunGlavaId);

            RelationPredicateBucket configBucket = new RelationPredicateBucket(ConfigFields.FirmaId == racunGlava.FirmaId);
            ConfigEntity            config       = ConfigEntity.FetchConfigCollection(adapter, configBucket, null).Single();

            CreateObject(racunGlava, config);
        }
예제 #3
0
        public static IEnumerable <RacunReport> GetRacunReportCollection(DataAccessAdapterBase adapter, RelationPredicateBucket bucket, long firmaId)
        {
            IEnumerable <RacunGlavaEntity> racunGlavaCollection = RacunGlavaEntity.FetchRacunGlavaCollectionForReport(adapter, bucket);

            RelationPredicateBucket configBucket = new RelationPredicateBucket(ConfigFields.FirmaId == firmaId);
            ConfigEntity            config       = ConfigEntity.FetchConfigCollection(adapter, configBucket, null).Single();

            foreach (RacunGlavaEntity racunGlava in racunGlavaCollection)
            {
                yield return(new RacunReport(racunGlava, config));
            }
        }
예제 #4
0
        protected override void SetDataSource(DataAccessAdapterBase adapter,
                                              RelationPredicateBucket bucket,
                                              int pageNumber,
                                              int pageSize,
                                              string sortField,
                                              bool isSortAscending)
        {
            PrefetchPath2 prefetchPath = new PrefetchPath2(EntityType.RacunGlavaEntity);

            prefetchPath.Add(RacunGlavaEntity.PrefetchPathPartner);
            prefetchPath.Add(RacunGlavaEntity.PrefetchPathStatus);
            prefetchPath.Add(RacunGlavaEntity.PrefetchPathRacunStavkaCollection);

            this.DataSource  = RacunGlavaEntity.FetchRacunGlavaCollectionForPaging(adapter, bucket, prefetchPath, pageNumber, pageSize, sortField, isSortAscending);
            this.NoOfRecords = RacunGlavaEntity.GetNumberOfEntities(adapter, bucket);
        }
예제 #5
0
        public ActionResult GetRacun(long racunGlavaId)
        {
            using (DataAccessAdapterBase adapter = Helper.GetDataAccessAdapter())
            {
                PrefetchPath2 prefetchPath = new PrefetchPath2(EntityType.RacunGlavaEntity);
                prefetchPath.Add(RacunGlavaEntity.PrefetchPathRacunStavkaCollection).
                SubPath.Add(RacunStavkaEntity.PrefetchPathArtikl);

                RacunGlavaEntity racunGlava = RacunGlavaEntity.FetchRacunGlava(adapter, prefetchPath, racunGlavaId);

                var toReturn = new
                {
                    RacunGlava            = racunGlava,
                    RacunStavkaCollection = racunGlava.RacunStavkaCollection.OrderBy(rs => rs.Pozicija)
                };

                return(CreateJsonResponse(toReturn));
            }
        }
예제 #6
0
 public RacunReport(RacunGlavaEntity racunGlava, ConfigEntity config)
 {
     CreateObject(racunGlava, config);
 }
예제 #7
0
        public ActionResult SaveRacun(string racunGlavaJson, string racunStavkaCollectionJson)
        {
            DataAccessAdapterBase adapter = Helper.GetDataAccessAdapter(User.Identity.Name);
            RacunGlavaEntity      racunGlava4Save;
            bool isSaved = false;

            using (adapter)
            {
                adapter.StartTransaction(System.Data.IsolationLevel.Serializable, "SaveRacun");

                JsonSerializerSettings jsonSettings   = new JsonSerializerSettings();
                CultureInfo            currentCulture = System.Threading.Thread.CurrentThread.CurrentCulture;
                jsonSettings.Culture = currentCulture;

                RacunGlavaEntity racunGlava = JsonConvert.DeserializeObject <RacunGlavaEntity>(racunGlavaJson, jsonSettings);

                if (racunGlava.RacunGlavaId == 0)
                {
                    long firmaId = UserEntity.GetFirmaId(adapter, User.Identity.Name);

                    racunGlava4Save            = racunGlava;
                    racunGlava4Save.Godina     = ConfigEntity.GetInstance(adapter, firmaId).AktivnaGodina;
                    racunGlava4Save.BrojRacuna = BrojacEntity.GetNextNumber(adapter, firmaId, BrojacEnum.Racun, racunGlava4Save.Godina);
                    racunGlava4Save.FirmaId    = firmaId;
                }
                else
                {
                    PrefetchPath2 prefetchPath = new PrefetchPath2(EntityType.RacunGlavaEntity);
                    prefetchPath.Add(RacunGlavaEntity.PrefetchPathRacunStavkaCollection);

                    racunGlava4Save = RacunGlavaEntity.FetchRacunGlava(adapter, prefetchPath, racunGlava.RacunGlavaId);
                    racunGlava4Save.UpdateDataFromOtherObject(racunGlava, null, null);
                }

                racunGlava4Save.TarifaStopa = TarifaEntity.FetchTarifa(adapter, null, racunGlava4Save.TarifaId).Stopa;

                if (racunGlava4Save.Godina != racunGlava4Save.Datum.Year)
                {
                    // TODO: create mechanism for pushing errors to client. Currently check is on client. Remove client check after push error mechanism is implemented.
                }
                else
                {
                    isSaved = adapter.SaveEntity(racunGlava4Save, true, false);
                }

                if (isSaved)
                {
                    IEnumerable <RacunStavkaEntity> racunStavkaCollectionToDelete =
                        racunGlava4Save.RacunStavkaCollection.GetEntitiesNotIncludedInJson(racunStavkaCollectionJson, jsonSettings);

                    foreach (RacunStavkaEntity racunStavka in racunStavkaCollectionToDelete)
                    {
                        if (isSaved)
                        {
                            racunGlava4Save.RacunStavkaCollection.Remove(racunStavka);
                            isSaved = adapter.DeleteEntity(racunStavka);
                        }
                    }

                    racunGlava4Save.RacunStavkaCollection.UpdateEntityCollectionFromJson(racunStavkaCollectionJson, RacunStavkaFields.RacunStavkaId, null, null, jsonSettings);
                    foreach (RacunStavkaEntity racunStavka in racunGlava4Save.RacunStavkaCollection)
                    {
                        if (isSaved)
                        {
                            racunStavka.RecalculateData(racunGlava.TarifaStopa);
                            isSaved = adapter.SaveEntity(racunStavka, false, false);
                        }
                    }
                }

                adapter.Commit();
            }

            dynamic response = new
            {
                IsSaved      = isSaved,
                RacunGlavaId = racunGlava4Save.RacunGlavaId
            };

            return(CreateJsonResponse(response));
        }