= Ogłoszenia gazetowe = == Podział wg rodzaju klienta == === Klient bez abonamentu === 1. Płatność online Klient zamawia ogłoszenia do gazety za pomocą systemu zamawiania, dodaje ogłoszenia do koszyka i płaci za zamówienie online. W tej sytuacji mamy zapłacone zamówienie, które zawiera ogłoszenia z dodatkiem gazetowym, które powinno się ukazać w następnym wydaniu gazety. 2. Płatność za pomocą kredytu kupieckiego Klient posiada pewien kredyt do wykorzystania na zamówienie produktów w systemie zamawiania. Gdy wartość zamówienia nie przekracza wysokości kredytu kupieckiego klient nie musi płacić online za takie zamówienie, może zapłacić przelewem w późniejszym terminie. Wówczas tworzymy zamówienie, które zawiera ogłoszenia z dodatkiem gazetowym, które powinno się ukazać w następnym wydaniu gazety. === Klient z abonamentu === W tym przypadku nie mamy do czynienia z koszykiem, mamy za to aktywny abonament, w ramach którego klient może dodawać ogłoszenia. Każde z ogłoszeń abonamentowych może mieć dodany pakiet gazetowy. Za pakiet gazetowy klient powinien zapłacić dodatkowo. Podczas generowania (na żądanie) ogłoszeń gazetowych powinniśmy dla każdego klienta posiadającego abonament i aktywne ogłoszenia z dodatkiem gazetowym: * utworzyć zamówienie na ogłoszenia gazetowe, ale tylko wtedy gdy wartość tego zamówienia nie przekracza wysokości kredytu kupieckiego * w przypadku gdy wartość zamówienia przekracza wysokość kredytu kupieckiego wysyłamy maila klientowi z informacją, że jego ogłoszenia gazetowe się nie ukażą w najnowszym wydaniu, bo ma jakieś zaległości lub wartość zamówienia przekracza dopuszczalny kredyt kupiecki. * tylko te ogłoszenia, dla których zostały utworzone zamówienia przekazujemy do produkcji gazety === Generowanie === Funkcja generująca ogłoszenia do gazety powinna posiadać przynajmniej jeden parametr: * generateOrders [true, false] Jeśli 'true' to wtedy powinny być utworzone zamówienia oraz wysłane maile do klientów. Jeśli 'false' to zwracamy tylko ogłoszenia z dodatkiem gazetowym, które są aktualnie online. Funkcja z parametrem 'generateOrders = true' powinna zostać wywołana tylko raz na dane wydanie.