Select Git revision
0068d7a0fac0_.py
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
articles.js 1.72 KiB
import { db } from "$lib/server/database";
export function getPriceModifier(userBalance, noPremium=false){
if(noPremium===true) return ()=>0;
if (userBalance < 0) {
const debt = -userBalance;
const premium = 200 / (1 + Math.pow(Math.E, ((-debt + 2900) / 1000)));
return originalPrice=>{
if (originalPrice < 100) {
// 11% bis 200% Aufschlag
return Math.ceil(originalPrice * premium / 100);
} else {
// 0,11€ bis 2,00€ Aufschlag
return Math.ceil(premium);
}
};
}else{
return originalPrice=>{
if (userBalance < originalPrice) {
// 10%, aber maximal 0,10€ Aufschlag
return Math.min(10, Math.ceil(0.1 * originalPrice));
} else {
return 0;
}
};
}
}
export function restockArticle(code, amount, cost){
return db.item.update({
where: {code},
data: {
stock: {
increment: amount
},
restocks: {
create: {amount, cost}
}
}
});
}
export async function restockArticles(restocks){
return db.$transaction(restocks.map(({code, amount, cost})=>restockArticle(code, amount, cost)));
}
export async function createArticle(code, name, price, categoryId, image, available=true){
return db.item.create({data: {code, name, price, categoryId, image, available}});
}
export async function updateArticle(code, name, price, categoryId, image, available){
return db.item.update({where: {code}, data: {name, price, categoryId, image, available}});
}
export async function createCategory(name, position){
return db.itemCategory.create({data: {name, position}});
}
export async function updateCategory(id, name, position){
return db.itemCategory.update({where: {id}, data: {name, position}});
}
export async function deleteCategory(id){
return db.itemCategory.delete({where: {id}});
}