public IExtendedMaterialModel ProcessMaterialEditRequest(int?materialId, string name, string nominalAmountText, int materialInventoryId, bool automaticBatches, bool requiresPrice, bool requiresProductionPrice, bool requiresIncvoice, bool requiresSupplierReference, bool autofinalize, bool canBeDigital, IEnumerable <string> components, string thresholdText ) { name = name?.Trim(); if (string.IsNullOrWhiteSpace(name)) { throw new InvalidOperationException("Materiál musí mít název"); } if (string.IsNullOrWhiteSpace(nominalAmountText)) { throw new ArgumentException("Materiál musí mít vlastní množství a jednotku"); } var nominalAmountEntry = MaterialEntry.Parse(nominalAmountText, true); var nominalUnit = ValidateAmountUnit(nominalAmountEntry); using (var tx = m_database.OpenTransaction()) { var material = m_materialRepository.UpsertMaterial( materialId, name, nominalAmountEntry.Amount, nominalUnit.Id, materialInventoryId, automaticBatches, requiresPrice, requiresProductionPrice, requiresIncvoice, requiresSupplierReference, autofinalize, canBeDigital); if (thresholdText == null) { m_materialThresholdRepository.DeleteThreshold(material.Id); } else { try { var thresholdEntry = MaterialEntry.Parse(thresholdText, true); var thresholdUnit = m_unitRepository.GetUnitBySymbol(thresholdEntry.UnitName); if (thresholdUnit == null) { throw new InvalidOperationException($"Neznámý symbol jednotky \"{thresholdEntry.UnitName}\""); } m_materialThresholdRepository.SaveThreshold(material.Id, thresholdEntry.Amount, thresholdUnit.Id); } catch (Exception ex) { throw new InvalidOperationException($"Nelze nastavit sledování minimálního množství - {ex.Message}", ex); } } tx.Commit(); m_virtualProductRepository.CleanCache(); m_materialRepository.CleanCache(); return(m_materialRepository.GetMaterialById(material.Id)); } }
public void DeleteVirtualProduct(int vpId) { m_virtualProductRepository.DeleteVirtualProduct(vpId); m_materialRepository.CleanCache(); }