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.