public static void PrepareDS(DSReport ds, Data.Model.Document document, DataSet groupByPrice)
        {
            Data.DSReport.DocumentRow rowd = ds.Document.NewDocumentRow();
            rowd.ID           = (int)document.ID;
            rowd.DocumentNo   = document.DocumentNo;
            rowd.DocumentType = ((DocumentType)document.DocumentType).AsString(EnumFormat.Description);
            //rowd.DocumentType = Enum.GetName(typeof(DocumentType), document.DocumentType);
            rowd.DocumentDateTime = document.DocumentDateTime;
            rowd.PaymentDate      = document.PaymentDate;
            rowd.PaymentEndDate   = document.PaymentEndDate;
            rowd.ClientID         = (int)document.ClientID;
            rowd.GroupByPrice     = "";
            foreach (DataRow d in groupByPrice.Tables[0].Rows)
            {
                rowd.GroupByPrice += "Cena: " + d["StartWith"] + "; Površina: " + d["Surface"] + Environment.NewLine;
            }

            rowd.TotalPrice = document.TotalPrice;
            ds.Document.AddDocumentRow(rowd);
            foreach (var item in document.DocumentItems)
            {
                Data.DSReport.DocumentItemRow row = ds.DocumentItem.NewDocumentItemRow();
                row.ItemPrice         = item.ItemPrice;
                row.DocumentID        = (int)document.ID;
                row.ArticleNo         = item.ArticleNo;
                row.ItemPrice         = item.ItemPrice;
                row.Name              = item.Article.Name;
                row.Note              = item.Note;
                row.OrderDate         = item.OrderDate;
                row.ItemID            = (int)item.Article.ID;
                row.Quantity          = item.Quantity;
                row.QuantityItemPrice = item.QuantityItemPrice;
                row.Height            = item.Height;
                row.Width             = item.Width;
                row.Surface           = item.Surface;
                //row.Name = "test";
                ds.DocumentItem.AddDocumentItemRow(row);
            }
            Data.DSReport.ClientRow rowc = ds.Client.NewClientRow();
            rowc.Address     = document.Client.Address;
            rowc.ID          = (int)document.ClientID;
            rowc.Name        = document.Client.Name;
            rowc.Phone       = document.Client.Phone;
            rowc.PhoneFax    = document.Client.PhoneFax;
            rowc.PIB         = document.Client.PIB;
            rowc.MB          = document.Client.MB;
            rowc.BankAccount = document.Client.BankAccount;
            rowc.Email       = document.Client.Email;
            ds.Client.AddClientRow(rowc);
            ds.AcceptChanges();
        }
        public static void GenerateDefaultDocuments(Guid pIdTransaction, Guid pFirmInstitution)
        {
            using (UpsilabEntities context = new UpsilabEntities())
            {
                var documentCategories = context.DocumentCategory.Where(docCateg => docCateg.idFirmInstitution == pFirmInstitution && docCateg.IsDocumentDefault);
                foreach (var docCategory in documentCategories)
                {
                    Data.Model.Document doc = new Data.Model.Document()
                    {
                        DateCreated = DateTime.Now,
                        IdDocumentCategory = docCategory.idDocumentCategory,
                        idDocument = Guid.NewGuid(),
                        idSignatureTransaction = pIdTransaction,
                        Status = DocumentBL.Status.Created.ToString(),
                        DocumentType = Upsilab.Business.Document.ElectronicSafeDocumentBL.DocumentType.DOC.ToString()
                    };


                    context.Document.AddObject(doc);

                }

                var trans = context.SignatureTransaction.Where(st => st.idSignatureTransaction == pIdTransaction).FirstOrDefault();
                trans.DocumentsInitialized = true;
                context.SaveChanges();
            }
        }
        public static void AddDocument(Guid idDoc, string location, string name)
        {
            using (var db = new UpsilabEntities())
            {
                var doc = db.Document.FirstOrDefault(x => x.idDocument == idDoc);
                var transaction = doc.SignatureTransaction;
                if (transaction != null)
                {
                    //var docupdate = transaction.Document.FirstOrDefault(x => string.IsNullOrEmpty(x.Name) && string.IsNullOrEmpty(x.Location));
                    //if (docupdate != null)
                    //{
                    //    docupdate.Location = location;
                    //    docupdate.Name = name;
                    //}
                    //else
                    var docupdate = new Data.Model.Document()
                    {
                        Name = name,
                        Location = location,
                        DateCreated = DateTime.Now,
                        IdDocumentCategory = doc.IdDocumentCategory,
                        idDocument = Guid.NewGuid(),
                        idSignatureTransaction = doc.idSignatureTransaction,
                        Status = DocumentBL.Status.Created.ToString(),
                        DocumentType = Upsilab.Business.Document.ElectronicSafeDocumentBL.DocumentType.DOC.ToString()
                    };

                    db.Document.AddObject(docupdate);
                    db.SaveChanges();
                }
            }
        }
        private void InitDocument()
        {
            _articalLogic   = new ArticalLogic();
            _documentLogic  = new DocumentLogic();
            _warehouseLogic = new WarehouseLogic();
            if (FormMode == FormMode.New)
            {
                _document = new Document();
                _documentLogic.AddDocument(_document);

                // datum
                _document.DocumentDateTime = DateTime.Now;
                _document.PaymentEndDate   = DateTime.Now;
                _document.PaymentDate      = DateTime.Now;
                _document.DocumentType     = DocumentTypeID;
                string documentNumber = "";
                string middle         = _documentLogic.GetLastNoForDoument(_document.DocumentDateTime.Year, DocumentTypeID) + "-" + DateTime.Now.Year;
                string end            = "";
                switch (DocumentTypeID)
                {
                case 0:
                    documentNumber = "P";
                    break;

                case 1:
                    documentNumber = "O";
                    break;

                case 2:
                    _client              = _documentForPayment.Client;
                    _document.ClientID   = _documentForPayment.ClientID;
                    _document.TotalPrice = _documentForPayment.TotalPrice;
                    documentNumber       = "DO";
                    end = " {" + _documentForPayment.DocumentNo + "}";
                    //  _client = _document.Client;
                    _document.LinkDocumentNo = _documentForPayment.DocumentNo;
                    _document.DocumentType   = 2;
                    break;

                default:
                    break;
                }
                documentNumber      += "-" + middle + end;
                _document.DocumentNo = documentNumber;// (DocumentTypeID == 0 ? "P" : "O") + "-" + _documentLogic.GetLastNoForDoument(_document.DocumentDateTime.Year, DocumentTypeID) + "-" + DateTime.Now.Year;
            }
            else if (FormMode == FormMode.Modifying || FormMode == FormMode.ReadOnly)
            {
                _document = _documentLogic.GetDocument(SelectedDocument.ID);
                _client   = _document.Client;
                if (FormMode == FormMode.ReadOnly)
                {
                    SetAllControlsReadOnly();
                }
            }

            if (_client != null)
            {
                BindClientProperties();
            }

            tbTotalWithVAT.DataBindings.Clear();
            tbTotalWithVAT.DataBindings.Add("Text", _document, "TotalPrice");
            tbDocumentNo.DataBindings.Clear();
            tbDocumentNo.DataBindings.Add("Text", _document, "DocumentNo");
            tbSpoljniBroj.DataBindings.Clear();
            tbSpoljniBroj.DataBindings.Add("Text", _document, "LinkDocumentNo");
            dtpCreationDate.DataBindings.Clear();
            dtpCreationDate.DataBindings.Add("Value", _document, "DocumentDateTime");
            dtpEndDateForPayment.DataBindings.Clear();
            dtpEndDateForPayment.DataBindings.Add("Value", _document, "PaymentEndDate");
            dtpPaymentDate.DataBindings.Clear();
            dtpPaymentDate.DataBindings.Add("Value", _document, "PaymentDate");

            // status
            cmbStatus.DisplayMember = "Description";
            cmbStatus.DataSource    = Enum.GetValues(typeof(Classes.Lib.StatusEnum))
                                      .Cast <Enum>()
                                      .Select(value => new
            {
                (Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description,
                v = (int)(Enum.Parse(typeof(Classes.Lib.StatusEnum), value.ToString()))
            })
                                      .OrderBy(item => item.v)
                                      .ToList();
            cmbStatus.SelectedIndex = _document.StatusID;
            // magacini
            cmbWarehouse.DataSource            = _warehouseLogic.GetAllWarehouse();
            cmbWarehouse.DisplayMember         = "Name";
            cmbWarehouse.ValueMember           = "WarehouseTypeID";
            cmbWarehouse.SelectedIndex         = 1;
            cmbWarehouse.SelectedIndexChanged += CmbWarehouse_ValuseChanged;

            // tip dokumenta
            cmbDocumentType.DisplayMember = "Description";
            cmbDocumentType.DataSource    = Enum.GetValues(typeof(Classes.Lib.DocumentType))
                                            .Cast <Enum>()
                                            .Select(value => new
            {
                (Attribute.GetCustomAttribute(value.GetType().GetField(value.ToString()), typeof(DescriptionAttribute)) as DescriptionAttribute).Description,
                v = (int)(Enum.Parse(typeof(Classes.Lib.DocumentType), value.ToString()))
            })
                                            .OrderBy(item => item.v)
                                            .ToList();
            cmbDocumentType.Enabled       = false;
            cmbDocumentType.SelectedIndex = _document.DocumentType;
            this.Text = cmbDocumentType.Text;

            listaArtikla = _articalLogic.GetAllArticlesByWarehouseType(cmbWarehouse.SelectedIndex);
            documentItemBindingSource.DataSource = _document.DocumentItems;


            articleBindingSource.DataSource           = listaArtikla;
            documentItemBindingSource.ListChanged    += DocumentItemBindingSource_ListChanged;
            documentItemBindingSource.CurrentChanged += DocumentItemBindingSource_CurrentChanged;

            DGVReceiptsDespatchsItems.DataError        += DGVReceiptsDespatchsItems_DataError;
            DGVReceiptsDespatchsItems.CellValueChanged += DGVReceiptsDespatchsItems_CellValueChanged;
            DGVReceiptsDespatchsItems.CellContentClick += DGVReceiptsDespatchsItems_CellContentClick;
            DGVReceiptsDespatchsItems.CellFormatting   += DGVReceiptsDespatchsItems_CellFormatting;

            if (_document.DocumentType == (int)DocumentType.Payment)
            {
                DGVReceiptsDespatchsItems.Enabled = false;
                tbTotalWithVAT.Text = _document.TotalPrice.ToString("N2");
            }
            else
            {
                inload = true;
                InitUnboundColumns();
                inload = false;
            }
            DGVReceiptsDespatchsItems.Update();
            DGVReceiptsDespatchsItems.Refresh();
        }