public Model.DocumentModel Get(int docEntry, Model.EnumObjType objType) { Model.DocumentModel documentModel = new Model.DocumentModel(); documentModel.DocEntry = docEntry; documentModel.ObjType = objType; Documents document = GetDIObject(documentModel.ObjType); try { if (document.GetByKey(documentModel.DocEntry)) { documentModel.CardCode = document.CardCode; documentModel.DocDate = document.DocDate; documentModel.SlpCode = document.SalesPersonCode; int line = 0; for (line = document.Lines.Count - 1; line >= 0; line--) { document.Lines.SetCurrentLine(line); Model.DocumentItemModel documentItemModel = new Model.DocumentItemModel(); documentItemModel.DocEntry = docEntry; documentItemModel.LineNum = line; documentItemModel.ItemCode = document.Lines.ItemCode; documentItemModel.Price = document.Lines.Price; documentItemModel.Quantity = document.Lines.Quantity; documentItemModel.Total = document.Lines.LineTotal; documentItemModel.Discount = document.Lines.DiscountPercent; documentItemModel.Usage = Convert.ToInt32(document.Lines.Usage); for (int userField = 0; userField < document.Lines.UserFields.Fields.Count; userField++) { documentItemModel.UserFields.Add(document.Lines.UserFields.Fields.Item(userField).Name, document.Lines.UserFields.Fields.Item(userField).Value); } documentModel.DocumentItemList.Add(documentItemModel); } for (int userField = 0; userField < document.UserFields.Fields.Count; userField++) { documentModel.UserFields.Add(document.UserFields.Fields.Item(userField).Name, document.UserFields.Fields.Item(userField).Value); } } } finally { Marshal.ReleaseComObject(document); GC.Collect(); } return(documentModel); }
public void Save(Model.DocumentModel documentModel, List <Model.DocumentInstallmentModel> documentInstallmentList) { Documents document = GetDIObject(documentModel.ObjType); try { int line = 0; if (document.GetByKey(documentModel.DocEntry)) { for (line = document.Lines.Count - 1; line >= 0; line--) { document.Lines.SetCurrentLine(line); document.Lines.Delete(); } line = 0; foreach (Model.DocumentItemModel documentItemModel in documentModel.DocumentItemList) { if (line > document.Lines.Count - 1) { document.Lines.Add(); } document.Lines.SetCurrentLine(line); document.Lines.ItemCode = documentItemModel.ItemCode; document.Lines.Quantity = documentItemModel.Quantity; document.Lines.Price = documentItemModel.Price; foreach (KeyValuePair <string, dynamic> userField in documentItemModel.UserFields) { document.Lines.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line++; } foreach (KeyValuePair <string, dynamic> userField in documentModel.UserFields) { document.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line = 0; for (line = document.Installments.Count - 1; line >= 0; line--) { document.Installments.SetCurrentLine(line); document.Installments.Delete(); } line = 0; foreach (Model.DocumentInstallmentModel documentInstallmentModel in documentInstallmentList) { if (line > document.Installments.Count - 1) { document.Installments.Add(); } document.Installments.SetCurrentLine(line); document.Installments.DueDate = documentInstallmentModel.DueDate; if (documentInstallmentModel.InstPrcnt > 0) { document.Installments.Percentage = documentInstallmentModel.InstPrcnt; } if (document.DocTotalFc > 0) { document.Installments.TotalFC = documentInstallmentModel.InsTotal; } else { document.Installments.Total = documentInstallmentModel.InsTotal; } foreach (KeyValuePair <string, dynamic> userField in documentInstallmentModel.UserFields) { document.Installments.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line++; } document.UserFields.Fields.Item("U_DIUpdate").Value = "Y"; document.Update(); Controller.ConnectionController.Instance.VerifyBussinesObjectSuccess(); } else { document.CardCode = documentModel.CardCode; document.DocDate = documentModel.DocDate; document.DocCurrency = documentModel.DocCur; if (documentModel.DocRate > 0) { document.DocRate = documentModel.DocRate; } if (documentModel.BPLId > 0) { document.BPL_IDAssignedToInvoice = documentModel.BPLId; } if (documentModel.Serial > 0) { document.SequenceCode = -1; document.SequenceSerial = documentModel.Serial; } document.DocType = documentModel.DocType == Model.EnumDocType.Item ? BoDocumentTypes.dDocument_Items : BoDocumentTypes.dDocument_Service; line = 0; foreach (Model.DocumentItemModel documentItemModel in documentModel.DocumentItemList) { if (line > document.Lines.Count - 1) { document.Lines.Add(); } document.Lines.SetCurrentLine(line); if (documentModel.DocType == Model.EnumDocType.Item) { document.Lines.ItemCode = documentItemModel.ItemCode; document.Lines.Quantity = documentItemModel.Quantity; document.Lines.UnitPrice = documentItemModel.Price; } else { document.Lines.AccountCode = documentItemModel.AcctCode; document.Lines.ItemDescription = documentItemModel.Dscription; document.Lines.Usage = documentItemModel.Usage.ToString(); document.Lines.TaxCode = documentItemModel.TaxCode.ToString(); document.Lines.LineTotal = documentItemModel.Price; } document.Comments = documentModel.Comments; foreach (KeyValuePair <string, dynamic> userField in documentItemModel.UserFields) { document.Lines.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line++; } foreach (KeyValuePair <string, dynamic> userField in documentModel.UserFields) { document.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line = 0; foreach (Model.DocumentInstallmentModel documentInstallmentModel in documentInstallmentList) { if (line > document.Installments.Count - 1) { document.Installments.Add(); } document.Installments.SetCurrentLine(line); document.Installments.DueDate = documentInstallmentModel.DueDate; if (documentInstallmentModel.InstPrcnt > 0) { document.Installments.Percentage = documentInstallmentModel.InstPrcnt; } else if (document.DocTotalFc > 0) { document.Installments.TotalFC = documentInstallmentModel.InsTotal; } else { document.Installments.Total = documentInstallmentModel.InsTotal; } foreach (KeyValuePair <string, dynamic> userField in documentInstallmentModel.UserFields) { document.Installments.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line++; } document.UserFields.Fields.Item("U_DIUpdate").Value = "Y"; document.Add(); Controller.ConnectionController.Instance.VerifyBussinesObjectSuccess(); documentModel.DocEntry = Controller.ConnectionController.Instance.LastObjectCode; } } catch (Exception ex) { throw new Exception(document.GetAsXML(), ex); } finally { Marshal.ReleaseComObject(document); GC.Collect(); } }
public void Save(Model.DocumentModel documentModel) { Documents document = GetDIObject(documentModel.ObjType); try { int line = 0; if (document.GetByKey(documentModel.DocEntry)) { for (line = document.Lines.Count - 1; line >= 0; line--) { document.Lines.SetCurrentLine(line); document.Lines.Delete(); } line = 0; foreach (Model.DocumentItemModel documentItemModel in documentModel.DocumentItemList) { if (line > document.Lines.Count - 1) { document.Lines.Add(); } document.Lines.SetCurrentLine(line); document.Lines.ItemCode = documentItemModel.ItemCode; document.Lines.Quantity = documentItemModel.Quantity; document.Lines.Price = documentItemModel.Price; foreach (KeyValuePair <string, dynamic> userField in documentItemModel.UserFields) { document.Lines.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line++; } foreach (KeyValuePair <string, dynamic> userField in documentModel.UserFields) { document.UserFields.Fields.Item(userField.Key).Value = userField.Value; } document.UserFields.Fields.Item("U_DIUpdate").Value = "Y"; document.Update(); Controller.ConnectionController.Instance.VerifyBussinesObjectSuccess(); } else { if (documentModel.BPLId > 0) { document.BPL_IDAssignedToInvoice = documentModel.BPLId; } if (documentModel.Serial > 0) { document.SequenceCode = -1; document.SequenceSerial = documentModel.Serial; } if (documentModel.Model > 0) { document.SequenceModel = documentModel.Model.ToString(); } document.CardCode = documentModel.CardCode; document.DocDate = documentModel.DocDate; document.DocType = documentModel.DocType == Model.EnumDocType.Item ? BoDocumentTypes.dDocument_Items : BoDocumentTypes.dDocument_Service; line = 0; foreach (Model.DocumentItemModel documentItemModel in documentModel.DocumentItemList) { if (line > document.Lines.Count - 1) { document.Lines.Add(); } document.Lines.SetCurrentLine(line); if (documentModel.DocType == Model.EnumDocType.Item) { document.Lines.ItemCode = documentItemModel.ItemCode; if (documentItemModel.Dscription != string.Empty) { document.Lines.ItemDescription = documentItemModel.Dscription; } document.Lines.Quantity = documentItemModel.Quantity; } else { document.Lines.AccountCode = documentItemModel.AcctCode; document.Lines.ItemDescription = documentItemModel.Dscription; document.Lines.TaxCode = documentItemModel.TaxCode; } document.Lines.Price = documentItemModel.Price; if (documentItemModel.Text != string.Empty) { document.Lines.ItemDetails = documentItemModel.Text; } foreach (KeyValuePair <string, dynamic> userField in documentItemModel.UserFields) { document.Lines.UserFields.Fields.Item(userField.Key).Value = userField.Value; } line++; } document.Comments = documentModel.Comments; foreach (KeyValuePair <string, dynamic> userField in documentModel.UserFields) { document.UserFields.Fields.Item(userField.Key).Value = userField.Value; } document.UserFields.Fields.Item("U_DIUpdate").Value = "Y"; document.Add(); Controller.ConnectionController.Instance.VerifyBussinesObjectSuccess(); documentModel.DocEntry = Controller.ConnectionController.Instance.LastObjectCode; } } finally { Marshal.ReleaseComObject(document); GC.Collect(); } }