public myCustomerOrder GetNewCustomerOrder() { //Apenas com uma linha CustomerOrderLine line = new CustomerOrderLine() { LineNumber = 1, ItemCode = "ART1", ItemDescription = "Artigo cust", Quantity = 3, VATTax = 23, UnitPriceExcludedVAT = 100, Discount1 = 1, Discount2 = 2, Discount3 = 3, DiscountValue = 4, }; myCustomerOrder myOrder = new myCustomerOrder() { FiscalYear = "2018", SectionCode = "1", DocTypeAbbrev = "ENCCL", EntityCode = 1, Date = DateTime.Now, ExpirationDate = DateTime.Now, CurrencyCode = "EUR", Lines = new List <CustomerOrderLine>() { line }, GetReportBytes = true, }; return(myOrder); }
public IHttpActionResult GenerateCustomerOrder([FromBody] myCustomerOrder pOrder) { MovEncomenda myOrder; MovEncomendaLin myOrderLine; var byRefFalse = false; var stockAvailable = true; var affectsOtherLines = true; var fixedAssociation = true; var freeAssociation = true; var checkStock = false; var famForQty = false; var famForPrice = false; TpProcuraArtigo searchItem = 0; int numberLine; string itemCode; var errorDescription = ""; var result = new DocumentResult(); try { //pOrder = GetNewCustomerOrder(); myOrder = Eti.Aplicacao.Movimentos.MovEncomendasCli.GetNew(pOrder.DocTypeAbbrev, pOrder.SectionCode); myOrder.Cabecalho.CodExercicio = pOrder.FiscalYear; myOrder.Cabecalho.AplicacaoOrigem = "WS"; myOrder.Cabecalho.Data = pOrder.Date.Date; myOrder.Cabecalho.DataVencimento = pOrder.ExpirationDate; myOrder.Cabecalho.Hora = pOrder.Date.Hour.ToString("00") + ":" + pOrder.Date.Minute.ToString("00"); myOrder.Cabecalho.CodEntidade = pOrder.EntityCode; myOrder.AlteraEntidade((byte)TpEntidade.Cliente, myOrder.Cabecalho.CodEntidade, true); myOrder.Cabecalho.AbrevMoeda = pOrder.CurrencyCode; myOrder.AlteraMoeda(pOrder.CurrencyCode, ref byRefFalse, false); foreach (CustomerOrderLine line in pOrder.Lines.OrderBy(p => p.LineNumber)) { itemCode = line.ItemCode; numberLine = myOrder.Lines.Count + 1; myOrder.AddLin(ref numberLine); myOrderLine = myOrder.Lines[numberLine]; myOrderLine.TipoLinha = TpLinha.Artigo; myOrderLine.CodArtigo = itemCode; myOrder.AlteraArtigo(numberLine, ref itemCode, ref affectsOtherLines, ref fixedAssociation, ref freeAssociation, ref searchItem, checkStock, ref stockAvailable, ref famForQty, ref famForPrice); myOrderLine.DescArtigo = line.ItemDescription; myOrderLine.Quantidade = line.Quantity; myOrder.AlteraQuantidade(numberLine, myOrderLine.Quantidade, ref affectsOtherLines, false, ref stockAvailable); if (myOrder.TDocIvaIncluido) { line.UnitPriceExcludedVAT = line.UnitPriceExcludedVAT * (1 + line.VATTax / 100.0); } myOrderLine.PrecoUnitario = Convert.ToDouble(line.UnitPriceExcludedVAT); myOrder.AlteraPrecoUnitario(numberLine, myOrderLine.PrecoUnitario, ref byRefFalse); myOrderLine.TaxaIva = Convert.ToDouble(line.VATTax); myOrderLine.CodTaxaIva = Eti.Aplicacao.Tabelas.TaxasIvas.GetTaxaIva(Convert.ToDecimal(myOrderLine.TaxaIva)); myOrder.AlteraTaxaIVA(numberLine, myOrderLine.CodTaxaIva); myOrderLine.Desconto1 = line.Discount1; myOrder.AlteraDesconto(1, numberLine, myOrderLine.Desconto1); myOrderLine.Desconto2 = line.Discount2; myOrder.AlteraDesconto(2, numberLine, myOrderLine.Desconto2); myOrderLine.Desconto3 = line.Discount3; myOrder.AlteraDesconto(3, numberLine, myOrderLine.Desconto3); myOrderLine.DescontoValorLinha = line.DiscountValue; myOrder.AlteraDesconto(4, numberLine, myOrderLine.DescontoValorLinha); } var validate = myOrder.Validate(true); if (validate) { Eti.Aplicacao.Movimentos.MovEncomendasCli.Update(ref myOrder); } if (myOrder.EtiErrorDescription == "") { result = new DocumentResult() { ErrorDescription = myOrder.EtiErrorDescription, DocumentKey = new Helpers.DocumentKey() { SectionCode = myOrder.Cabecalho.CodSeccao, DocTypeAbbrev = myOrder.Cabecalho.AbrevTpDoc, FiscalYear = myOrder.Cabecalho.CodExercicio, Number = myOrder.Cabecalho.Numero } }; if (pOrder.GetReportBytes) { result.reportBytes = Functions.GetReportBytes(TpDocumentoAEmitir.Encomendas, result.DocumentKey); } } else { result.ErrorDescription = myOrder.EtiErrorDescription; } } catch (Exception ex) { errorDescription = string.Format("{0}.{1}.{2}", MethodBase.GetCurrentMethod().DeclaringType.FullName, MethodBase.GetCurrentMethod().Name, ex.Message); result.ErrorDescription = errorDescription; } return(Ok(result)); }