public SingleResponeMessage <DeliveryReceiptInfo> Get(int id, string _userID)
        {
            SingleResponeMessage <DeliveryReceiptInfo> ret = new SingleResponeMessage <DeliveryReceiptInfo>();

            try
            {
                DeliveryReceiptInfo item = DeliveryReceiptServices.GetInstance().GetDetail(id, _userID);
                if (item == null)
                {
                    ret.isSuccess     = false;
                    ret.err.msgCode   = "001";
                    ret.err.msgString = "không tìm thấy biên bản giao nhận";
                    return(ret);
                }
                ret.item      = item;
                ret.isSuccess = true;
            }
            catch (Exception ex)
            {
                ret.isSuccess     = false;
                ret.err.msgCode   = "Internal Error !!!";
                ret.err.msgString = ex.ToString();
            }
            return(ret);
        }
示例#2
0
        public int Update(SqlConnection connection, DeliveryReceiptInfo obj, string userID)
        {
            int lastestInserted = 0;

            using (var command = new SqlCommand("Update tbl_DeliveryReceipt " +
                                                " SET DeliveryReceiptCode = @DeliveryReceiptCode , DeliveryReceiptDate = @DeliveryReceiptDate, DeliveryReceiptType = @DeliveryReceiptType, DeliveryReceiptNumber = @DeliveryReceiptNumber , " +
                                                " DeliveryReceiptPlace = @DeliveryReceiptPlace, UserU = @UserU , ContractID=@ContractID " +
                                                " where DeliveryReceiptID = @DeliveryReceiptID ", connection))
            {
                AddSqlParameter(command, "@DeliveryReceiptDate", obj.DeliveryReceiptDate, System.Data.SqlDbType.DateTime);
                AddSqlParameter(command, "@DeliveryReceiptType", obj.DeliveryReceiptType, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@DeliveryReceiptCode", obj.DeliveryReceiptCode, System.Data.SqlDbType.NVarChar);
                AddSqlParameter(command, "@DeliveryReceiptNumber", obj.DeliveryReceiptNumber, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@DeliveryReceiptPlace", obj.DeliveryReceiptPlace, System.Data.SqlDbType.NVarChar);
                AddSqlParameter(command, "@ContractID", obj.ContractID, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@UserU", userID, System.Data.SqlDbType.VarChar);
                AddSqlParameter(command, "@DeliveryReceiptID", obj.DeliveryReceiptID, System.Data.SqlDbType.Int);
                WriteLogExecutingCommand(command);

                var lastInsertedRaw = command.ExecuteScalar();
                if (lastInsertedRaw != null && !DBNull.Value.Equals(lastInsertedRaw))
                {
                    lastestInserted = Convert.ToInt32(lastInsertedRaw);
                }
            }
            return(lastestInserted);
        }
示例#3
0
        public DeliveryReceiptInfo GetDetail(SqlConnection connection, int id, string _userID)
        {
            DeliveryReceiptInfo info = new DeliveryReceiptInfo();

            using (var command = new SqlCommand("Select DR.*, Q.IsVAT, Q.QuoteCode, Q.VATNumber, " +
                                                " D1.DepartmentCode as CurDepartmentCode , D.DepartmentCode,   c.ContractCode ," +
                                                " P.ProposalCode, D1.DepartmentName as CurDepartmentName, D.DepartmentName ," +
                                                " P.DateIn as ProposalTime  " +
                                                " from tbl_DeliveryReceipt DR  " +
                                                " LEFT JOIN tbl_Quote_Proposal tblQP on tblQP.ProposalID  = DR.ProposalID " +
                                                " LEFT JOIN tbl_Quote Q  on Q.QuoteID  = tblQP.QuoteID " +
                                                " LEFT JOIN tbl_Proposal P on P.ProposalID  = DR.ProposalID " +
                                                " LEFT JOIN tbl_Department D on D.DepartmentID  = P.DepartmentID  " +
                                                " LEFT JOIN tbl_Contract C on C.ContractID = DR.ProposalID  " +
                                                " LEFT JOIN tbl_Department D1 on P.CurDepartmentID  = D1.DepartmentID " +
                                                " where  DR.DeliveryReceiptID = @DeliveryReceiptID order by DR.UpdateTime ", connection))
            {
                if (!string.IsNullOrEmpty(_userID) && _userID != "admin")
                {
                    command.CommandText += " and (DR.UserAssign = @UserID )";
                    AddSqlParameter(command, "@UserID", _userID, SqlDbType.VarChar);
                }
                AddSqlParameter(command, "@DeliveryReceiptID", id, System.Data.SqlDbType.Int);
                WriteLogExecutingCommand(command);
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        info.DeliveryReceiptID     = GetDbReaderValue <int>(reader["DeliveryReceiptID"]);
                        info.DeliveryReceiptType   = GetDbReaderValue <int>(reader["DeliveryReceiptType"]);
                        info.DeliveryReceiptCode   = GetDbReaderValue <string>(reader["DeliveryReceiptCode"]);
                        info.ContractCode          = GetDbReaderValue <string>(reader["ContractCode"]);
                        info.ContractID            = GetDbReaderValue <int>(reader["ContractID"]);
                        info.DepartmentCode        = GetDbReaderValue <string>(reader["DepartmentCode"]);
                        info.CurDepartmentCode     = GetDbReaderValue <string>(reader["CurDepartmentCode"]);
                        info.QuoteCode             = GetDbReaderValue <string>(reader["QuoteCode"]);
                        info.DeliveryReceiptDate   = GetDbReaderValue <DateTime>(reader["DeliveryReceiptDate"]);
                        info.DeliveryReceiptNumber = GetDbReaderValue <int>(reader["DeliveryReceiptNumber"]);
                        info.ProposalID            = GetDbReaderValue <int>(reader["ProposalID"]);
                        info.ProposalCode          = GetDbReaderValue <string>(reader["ProposalCode"]);
                        info.IsVAT                = GetDbReaderValue <bool>(reader["IsVAT"]);
                        info.VATNumber            = GetDbReaderValue <double>(reader["VATNumber"]);
                        info.DepartmentName       = GetDbReaderValue <string>(reader["DepartmentName"]);
                        info.CurDepartmentName    = GetDbReaderValue <string>(reader["CurDepartmentName"]);
                        info.DeliveryReceiptPlace = GetDbReaderValue <string>(reader["DeliveryReceiptPlace"]);


                        info.UserU      = GetDbReaderValue <string>(reader["UserU"]);
                        info.UpdateTime = GetDbReaderValue <DateTime>(reader["UpdateTime"]);
                        info.CreateTime = GetDbReaderValue <DateTime>(reader["CreateTime"]);

                        info.ProposalTime = GetDbReaderValue <DateTime>(reader["ProposalTime"]);
                    }
                }
            }
            return(info);
        }
示例#4
0
        public int Create(SqlConnection connection, DeliveryReceiptInfo obj, string userID)
        {
            var currenttime     = DateTime.Now.Date;
            int lastestInserted = 0;

            if (obj.DeliveryReceiptCode == null || obj.DeliveryReceiptCode == "")
            {
                obj.DeliveryReceiptCode = "GN-" + obj.ProposalCode;
            }
            DateTime localDate = DateTime.Now;

            using (var command = new SqlCommand("Insert into tbl_DeliveryReceipt " +
                                                " (DeliveryReceiptType, DeliveryReceiptCode,DeliveryReceiptDate, DeliveryReceiptNumber, " +
                                                "ProposalID, DeliveryReceiptPlace , ContractID " +
                                                "  , UserU , CreateTime, UserI)" +
                                                "VALUES (@DeliveryReceiptType, @DeliveryReceiptCode,@DeliveryReceiptDate, @DeliveryReceiptNumber, " +
                                                "@ProposalID, @DeliveryReceiptPlace , @ContractID ,@UserU, @CreateTime, @UserI )" +
                                                " select IDENT_CURRENT('dbo.tbl_DeliveryReceipt') as LastInserted ", connection))
            {
                AddSqlParameter(command, "@DeliveryReceiptType", obj.DeliveryReceiptType, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@DeliveryReceiptCode", obj.DeliveryReceiptCode, System.Data.SqlDbType.VarChar);
                AddSqlParameter(command, "@DeliveryReceiptDate", obj.DeliveryReceiptDate, System.Data.SqlDbType.DateTime);
                AddSqlParameter(command, "@ProposalID", obj.ProposalID, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@ContractID", obj.ContractID, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@DeliveryReceiptNumber", obj.DeliveryReceiptNumber, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@DeliveryReceiptPlace", !string.IsNullOrEmpty(obj.DeliveryReceiptPlace) ? obj.DeliveryReceiptPlace : " ", System.Data.SqlDbType.NVarChar);
                AddSqlParameter(command, "@UserU", userID, System.Data.SqlDbType.VarChar);
                AddSqlParameter(command, "@UserI", userID, System.Data.SqlDbType.VarChar);
                AddSqlParameter(command, "@CreateTime", localDate, System.Data.SqlDbType.DateTime);
                WriteLogExecutingCommand(command);

                var lastInsertedRaw = command.ExecuteScalar();
                if (lastInsertedRaw != null && !DBNull.Value.Equals(lastInsertedRaw))
                {
                    lastestInserted = Convert.ToInt32(lastInsertedRaw);
                }
            }


            if (lastestInserted > 0)
            {
                using (var command = new SqlCommand("update  tbl_Proposal_Process " +
                                                    " set DeliveryReceiptID=@DeliveryReceiptID  , DeliveryReceiptTime=@DeliveryReceiptTime ,  CurrentFeature=@CurrentFeature where ProposalID=@ProposalID", connection))
                {
                    AddSqlParameter(command, "@ProposalID", obj.ProposalID, System.Data.SqlDbType.Int);
                    AddSqlParameter(command, "@DeliveryReceiptID", lastestInserted, System.Data.SqlDbType.Int);
                    AddSqlParameter(command, "@DeliveryReceiptTime", currenttime, System.Data.SqlDbType.DateTime);
                    AddSqlParameter(command, "@CurrentFeature", "DeliveryReceipt", System.Data.SqlDbType.VarChar);
                    WriteLogExecutingCommand(command);
                    command.ExecuteScalar();
                }
            }

            return(lastestInserted);
        }
        public async Task <ActionMessage> Put([FromForm] DeliveryReceiptInfo obj, [FromForm] List <IFormFile> files)
        {
            ActionMessage ret = new ActionMessage();

            try
            {
                ret = await DeliveryReceiptServices.GetInstance().Update(obj, files, GetUserId());
            }
            catch (Exception ex)
            {
                ret.isSuccess     = false;
                ret.err.msgCode   = "Internal Error !!!";
                ret.err.msgString = ex.ToString();
            }
            return(ret);
        }
        public DeliveryReceiptInfo GetDetail(int id, string _userID)
        {
            SqlConnectionFactory sqlConnection = new SqlConnectionFactory();
            DeliveryReceiptInfo  record        = new DeliveryReceiptInfo();

            using (SqlConnection connection = sqlConnection.GetConnection())
            {
                record             = DeliveryReceiptDataLayer.GetInstance().GetDetail(connection, id, _userID);
                record.Items       = DeliveryReceiptDataLayer.GetInstance().getSelectedItems(connection, id, _userID);
                record.ListComment = new List <CommentInfo>();

                //Get document
                DocumentSeachCriteria documentCriteria = new DocumentSeachCriteria();
                documentCriteria.TableName = TableFile.DeliveryReceipt.ToString();
                documentCriteria.PreferId  = id.ToString();
                record.ListDocument        = DocumentService.GetInstance().GetDocument(documentCriteria);


                record.Employees = new List <DeliveryReceiptEmployeeInfo>();
                record.Employees = DeliveryReceiptDataLayer.GetInstance().GetDeliveryReceiptEmployeesById(connection, record.DeliveryReceiptID.ToString());

                //get Comment
                CommentSeachCriteria commentCriteria = new CommentSeachCriteria();
                commentCriteria.TableName = TableFile.DeliveryReceipt.ToString();
                commentCriteria.PreferId  = id.ToString();
                record.ListComment        = CommentService.GetInstance().getComment(commentCriteria);
                foreach (var item in record.ListComment)
                {
                    DocumentSeachCriteria documentCriteria2 = new DocumentSeachCriteria();
                    documentCriteria2.TableName = TableFile.Comment.ToString();
                    documentCriteria2.PreferId  = item.AutoID.ToString();
                    item.ListDocument           = DocumentService.GetInstance().GetDocument(documentCriteria2);
                }
            }
            return(record);
        }
        public async Task <ActionMessage> Create(DeliveryReceiptInfo obj, [FromForm] List <IFormFile> files, string _userI, string _userID)
        {
            ActionMessage        ret           = new ActionMessage();
            int                  insetId       = -1;
            SqlConnectionFactory sqlConnection = new SqlConnectionFactory();

            using (SqlConnection connection = sqlConnection.GetConnection())
            {
                try
                {
                    insetId = DeliveryReceiptDataLayer.GetInstance().Create(connection, obj, _userI);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            if (insetId > -1)
            {
                ret.id = insetId;
                using (SqlConnection connection = sqlConnection.GetConnection())
                {
                    try
                    {
                        if (obj.Items != null)
                        {
                            // insertEmployees(insetId, obj.Employees);
                            foreach (DeliveryReceiptItemInfoNew item in obj.Items)
                            {
                                item.DeliveryReceiptID = insetId;
                                if (item.Amount > 0)
                                {
                                    //input tai san
                                    DeliveryReceiptWithDepartment deliveryReceipt = DeliveryReceiptDataLayer.GetInstance().getItemCreateAna(connection, item.DeliveryReceiptID, _userID);
                                    AnalyzerInfo analyzerInfo = new AnalyzerInfo()
                                    {
                                        AnalyzerAccountantCode = "",
                                        AnalyzerName           = item.ItemName,
                                        AnalyzerType           = 0,

                                        QuoteItemID = item.QuoteItemID,
                                        Description = "",

                                        Amount           = item.Amount,
                                        ItemPrice        = item.ItemPrice,
                                        TotalPrice       = item.TotalPrice,
                                        DepartmentRootID = deliveryReceipt.DepartmentID,
                                        DepartmentID     = deliveryReceipt.DepartmentID,

                                        ContractCode  = deliveryReceipt.ContractCode,
                                        UserIContract = deliveryReceipt.UserIContract,
                                        CustomerID    = deliveryReceipt.CustomerID,
                                        CustomerName  = deliveryReceipt.CustomerName,

                                        ExpirationDate    = DateTime.Now,
                                        DateIn            = obj.DeliveryReceiptDate,
                                        DeliveryReceiptID = item.DeliveryReceiptID,
                                        Serial            = "",
                                    };

                                    int seq      = AnalyzerDataLayer.GetInstance().GetMaxPropCode(connection, analyzerInfo.DateIn.Year);
                                    int insertID = AnalyzerDataLayer.GetInstance().InsertAnalyzer(connection, analyzerInfo, seq, _userI);

                                    string[] _anaNamesSplit = analyzerInfo.AnalyzerName.Split(' ');
                                    string   _anaNameSplit  = "";
                                    for (int i = 0; i < _anaNamesSplit.Count(); i++)
                                    {
                                        if (i == 4)
                                        {
                                            break;
                                        }
                                        else
                                        {
                                            _anaNameSplit += (_anaNamesSplit[i][0]).ToString().ToUpper();
                                        }
                                    }
                                    string anacode = _anaNameSplit + "." + analyzerInfo.DateIn.Year + "." + String.Format("{0:000000}", seq);
                                    AnalyzerDataLayer.GetInstance().UpdateAnalyzer(connection, insertID, anacode);
                                    // end insert
                                    DeliveryReceiptDataLayer.GetInstance().CreateDeliveryReceiptItem(connection, item, _userI);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }

                using (SqlConnection connection = sqlConnection.GetConnection())
                {
                    try
                    {
                        if (obj.Employees != null)
                        {
                            foreach (DeliveryReceiptEmployeeInfo item in obj.Employees)
                            {
                                item.DeliveryReceiptID = insetId;
                                DeliveryReceiptDataLayer.GetInstance().CreateDeliveryReceiptItemUser(connection, item, _userI);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }

                foreach (var item in files)
                {
                    DocumentInfo documentInfo = new DocumentInfo();
                    documentInfo.TableName = TableFile.DeliveryReceipt.ToString();
                    documentInfo.PreferId  = insetId.ToString();
                    documentInfo.Link      = DateTime.Now.ToString("yyMMddHHmmssfff") + "-" + Utils.ChuyenTVKhongDau(item.FileName);
                    documentInfo.FileName  = item.FileName;
                    documentInfo.Length    = item.Length.ToString();
                    documentInfo.Type      = item.ContentType;
                    ret = await FilesHelpers.UploadFile(TableFile.DeliveryReceipt.ToString(), insetId.ToString(), item, documentInfo.Link);

                    DocumentService.GetInstance().InsertDocument(documentInfo, _userI.ToString());
                }
                ret.isSuccess = true;
            }
            else
            {
                ret.isSuccess     = false;
                ret.err.msgCode   = "lỗi thêm phiếu nghiệm thu";
                ret.err.msgString = "lỗi thêm phiếu nghiệm thu";
            }
            return(ret);
        }
        public async Task <ActionMessage> Update(DeliveryReceiptInfo obj, [FromForm] List <IFormFile> files, string _userI)
        {
            ActionMessage ret = new ActionMessage();

            SqlConnectionFactory sqlConnection = new SqlConnectionFactory();

            using (SqlConnection connection = sqlConnection.GetConnection())
            {
                try
                {
                    DeliveryReceiptDataLayer.GetInstance().Update(connection, obj, _userI);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }


            /*  using (SqlConnection connection = sqlConnection.GetConnection())
             * {
             *    try
             *    {
             *        EditEmployees(obj.DeliveryReceiptID, obj.Employees);
             *        foreach (DeliveryReceiptItemInfoNew item in obj.Items)
             *        {
             *            DeliveryReceiptDataLayer.GetInstance().UpdateDeliveryReceiptItem(connection, item, _userI);
             *        }
             *    }
             *    catch (Exception ex)
             *    {
             *        throw ex;
             *    }
             * }*/

            using (SqlConnection connection = sqlConnection.GetConnection())
            {
                try
                {
                    DeliveryReceiptDataLayer.GetInstance().DeleteDeliveryReceiptItemUser(connection, obj.DeliveryReceiptID, _userI);


                    if (obj.Employees != null)
                    {
                        foreach (DeliveryReceiptEmployeeInfo item in obj.Employees)
                        {
                            item.DeliveryReceiptID = obj.DeliveryReceiptID;
                            DeliveryReceiptDataLayer.GetInstance().CreateDeliveryReceiptItemUser(connection, item, _userI);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            DocumentService.GetInstance().DeleteDocumentsNotExitsInList(obj.ListDocument, TableFile.DeliveryReceipt.ToString(), obj.DeliveryReceiptID);
            foreach (var item in files)
            {
                DocumentInfo documentInfo = new DocumentInfo();
                documentInfo.TableName = TableFile.DeliveryReceipt.ToString();
                documentInfo.PreferId  = obj.DeliveryReceiptID.ToString();
                documentInfo.Link      = DateTime.Now.ToString("yyMMddHHmmssfff") + "-" + Utils.ChuyenTVKhongDau(item.FileName);
                documentInfo.FileName  = item.FileName;
                documentInfo.Length    = item.Length.ToString();
                documentInfo.Type      = item.ContentType;
                ret = await FilesHelpers.UploadFile(TableFile.DeliveryReceipt.ToString(), obj.DeliveryReceiptID.ToString(), item, documentInfo.Link);

                DocumentService.GetInstance().InsertDocument(documentInfo, _userI.ToString());
            }
            ret.isSuccess = true;


            return(ret);
        }
示例#9
0
        public List <DeliveryReceiptInfo> Getlist(SqlConnection connection, DeliveryReceiptCriteria criteria, string _userID)
        {
            var result = new List <DeliveryReceiptInfo>();

            using (var command = new SqlCommand("Select DR.*, P.ProposalCode, D.DepartmentName , D1.DepartmentName as CurDepartmentName" +
                                                " from tbl_DeliveryReceipt DR  " +
                                                " LEFT JOIN tbl_Proposal P on P.ProposalID  = DR.ProposalID " +
                                                " LEFT JOIN tbl_Department D on D.DepartmentID  = P.DepartmentID  " +
                                                " left join tbl_Department D1 on P.CurDepartmentID = D1.DepartmentID " +
                                                " where   DR.ProposalID <> 0 ", connection))
            {
                if (criteria.proposalCode != "" && criteria.proposalCode != null)
                {
                    command.CommandText += " and P.ProposalCode like  '%" + criteria.proposalCode + "%' ";
                }
                if (criteria.departmentID != 0)
                {
                    command.CommandText += " and ( P.departmentID = @departmentID ";
                    command.CommandText += " or  P.CurDepartmentID = @departmentID ) ";
                    AddSqlParameter(command, "@departmentID", criteria.departmentID, System.Data.SqlDbType.Int);
                }
                if (criteria.fromDate != null && criteria.toDate != null)
                {
                    command.CommandText += " and DR.DateIn between @FromDate and @ToDate ";
                    AddSqlParameter(command, "@FromDate", criteria.fromDate, System.Data.SqlDbType.DateTime);
                    AddSqlParameter(command, "@ToDate", criteria.toDate, System.Data.SqlDbType.DateTime);
                }
                if (!string.IsNullOrEmpty(_userID) && _userID != "admin")
                {
                    command.CommandText += " and (DR.UserAssign = @UserID )";
                    AddSqlParameter(command, "@UserID", _userID, SqlDbType.VarChar);
                }

                if (criteria.pageSize == 0)
                {
                    criteria.pageSize = 10;
                }
                var offSet = criteria.pageIndex * criteria.pageSize;
                command.CommandText += " order by DR.UpdateTime ";
                command.CommandText += " OFFSET @OFFSET ROWS FETCH NEXT @PAGESIZE ROWS ONLY ";
                AddSqlParameter(command, "@OFFSET", offSet, System.Data.SqlDbType.Int);
                AddSqlParameter(command, "@PAGESIZE", criteria.pageSize, System.Data.SqlDbType.Int);
                WriteLogExecutingCommand(command);
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var info = new DeliveryReceiptInfo();
                        info.DeliveryReceiptID     = GetDbReaderValue <int>(reader["DeliveryReceiptID"]);
                        info.DeliveryReceiptType   = GetDbReaderValue <int>(reader["DeliveryReceiptType"]);
                        info.DeliveryReceiptCode   = GetDbReaderValue <string>(reader["DeliveryReceiptCode"]);
                        info.DeliveryReceiptDate   = GetDbReaderValue <DateTime>(reader["DeliveryReceiptDate"]);
                        info.DeliveryReceiptNumber = GetDbReaderValue <int>(reader["DeliveryReceiptNumber"]);
                        info.ProposalID            = GetDbReaderValue <int>(reader["ProposalID"]);
                        info.ProposalCode          = GetDbReaderValue <string>(reader["ProposalCode"]);
                        info.DepartmentName        = GetDbReaderValue <string>(reader["DepartmentName"]);
                        info.CurDepartmentName     = GetDbReaderValue <string>(reader["CurDepartmentName"]);
                        info.DeliveryReceiptPlace  = GetDbReaderValue <string>(reader["DeliveryReceiptPlace"]);

                        info.UserU      = GetDbReaderValue <string>(reader["UserU"]);
                        info.UpdateTime = GetDbReaderValue <DateTime>(reader["UpdateTime"]);
                        info.CreateTime = GetDbReaderValue <DateTime>(reader["CreateTime"]);
                        result.Add(info);
                    }
                }
                return(result);
            }
        }
示例#10
0
        public static MemoryStream GetTemplate(int id, string rootpath, string _userID)
        {
            var memoryStream         = new MemoryStream();
            DeliveryReceiptInfo item = DeliveryReceiptServices.GetInstance().GetDetail(id, _userID);
            var    type     = item.DeliveryReceiptType;
            string fileName = "";

            switch (type)
            {
            case 1:
                fileName = @"GiaoNhan34.docx";
                break;

            case 2:
                fileName = @"GiaoNhanC50.docx";
                break;

            case 3:
                fileName = @"BBGNNOIBO.docx";
                break;

            default:
                fileName = @"GiaoNhan34.docx";
                break;
            }


            string filePath = rootpath + "/" + fileName;


            using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                fileStream.CopyTo(memoryStream);

            using (var document = WordprocessingDocument.Open(memoryStream, true))
            {
                document.ChangeDocumentType(WordprocessingDocumentType.Document); // change from template to document
                DateTime date = DateTime.Now;

                var body  = document.MainDocumentPart.Document.Body;
                var paras = body.Elements <Paragraph>();

                List <string>         headers = new List <string>();
                List <List <string> > items   = new List <List <string> >();



                if (type == 1)
                {
                    headers.Add("STT");
                    headers.Add("Tên nhãn hiệu, quy cách, phẩm chất nguyên liệu, vật liệu, công cụ, dụng cụ");
                    headers.Add("Mã số");
                    headers.Add("Đơn vị tính");
                    headers.Add("Số lượng");
                    headers.Add("Đơn giá");
                    headers.Add("Thành tiền");
                    headers.Add("Ghi chú");
                    var    index     = 1;
                    double totalcost = 0;
                    foreach (DeliveryReceiptItemInfoNew record in item.Items)
                    {
                        List <string> row = new List <string>();
                        row.Add(index.ToString());
                        row.Add(record.ItemName);
                        row.Add("");
                        row.Add(record.ItemUnit);
                        row.Add(record.Amount.ToString());
                        row.Add(record.ItemPrice.ToString());
                        row.Add((record.Amount * record.ItemPrice).ToString());
                        row.Add(WordUtils.checkNull(record.Description));
                        items.Add(row);
                        totalcost += record.Amount * record.ItemPrice;
                        index++;
                    }
                    Table tableData = CreateTablec34(headers, items, totalcost);

                    string dateInStr       = "Ngày " + item.DeliveryReceiptDate.Day + " tháng " + item.DeliveryReceiptDate.Month + " năm " + item.DeliveryReceiptDate.Year;
                    string proposalDateStr = "ngày " + item.ProposalTime.Day + " tháng " + item.ProposalTime.Month + " năm " + item.ProposalTime.Year;
                    foreach (var text in body.Descendants <Text>())
                    {
                        text.Text = text.Text.Replace("#", "");

                        text.Text = text.Text.Replace("DeliveryReceiptDate", WordUtils.checkNull(dateInStr));
                        text.Text = text.Text.Replace("DeliveryReceiptCode", WordUtils.checkNull(item.DeliveryReceiptCode));
                        text.Text = text.Text.Replace("DeliveryReceiptPlace", WordUtils.checkNull(HardData.location[Int32.Parse(item.DeliveryReceiptPlace)]));
                        text.Text = text.Text.Replace("ProposalCode", WordUtils.checkNull(item.ProposalCode));
                        text.Text = text.Text.Replace("ProposalTime", WordUtils.checkNull(proposalDateStr));
                        text.Text = text.Text.Replace("CurDepartmentName", WordUtils.checkNull(item.CurDepartmentName));
                        text.Text = text.Text.Replace("DepartmentName", WordUtils.checkNull(item.DepartmentName));
                        if (text.Text == "lstItem")
                        {
                            DocumentFormat.OpenXml.OpenXmlElement textP1 = text.Parent;
                            DocumentFormat.OpenXml.OpenXmlElement textP2 = textP1.Parent;
                            body.InsertAfter(tableData, textP2);
                            textP1.Remove();
                        }
                    }
                }
                else
                {
                    if (type == 2)
                    {
                        headers.Add("STT");
                        headers.Add("Tên, ký hiệu quy cách (cấp hạng TSCĐ)");
                        headers.Add("Số hiệu TSCĐ");
                        headers.Add("Nước sản xuất");
                        headers.Add("Năm sản xuất");
                        headers.Add("Năm đưa vào sử dụng");
                        headers.Add("Đvt");
                        headers.Add("Số lượng");
                        headers.Add("Giá mua (ZSX)");
                        headers.Add("Chi phí vận chuyển");
                        headers.Add("Chi phí chạy thử");
                        headers.Add("Nguyên giá TSCĐ");
                        headers.Add("TL kỹ thuật kèm theo");
                        var    index       = 1;
                        double totalcost   = 0;
                        var    currentDate = DateTime.Now;
                        foreach (DeliveryReceiptItemInfoNew record in item.Items)
                        {
                            List <string> row = new List <string>();
                            row.Add(index.ToString());
                            row.Add(record.ItemName);
                            row.Add("");
                            row.Add("");
                            row.Add("");
                            row.Add(currentDate.Year.ToString());
                            row.Add(record.ItemUnit);
                            row.Add(record.Amount.ToString());
                            row.Add(record.ItemPrice.ToString());
                            row.Add("");
                            row.Add("");
                            row.Add((record.Amount * record.ItemPrice).ToString());
                            row.Add("");
                            items.Add(row);
                            totalcost += record.Amount * record.ItemPrice;
                            index++;
                        }
                        Table tableData = CreateTablec50(headers, items, totalcost);

                        string dateInStr       = "Ngày " + item.DeliveryReceiptDate.Day + " tháng " + item.DeliveryReceiptDate.Month + " năm " + item.DeliveryReceiptDate.Year;
                        string proposalDateStr = "ngày " + item.ProposalTime.Day + " tháng " + item.ProposalTime.Month + " năm " + item.ProposalTime.Year;
                        foreach (var text in body.Descendants <Text>())
                        {
                            text.Text = text.Text.Replace("#", "");

                            text.Text = text.Text.Replace("DeliveryReceiptDate", WordUtils.checkNull(dateInStr));
                            text.Text = text.Text.Replace("DeliveryReceiptCode", WordUtils.checkNull(item.DeliveryReceiptCode));
                            text.Text = text.Text.Replace("DeliveryReceiptPlace", WordUtils.checkNull(HardData.location[Int32.Parse(item.DeliveryReceiptPlace)]));
                            text.Text = text.Text.Replace("ProposalCode", WordUtils.checkNull(item.ProposalCode));
                            text.Text = text.Text.Replace("ProposalTime", WordUtils.checkNull(proposalDateStr));
                            text.Text = text.Text.Replace("CurDepartmentName", WordUtils.checkNull(item.CurDepartmentName));
                            if (text.Text == "lstIlistItemtem")
                            {
                                DocumentFormat.OpenXml.OpenXmlElement textP1 = text.Parent;
                                DocumentFormat.OpenXml.OpenXmlElement textP2 = textP1.Parent;
                                body.InsertAfter(tableData, textP2);
                                textP1.Remove();
                            }
                        }
                    }
                    else
                    {
                        headers.Add("STT");
                        headers.Add("Tên mặt hàng");
                        headers.Add("Đơn vị tính");
                        headers.Add("Số lượng");

                        var index = 1;

                        var currentDate = DateTime.Now;
                        foreach (DeliveryReceiptItemInfoNew record in item.Items)
                        {
                            List <string> row = new List <string>();
                            row.Add(index.ToString());
                            row.Add(record.ItemName);
                            row.Add(record.ItemUnit);
                            row.Add(record.Amount.ToString());
                            index++;
                            items.Add(row);
                        }
                        Table tableData = CreateTableInternal(headers, items);

                        string dateInStr       = "Ngày " + item.DeliveryReceiptDate.Day + " tháng " + item.DeliveryReceiptDate.Month + " năm " + item.DeliveryReceiptDate.Year;
                        string proposalDateStr = "ngày " + item.ProposalTime.Day + " tháng " + item.ProposalTime.Month + " năm " + item.ProposalTime.Year;
                        foreach (var text in body.Descendants <Text>())
                        {
                            text.Text = text.Text.Replace("#", "");

                            text.Text = text.Text.Replace("currentyear", WordUtils.checkNull(currentDate.Year.ToString()));
                            text.Text = text.Text.Replace("departmentName", WordUtils.checkNull(item.DepartmentName));
                            text.Text = text.Text.Replace("curDepartmentName", WordUtils.checkNull(item.CurDepartmentName));
                            if (text.Text == "lstItem")
                            {
                                DocumentFormat.OpenXml.OpenXmlElement textP1 = text.Parent;
                                DocumentFormat.OpenXml.OpenXmlElement textP2 = textP1.Parent;
                                body.InsertAfter(tableData, textP2);
                                textP1.Remove();
                            }
                        }
                    }
                }

                document.Save();
                document.Close();
            }
            return(memoryStream);
        }