static void Main(string[] args) { EtiAppAuthentication authentication = new EtiAppAuthentication() { serviceAddress = IniFile.IniRead(Path.Combine(IniFile.GetBasePath(), "ERPV19.eInic.ini"), "Geral", "ServerUrl", ""), SQLServerName = @"PT-ALFREDOA\ETICADATA", SQLUser = "******", SQLPassword = "******", SystemDatabase = "SIS_CUST19", Login = "******", Password = "******", Company = "T19PT", FiscalYearCode = "EX 2021", SectionCode = "1", Language = "pt-PT" }; try { //Obter o objeto EtiAplicacão. è necessário ter licença extended ou modulo de customziação EtiAplicacao etiApp = Functions.GetNewEtiAplicacao(authentication); //Tendo etiApp podemos utilziar a api do ERP //Chamar um webService, necessitando de inicilizar o etiAplicacao por webService //List<EntitiesCategory> entitiesCategory = Functions.GetEntitiesCategory(authentication); //Criar documento de venda MovVenda venda = etiApp.Movimentos.MovVendas.GetNew("FACT"); venda.Cabecalho.CodEntidade = 1; venda.AlteraEntidade(ERP.EtiEnums.TpEntidade.Cliente, 1, true, true); int linha = 1; string codArtigo = "001"; bool blnAfectaOutrasLinhas = false, blnAssociacoesFixas = false, blnAssociacoesLivres = false, blnStockDisponivel = false, blnFamPararQtd = false, blnFamPararPreco = false; TpProcuraArtigo pProcuraArtigo = TpProcuraArtigo.Encontrou; venda.AddLin(ref linha); venda.Lines[linha].CodArtigo = codArtigo; venda.AlteraArtigo(linha, ref codArtigo, ref blnAfectaOutrasLinhas, ref blnAssociacoesFixas, ref blnAssociacoesLivres, ref pProcuraArtigo, false, ref blnStockDisponivel, ref blnFamPararQtd, ref blnFamPararPreco); venda.CalculaTotais(); var validateVenda = venda.Validate(true); if (!validateVenda) { Console.WriteLine(venda.EtiErrorDescription); } else { bool blnSTKImpeditivo = false; etiApp.Movimentos.MovVendas.Update(ref venda, ref blnSTKImpeditivo, true, TpLigacaoExtra.SemLigacao, string.Empty); if (venda.EtiErrorCode != "") { Console.WriteLine(venda.EtiErrorDescription); } Helpers.Functions.PrintToPrinter(etiApp, venda.Cabecalho.CodExercicio, venda.Cabecalho.CodSeccao, venda.Cabecalho.AbrevTpDoc, venda.Cabecalho.Numero); } } catch (Exception ex) { Console.Write(ex.Message); } }
public IHttpActionResult SaveExternalInvoice([FromBody] Models.mySale document) { byte[] reportBytes; MovVenda sale; MovVendaLin saleLine; 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 = TpProcuraArtigo.NaoEncontrou; int numberLine; string itemCode; try { sale = Eti.Aplicacao.Movimentos.MovVendas.GetNew(document.DocTypeAbbrev, document.SectionCode); sale.Cabecalho.CodExercicio = document.FiscalYear; sale.Cabecalho.Data = document.Date.Date; sale.Cabecalho.DataVencimento = document.ExpirationDate; sale.Cabecalho.CodEntidade = document.EntityCode; sale.AlteraEntidade(TpEntidade.Cliente, sale.Cabecalho.CodEntidade, true, true); sale.Cabecalho.AbrevMoeda = document.CurrencyCode; sale.AlteraMoeda(document.CurrencyCode, ref byRefFalse, false); foreach (SalesLine line in document.Lines.OrderBy(p => p.LineNumber)) { itemCode = line.ItemCode; numberLine = sale.Lines.Count + 1; sale.AddLin(ref numberLine); saleLine = sale.Lines[numberLine]; saleLine.TipoLinha = TpLinha.Artigo; saleLine.CodArtigo = itemCode; sale.AlteraArtigo(numberLine, ref itemCode, ref affectsOtherLines, ref fixedAssociation, ref freeAssociation, ref searchItem, checkStock, ref stockAvailable, ref famForQty, ref famForPrice); saleLine.DescArtigo = line.ItemDescription; saleLine.Quantidade = line.Quantity; sale.AlteraQuantidade(numberLine, saleLine.Quantidade, ref affectsOtherLines, false, ref stockAvailable); saleLine.PrecoUnitario = Convert.ToDouble(line.UnitPriceExcludedVAT); sale.AlteraPrecoUnitario(numberLine, saleLine.PrecoUnitario, ref byRefFalse); saleLine.TaxaIva = Convert.ToDouble(line.VATTax); saleLine.CodTaxaIva = Eti.Aplicacao.Tabelas.TaxasIvas.GetTaxaIva(Convert.ToDecimal(saleLine.TaxaIva)); sale.AlteraTaxaIVA(numberLine, saleLine.CodTaxaIva); saleLine.Desconto1 = line.Discount1; sale.AlteraDesconto(1, numberLine, saleLine.Desconto1); saleLine.Desconto2 = line.Discount2; sale.AlteraDesconto(2, numberLine, saleLine.Desconto2); saleLine.Desconto3 = line.Discount3; sale.AlteraDesconto(3, numberLine, saleLine.Desconto3); saleLine.DescontoValorLinha = line.DiscountValue; sale.AlteraDesconto(4, numberLine, saleLine.DescontoValorLinha); } /// Marca como documento externo, para não recalcular informação de combustiveis sale.IsDocExterno = true; /// sale.AlteraInfoCertificacao("999", "1", "sdfhkdfFASDGFSfgsfgjsklgfsk394wrkd", "FT 1/598"); /// INFORMAÇÃO COMBUSTÍVEIS foreach (dynamic customInfo in document.CustomInfo) { sale.AddISPLines(new List <EC748.CombustiveisInfConsumidor.Models.ISPCombustivel>() { new EC748.CombustiveisInfConsumidor.Models.ISPCombustivel() { ISPCateg = customInfo.ISPCateg, ISPTaxa = customInfo.ISPTaxa, ISPUnid = customInfo.ISPUnid, Quantidade = customInfo.Quantidade, TaxaCalculada = customInfo.TaxaCalculada, TipoComb = customInfo.TipoComb, } }); sale.AddISPInfoLines(new List <EC748.CombustiveisInfConsumidor.Models.ISPCombustivelInfo>() { new EC748.CombustiveisInfConsumidor.Models.ISPCombustivelInfo() { EmissaoUnidade = customInfo.EmissaoUnidade, EmissaoCO2 = customInfo.EmissaoCO2, FossilPerc = customInfo.FossilPerc, ISPCategoria = customInfo.ISPCateg, ISPNomenclatura = customInfo.ISPNomenclatura, RenovavelPerc = customInfo.RenovavelPerc, SobreCusto = customInfo.SobreCusto, tpCombustivel = customInfo.TipoComb } }); } /// INFORMAÇÃO COMBUSTÍVEIS var validate = sale.Validate(true); if (validate) { var blockingStock = false; Eti.Aplicacao.Movimentos.MovVendas.Update(ref sale, ref blockingStock, true, 0, ""); } if (!string.IsNullOrEmpty(sale.EtiErrorCode)) { throw new Exception($@"ErrorCode:{sale.EtiErrorCode}{Environment.NewLine} EtiErrorDescription:{sale.EtiErrorDescription}"); } else { DocumentKey docKey = new Helpers.DocumentKey() { SectionCode = sale.Cabecalho.CodSeccao, DocTypeAbbrev = sale.Cabecalho.AbrevTpDoc, FiscalYear = sale.Cabecalho.CodExercicio, Number = sale.Cabecalho.Numero }; reportBytes = Functions.GetReportBytes(TpDocumentoAEmitir.Vendas, docKey); } return(Ok(reportBytes)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
//api/Purchases/GeneratePurchaseDoc //data: { //"FiscalYear":"2018", //"SectionCode":"1", //"DocTypeAbbrev":"V/FAT", //"EntityCode":"502395028", //"Date":"2018/01/25", //"ExpirationDate":"2018/02/24", //"CurrencyCode":"EUR", //"Lines":[ // { // "LineNumber": "1", // "ItemCode": "AMORT", // "ItemDescription": "AMORTECEDOR 001", // "BatchCode" : "LOTE_1", // "BatchDescription" : "Lote 0001". // "EntryDate" : "2018-03-27" // "ExpirationDate" : "2019-03-27" // "Quantity": "2", // "VATTax": "23", // "UnitPriceExcludedVAT": "39.90", // "Discount1": "5", // "Discount2": "0", // "Discount3": "0", // "DiscountValue": "0" // } //]} public IHttpActionResult GeneratePurchaseDoc([FromBody] Models.myPurchase document) { byte[] reportBytes; MovCompra purch; MovCompraLin purchLine; var byRefFalse = false; var stockAvailable = true; var affectsOtherLines = true; var fixedAssociation = true; var freeAssociation = true; var checkStock = false; TpProcuraArtigo searchItem = TpProcuraArtigo.NaoEncontrou; int numberLine; string itemCode; try { purch = Eti.Aplicacao.Movimentos.MovCompras.GetNew(document.DocTypeAbbrev, document.SectionCode); purch.Cabecalho().CodExercicio = document.FiscalYear; purch.Cabecalho().AplicacaoOrigem = "WS"; purch.Cabecalho().Data = document.Date.Date; purch.Cabecalho().DataVencimento = document.ExpirationDate; purch.Cabecalho().CodEntidade = document.EntityCode; purch.AlteraEntidade(TpEntidade.Fornecedor, purch.Cabecalho().CodEntidade, true, true); purch.Cabecalho().AbrevMoeda = document.CurrencyCode; purch.AlteraMoeda(document.CurrencyCode, ref byRefFalse, false); foreach (PurchaseLine line in document.Lines.OrderBy(p => p.LineNumber)) { itemCode = line.ItemCode; numberLine = purch.Lines.Count + 1; purch.AddLin(ref numberLine); purchLine = purch.Lines[numberLine]; purchLine.TipoLinha = TpLinha.Artigo; purchLine.CodArtigo = itemCode; purch.AlteraArtigo(numberLine, ref itemCode, ref affectsOtherLines, ref fixedAssociation, ref freeAssociation, ref searchItem, checkStock, ref stockAvailable); purchLine.DescArtigo = line.ItemDescription; //Cria lote caso não exista var item = Eti.Aplicacao.Tabelas.Artigos.Find(itemCode); if (item.Lotes) { var inactive = false; var exists = false; exists = Eti.Aplicacao.Tabelas.Artigos.ExisteLote(itemCode, line.BatchCode, ref inactive); if (!exists) { Eti.Aplicacao.Tabelas.Artigos.GravaLote(itemCode, line.BatchCode, line.BatchDescription, line.EntryDate, line.ExpirationDate, "", "", "", "", ""); purchLine.Lote = line.BatchCode; checkStock = true; stockAvailable = false; //exists : devolve se o lote existe ou não //inactive: devolve se está inativo //se checkStock = true devolve no stockAvailable se existe stock disponivel purch.AlteraLote(numberLine, itemCode, line.BatchCode, ref exists, ref inactive, checkStock, ref stockAvailable); } } purchLine.Quantidade = line.Quantity; purch.AlteraQuantidade(numberLine, purchLine.Quantidade, ref affectsOtherLines, false, ref stockAvailable); purchLine.PrecoUnitario = Convert.ToDouble(line.UnitPriceExcludedVAT); purch.AlteraPrecoUnitario(numberLine, purchLine.PrecoUnitario); purchLine.TaxaIva = Convert.ToDouble(line.VATTax); purchLine.CodTaxaIva = Eti.Aplicacao.Tabelas.TaxasIvas.GetTaxaIva(Convert.ToDecimal(purchLine.TaxaIva)); purch.AlteraTaxaIVA(numberLine, purchLine.CodTaxaIva); purchLine.Desconto1 = line.Discount1; purch.AlteraDesconto(1, numberLine, purchLine.Desconto1); purchLine.Desconto2 = line.Discount2; purch.AlteraDesconto(2, numberLine, purchLine.Desconto2); purchLine.Desconto3 = line.Discount3; purch.AlteraDesconto(3, numberLine, purchLine.Desconto3); purchLine.DescontoValorLinha = line.DiscountValue; purch.AlteraDesconto(4, numberLine, purchLine.DescontoValorLinha); } var validate = purch.Validate(true); if (validate) { var blockingStock = false; Eti.Aplicacao.Movimentos.MovCompras.Update(ref purch, ref blockingStock, true, 0, ""); } if (!string.IsNullOrEmpty(purch.EtiErrorCode)) { throw new Exception($@"ErrorCode:{purch.EtiErrorCode}{Environment.NewLine} EtiErrorDescription:{purch.EtiErrorDescription}"); } else { DocumentKey docKey = new Helpers.DocumentKey() { SectionCode = purch.Cabecalho().CodSeccao, DocTypeAbbrev = purch.Cabecalho().AbrevTpDoc, FiscalYear = purch.Cabecalho().CodExercicio, Number = purch.Cabecalho().Numero }; reportBytes = Functions.GetReportBytes(TpDocumentoAEmitir.Compras, docKey); } return(Ok(reportBytes)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public IHttpActionResult GenerateSalesDoc([FromBody] Models.mySale pSale) { MovVenda mySale; MovVendaLin saleLine; 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 = TpProcuraArtigo.NaoEncontrou; int numberLine; string itemCode; var errorDescription = ""; var result = new DocumentResult(); try { mySale = Eti.Aplicacao.Movimentos.MovVendas.GetNew(pSale.DocTypeAbbrev, pSale.SectionCode); mySale.Cabecalho.CodExercicio = pSale.FiscalYear; mySale.Cabecalho.AplicacaoOrigem = "WS"; mySale.Cabecalho.Data = pSale.Date.Date; mySale.Cabecalho.DataVencimento = pSale.ExpirationDate; mySale.Cabecalho.Hora = pSale.Date.Hour.ToString("00") + ":" + pSale.Date.Minute.ToString("00"); mySale.Cabecalho.CodEntidade = pSale.EntityCode; mySale.AlteraEntidade(TpEntidade.Cliente, mySale.Cabecalho.CodEntidade, true, true); mySale.Cabecalho.AbrevMoeda = pSale.CurrencyCode; mySale.AlteraMoeda(pSale.CurrencyCode, ref byRefFalse, false); foreach (SalesLine line in pSale.Lines.OrderBy(p => p.LineNumber)) { itemCode = line.ItemCode; numberLine = mySale.Lines.Count + 1; mySale.AddLin(ref numberLine); saleLine = mySale.Lines[numberLine]; saleLine.TipoLinha = TpLinha.Artigo; saleLine.CodArtigo = itemCode; mySale.AlteraArtigo(numberLine, ref itemCode, ref affectsOtherLines, ref fixedAssociation, ref freeAssociation, ref searchItem, checkStock, ref stockAvailable, ref famForQty, ref famForPrice); saleLine.DescArtigo = line.ItemDescription; saleLine.Quantidade = line.Quantity; mySale.AlteraQuantidade(numberLine, saleLine.Quantidade, ref affectsOtherLines, false, ref stockAvailable); if (mySale.TDocIvaIncluido) { line.UnitPriceExcludedVAT = line.UnitPriceExcludedVAT * (1 + line.VATTax / 100.0); } saleLine.PrecoUnitario = Convert.ToDouble(line.UnitPriceExcludedVAT); mySale.AlteraPrecoUnitario(numberLine, saleLine.PrecoUnitario, ref byRefFalse); saleLine.TaxaIva = Convert.ToDouble(line.VATTax); saleLine.CodTaxaIva = Eti.Aplicacao.Tabelas.TaxasIvas.GetTaxaIva(Convert.ToDecimal(saleLine.TaxaIva)); mySale.AlteraTaxaIVA(numberLine, saleLine.CodTaxaIva); saleLine.Desconto1 = line.Discount1; mySale.AlteraDesconto(1, numberLine, saleLine.Desconto1); saleLine.Desconto2 = line.Discount2; mySale.AlteraDesconto(2, numberLine, saleLine.Desconto2); saleLine.Desconto3 = line.Discount3; mySale.AlteraDesconto(3, numberLine, saleLine.Desconto3); saleLine.DescontoValorLinha = line.DiscountValue; mySale.AlteraDesconto(4, numberLine, saleLine.DescontoValorLinha); } //redefinir meios de pagamento var linePayMovType = 1; if (mySale.LinesPag.Count > 0) { mySale.LinesPag.Clear(); } foreach (SalePayment line in pSale.LinesPayment) { var movType = line.PayMovTypeCodeTres; mySale.LinesPag[linePayMovType].AbrevTpMovPagTes = movType; mySale.AlteraPagamAbrevTpMov(linePayMovType, movType, ref byRefFalse, ref byRefFalse, ref byRefFalse, ref byRefFalse, ref byRefFalse, ref byRefFalse, ref byRefFalse, ref byRefFalse); mySale.LinesPag[linePayMovType].Cambio = line.Exchange; mySale.LinesPag[linePayMovType].Valor = line.Value; mySale.AlteraPagamValor(linePayMovType, mySale.LinesPag[linePayMovType].Valor); mySale.LinesPag[linePayMovType].AbrevMoeda = line.CurrencyCode; mySale.LinesPag[linePayMovType].ValorMoedaDoc = mySale.LinesPag[linePayMovType].Valor; linePayMovType++; } //documento externo certeficado //mySale.AlteraInfoCertificacao(certificationNumber, "1", hash, saftDocNo); var validate = mySale.Validate(true); if (validate) { var blockingStock = false; Eti.Aplicacao.Movimentos.MovVendas.Update(ref mySale, ref blockingStock, true, 0, ""); } if (!string.IsNullOrEmpty(mySale.EtiErrorCode)) { result.ErrorDescription = mySale.EtiErrorDescription; } else { result = new DocumentResult() { ErrorDescription = mySale.EtiErrorDescription, DocumentKey = new Helpers.DocumentKey() { SectionCode = mySale.Cabecalho.CodSeccao, DocTypeAbbrev = mySale.Cabecalho.AbrevTpDoc, FiscalYear = mySale.Cabecalho.CodExercicio, Number = mySale.Cabecalho.Numero } }; if (pSale.GetReportBytes) { result.reportBytes = Functions.GetReportBytes(TpDocumentoAEmitir.Vendas, result.DocumentKey); } } return(Ok(result)); } catch (Exception ex) { errorDescription = string.Format("{0}.{1}.{2}", MethodBase.GetCurrentMethod().DeclaringType.FullName, MethodBase.GetCurrentMethod().Name, ex.Message); result.ErrorDescription = errorDescription; } return(Ok(result)); }
//api/Invoices/GenerateSalesDoc //data: { //"FiscalYear":"2018", //"SectionCode":"1", //"DocTypeAbbrev":"FAT", //"EntityCode":"502395028", //"Date":"2018/01/25", //"ExpirationDate":"2018/02/24", //"CurrencyCode":"EUR", //"Lines":[ // { // "LineNumber": "1", // "ItemCode": "AMORT", // "ItemDescription": "AMORTECEDOR 001", // "Quantity": "2", // "VATTax": "23", // "UnitPriceExcludedVAT": "39.90", // "Discount1": "5", // "Discount2": "0", // "Discount3": "0", // "DiscountValue": "0" // } //]} public IHttpActionResult GenerateSalesDoc([FromBody] Models.mySale document) { byte[] reportBytes; MovVenda sale; MovVendaLin saleLine; 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 = TpProcuraArtigo.NaoEncontrou; int numberLine; string itemCode; try { sale = Eti.Aplicacao.Movimentos.MovVendas.GetNew(document.DocTypeAbbrev, document.SectionCode); sale.Cabecalho.CodExercicio = document.FiscalYear; sale.Cabecalho.AplicacaoOrigem = "WS"; sale.Cabecalho.Data = document.Date.Date; sale.Cabecalho.DataVencimento = document.ExpirationDate; sale.Cabecalho.CodEntidade = document.EntityCode; sale.AlteraEntidade(TpEntidade.Cliente, sale.Cabecalho.CodEntidade, true, true); sale.Cabecalho.AbrevMoeda = document.CurrencyCode; sale.AlteraMoeda(document.CurrencyCode, ref byRefFalse, false); foreach (SalesLine line in document.Lines.OrderBy(p => p.LineNumber)) { itemCode = line.ItemCode; numberLine = sale.Lines.Count + 1; sale.AddLin(ref numberLine); saleLine = sale.Lines[numberLine]; saleLine.TipoLinha = TpLinha.Artigo; saleLine.CodArtigo = itemCode; sale.AlteraArtigo(numberLine, ref itemCode, ref affectsOtherLines, ref fixedAssociation, ref freeAssociation, ref searchItem, checkStock, ref stockAvailable, ref famForQty, ref famForPrice); saleLine.DescArtigo = line.ItemDescription; saleLine.Quantidade = line.Quantity; sale.AlteraQuantidade(numberLine, saleLine.Quantidade, ref affectsOtherLines, false, ref stockAvailable); saleLine.PrecoUnitario = Convert.ToDouble(line.UnitPriceExcludedVAT); sale.AlteraPrecoUnitario(numberLine, saleLine.PrecoUnitario, ref byRefFalse); saleLine.TaxaIva = Convert.ToDouble(line.VATTax); saleLine.CodTaxaIva = Eti.Aplicacao.Tabelas.TaxasIvas.GetTaxaIva(Convert.ToDecimal(saleLine.TaxaIva)); sale.AlteraTaxaIVA(numberLine, saleLine.CodTaxaIva); saleLine.Desconto1 = line.Discount1; sale.AlteraDesconto(1, numberLine, saleLine.Desconto1); saleLine.Desconto2 = line.Discount2; sale.AlteraDesconto(2, numberLine, saleLine.Desconto2); saleLine.Desconto3 = line.Discount3; sale.AlteraDesconto(3, numberLine, saleLine.Desconto3); saleLine.DescontoValorLinha = line.DiscountValue; sale.AlteraDesconto(4, numberLine, saleLine.DescontoValorLinha); } var validate = sale.Validate(true); if (validate) { var blockingStock = false; Eti.Aplicacao.Movimentos.MovVendas.Update(ref sale, ref blockingStock, true, 0, ""); } if (!string.IsNullOrEmpty(sale.EtiErrorCode)) { throw new Exception($@"ErrorCode:{sale.EtiErrorCode}{Environment.NewLine} EtiErrorDescription:{sale.EtiErrorDescription}"); } else { DocumentKey docKey = new Helpers.DocumentKey() { SectionCode = sale.Cabecalho.CodSeccao, DocTypeAbbrev = sale.Cabecalho.AbrevTpDoc, FiscalYear = sale.Cabecalho.CodExercicio, Number = sale.Cabecalho.Numero }; reportBytes = Functions.GetReportBytes(TpDocumentoAEmitir.Vendas, docKey); } return(Ok(reportBytes)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
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)); }
public IHttpActionResult GenerateOrdersSatisfaction([FromBody] MyOrderSatisfaction pOrder) { MovVenda mySale; MovVendaLin saleLine; MovEncomenda myOrder; var stockAvailable = true; var affectsOtherLines = true; var fixedAssociation = true; var freeAssociation = true; var checkStock = false; var famForQty = false; var famForPrice = false; var byRefFalse = false; TpProcuraArtigo searchItem = TpProcuraArtigo.NaoEncontrou; int numberLine; string itemCode; var errorDescription = ""; var result = new DocumentResult(); try { //Encomenda a satisfazer myOrder = Eti.Aplicacao.Movimentos.MovEncomendasCli.Find(pOrder.KeyOrder.DocTypeAbbrev, pOrder.KeyOrder.FiscalYear, pOrder.KeyOrder.Number, pOrder.KeyOrder.SectionCode); //Nova venda mySale = Eti.Aplicacao.Movimentos.MovVendas.GetNew(pOrder.DocTypeAbbrevSale, pOrder.KeyOrder.SectionCode); mySale.Cabecalho.CodExercicio = pOrder.FiscalYearSale; mySale.Cabecalho.AplicacaoOrigem = "WS"; mySale.Cabecalho.Data = pOrder.DateSale.Date; mySale.Cabecalho.DataVencimento = pOrder.ExpirationDateSale; mySale.Cabecalho.Hora = pOrder.DateSale.Date.Hour.ToString("00") + ":" + pOrder.DateSale.Date.Minute.ToString("00"); mySale.Cabecalho.CodEntidade = myOrder.Cabecalho.CodEntidade; mySale.AlteraEntidade(TpEntidade.Cliente, mySale.Cabecalho.CodEntidade, true, true); //irá satisfazer toda a encomenda. foreach (MovEncomendaLin line in myOrder.Lines) { itemCode = line.CodArtigo; numberLine = mySale.Lines.Count + 1; mySale.AddLin(ref numberLine); saleLine = mySale.Lines[numberLine]; saleLine.TipoLinha = TpLinha.Artigo; saleLine.CodArtigo = itemCode; mySale.AlteraArtigo(numberLine, ref itemCode, ref affectsOtherLines, ref fixedAssociation, ref freeAssociation, ref searchItem, checkStock, ref stockAvailable, ref famForQty, ref famForPrice); saleLine.Quantidade = line.Quantidade; mySale.AlteraQuantidade(numberLine, saleLine.Quantidade, ref affectsOtherLines, false, ref stockAvailable); saleLine.CodArmazem = line.CodArmazem; mySale.AlteraArmazem(numberLine, saleLine.CodArmazem, false, ref stockAvailable); //Tratar a questão do IVA pois os tipos de documentos podem não ter o IVA incluido saleLine.PrecoUnitario = Convert.ToDouble(line.PrecoUnitario); mySale.AlteraPrecoUnitario(numberLine, saleLine.PrecoUnitario, ref byRefFalse); //Ligar a linha da venda á encomenda, 1 linha de venda para 1 linha de encomenda var countLinIntgr = 1; mySale.SetCountLinEncomIntegr(ref numberLine, ref countLinIntgr); var numberLineIntgr = 1; saleLine.EncomIntegr(numberLineIntgr).EncomCodSeccao = pOrder.KeyOrder.SectionCode; saleLine.EncomIntegr(numberLineIntgr).EncomAbrevTpDoc = pOrder.KeyOrder.DocTypeAbbrev; saleLine.EncomIntegr(numberLineIntgr).EncomCodExercicio = pOrder.KeyOrder.FiscalYear; saleLine.EncomIntegr(numberLineIntgr).EncomNumero = pOrder.KeyOrder.Number; saleLine.EncomIntegr(numberLineIntgr).EncomNumLinha = line.NumLinha; saleLine.EncomIntegr(numberLineIntgr).QtdSatisf = line.QuantidadePend; saleLine.EncomIntegr(numberLineIntgr).QtdPendente = 0; saleLine.DocAQueReporta = pOrder.KeyOrder.DocTypeAbbrev + ' ' + pOrder.KeyOrder.SectionCode + '/' + pOrder.KeyOrder.Number.ToString(); } var validate = mySale.Validate(true); if (validate) { var blockingStock = false; Eti.Aplicacao.Movimentos.MovVendas.Update(ref mySale, ref blockingStock, true, 0, ""); } if (!string.IsNullOrEmpty(mySale.EtiErrorCode)) { result.ErrorDescription = mySale.EtiErrorDescription; } else { result = new DocumentResult() { ErrorDescription = mySale.EtiErrorDescription, DocumentKey = new Helpers.DocumentKey() { SectionCode = mySale.Cabecalho.CodSeccao, DocTypeAbbrev = mySale.Cabecalho.AbrevTpDoc, FiscalYear = mySale.Cabecalho.CodExercicio, Number = mySale.Cabecalho.Numero } }; } } catch (Exception ex) { errorDescription = string.Format("{0}.{1}.{2}", MethodBase.GetCurrentMethod().DeclaringType.FullName, MethodBase.GetCurrentMethod().Name, ex.Message); result.ErrorDescription = errorDescription; } return(Ok(result)); }