Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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();
            }
        }