public IActionResult UpdCabecera([FromBody] Document header, bool insertIfNoExists = false) { return(Ok(hBS.Update(header, insertIfNoExists))); }
public void RecepcionMercancia(Document oOrder, DateTimeOffset albaranDate, bool nonConform) { //Comprobamos los precios de los productos con la fecha del albaran UpdateProductPrice(oOrder.Lines, oOrder.BuyFromVendorNo, albaranDate); //TODO Cuando el usuario valide la información, el sistema comprobará que existe el número de albarán y la fecha del albarán en la cabecera del pedido o lo solicitará AlbaranCompra oAlbaran = new AlbaranCompra() { Amount = oOrder.Amount, BuyFromAddress = oOrder.BuyFromAddress, BuyFromAddress2 = oOrder.BuyFromAddress2, BuyFromCity = oOrder.BuyFromCity, BuyFromContact = oOrder.BuyFromContact, BuyFromCounty = oOrder.BuyFromCounty, BuyFromPostCode = oOrder.BuyFromPostCode, BuyFromVendorName = oOrder.BuyFromVendorName, BuyFromVendorName2 = oOrder.BuyFromVendorName2, BuyFromVendorNo = oOrder.BuyFromVendorNo, OrderDate = oOrder.OrderDate, PostingDate = albaranDate, ShortcutDimension1Code = oOrder.Centro, ShortcutDimension2Code = oOrder.Zona, VendorShipmentNo = oOrder.VendorShipmentNo, OrderNo = oOrder.No.ToString(), No = "A" + oOrder.No,//añadir numerico NonConform = nonConform }; //Creamos el albaran compra Update(oAlbaran, true); //Actualizamos la cantidad recibida de las lineas decimal?totalQuantity = 0; foreach (Line line in oOrder.Lines) { line.OutstandingQuantity -= line.QuantityReceived; line.Product.StockActual = line.OutstandingQuantity; totalQuantity += line.OutstandingQuantity; //Añadimos el stock al producto prBS.Update(line.Product); AlbaranLinea oAlbaranLinea = new AlbaranLinea() { AlbaranCompraNo = oAlbaran.No, Amount = line.Amount, AmountIncludingVAT = line.AmountIncludingVAT, Description = line.Description, DirectUnitCost = line.DirectUnitCost, ExpectedReceiptdate = line.ExpectedReceiptDate, LineDiscount = line.LineDiscount, OrderLineNo = line.LineNo.ToString(), OrderNo = line.DocumentNo.ToString(), ProductNo = line.No, Quantity = line.Quantity, QuantityReceived = line.QuantityReceived, UnitOfMeasure = line.UnitOfMeasure, VAT = line.VAT, //Comprobamos que la cantidad recibida es mayor o inferior a la pedida ExcessReception = CalculateExcessReception(line) }; //POnemos a 0 la cantidad recibida de la linea line.QuantityReceived = 0; //Actualizamos la linea ResultAndError <Line> oLine = iBS.Update(line); //Creamos el albaranlinea ResultAndError <AlbaranLinea> albaranLinea = aBS.Update(oAlbaranLinea, true); } //TODO Si la cantidad pendiente de todas las líneas del pedido no es cero después de crear el albarán, el sistema dejará el pedido como pendiente, y en el caso de que no vaya a recibirla, el usuario podrá cerrar el pedido, llevándolo entonces al histórico de pedidos. if (totalQuantity == 0) { //Si el total es 0 mandamos el pedido a historico hBS.CloseOrder(oOrder); } else { //Si no es 0 dejamos el pedido como pendiente y dejamos que el usuario decida si cerrarlo o no oOrder.Estado = 0; hoBS.Update(oOrder); } }