Formularz | Nazwa łącza formularza | Nazwa pola | Nazwa łącza pola | Typ pola |
Dostawcy | Dostawcy | Nazwa dostawcy | Dostawca_Nazwa | Nazwa |
E-mail dostawcy | Dostawca_e-mail | Email |
Klienci | Klienci | Nazwa klienta | Klient_Nazwa | Nazwa |
Email | Email klienta | Email |
Adres | Adres | Adres |
Produkty | Produkty | Nazwa produktu | Nazwa produktu | Pojedyncza linia |
Magazyn | Magazyn | Numer |
Dostawca | Dostawca | Wyszukiwanie (dostawca) |
Klienci z prośbą o uzupełnienie zapasów | Customers_With_Restock_Request | Nazwa klienta | Klient | Wyszukiwanie (klienci) |
Nazwa produktu | Produkt | Wyszukiwanie (produkty) |
Wysłany | Wysłany | Pole decyzyjne |
Liczba potrzebnych przedmiotów | Number_Of_Items_needed | Numer |
Zamówienia | Zamówienia | Nazwa klienta | Klient | Wyszukiwanie (klienci) |
Szczegóły zamówienia | Szczegóły zamówienia | Podformularz Wyszukiwanie (produkty) Numer Numer
|
2. Utwórz przepływ pracy, który będzie wyzwalany za każdym razem, gdy klient zaktualizuje pole Ilość w podformularzu formularza Zamówienia.
3. Kliknij Dodaj nową akcję i zapisz następujący fragment kodu Deluge w edytorze Deluge, aby obliczyć liczbę przedmiotów potrzebnych, jeśli klient zażądał większej liczby przedmiotów:
- //ustaw wartość Liczby potrzebnych pozycji dla bieżącego wiersza podformularza na 0
- row.Number_Of_Items_Needed=0;
- //pobrać odpowiedni rekord produktów na podstawie pola Nazwa produktu w podformularzu
- product = Products[ID == row.Products];
- //Porównaj wartość wprowadzoną przez klienta w polu Ilość z wartością Magazynu wybranego Produktu i oblicz potrzebną ilość sztuk, jeśli żądana Ilość jest mniejsza niż Zapas
- if(row.Quantity > product.Stock)
- {
- //Ostrzegaj, jeśli wartość ilości zostanie zresetowana do dostępnej wartości zapasów
- alert "Sorry, we have only " + product.Stock + " items. We will add this to your cart now. We will notify when we get the stock from our vendor.";
- row.Number_Of_Items_Needed=row.Quantity - product.Stock;
- row.Quantity=product.Stock;
- }
- //Ponownie oblicz nowe wartości całkowite
- row.Sub_Total=row.Quantity * row.Rate;
4. Utwórz kolejny przepływ pracy, który będzie wyzwalany za każdym razem, gdy rekord zostanie dodany do formularza Zamówienia (pomyślne przesłanie formularza).
5. Kliknij Dodaj nową akcję i zapisz następujący fragment kodu Deluge w edytorze Deluge, aby powiadomić interesariuszy, dostawców i klientów na podstawie liczby elementów:
Dla lepszego zrozumienia kod Deluge jest podzielony na fragmenty. Wyjaśniamy fragmenty, a następnie układamy je odpowiednio w celu wstawienia ich do Edytora Deluge.
Sprawdź w załącznikach plik z poniższymi fragmentami skonsolidowanymi w jeden działający skrypt.
Fragment a
Powiadomienie dla klientów jest oparte na wartości pola Liczba potrzebnych pozycji. Przeanalizujmy to na podstawie wartości tego pola. Jeśli wartość jest większa niż 0, do wniosku Klienci z żądaniem uzupełnienia zapasów wstawiany jest rekord z wartością Liczba potrzebnych pozycji.
- //Śledzenie uzupełnienia zapasów z prośbą o dane klienta
- //Sprawdź, czy prośba z tym samym klientem i produktem już tam jest
- customers_with_restock_request = Customers_With_Restock_Request[Products == product.ID && Customer == input.Customer && Mailed == false].count();
- if(customers_with_restock_request > 0)
- {
- //Klient, który wcześniej zgłosił prośbę
- customers_with_restock_request = Customers_With_Restock_Request[Products == product.ID && Customer == input.Customer && Mailed == false];
- customers_with_restock_request.Number_Of_Items_needed=customers_with_restock_request.Number_Of_Items_needed - row.Number_Of_Items_Needed;
- }
- else
- {
- //Nowy klient z prośbą o uzupełnienie zapasów
- insert into Customers_With_Restock_Request
- [
- Added_User=zoho.loginuser
- Customer=input.Customer
- Mailed=false
- Number_Of_Items_needed=row.Number_Of_Items_Needed
- Products=row.Products
- ]
- }
Fragment b
Dostawca zostanie wysłany e-mailem z zaznaczeniem tego, a pole Magazyn odpowiedniego rekordu produktów jest ustawione na 0.
- //Wyślij e-mail do dostawcy
- sendmail
- [
- from :zoho.adminuserid
- to :vendor.Email
- subject :"Out Of Stock"
- message :"<div><div>Hi, " + vendor.Vendor_Name + ",<br></div><div><br></div><div>Recently our product, " + product.Product_Name + " has gone out of stock. Kindly restock.<br></div><div><br></div><div>Thank you.<br></div><div><br></div></div><div><br></div>"
- ]
- //Ustaw pole Magazyn odpowiedniego rekordu produktów na 0
- product.Stock=0;
Fragment c
Jeśli żądanie klienta jest znacznie poniżej wartości zapasów w rekordzie produktów, dodamy wiersz i zaktualizujemy wartość zapasów. Aktywnie wysyłamy e-mail do dostawcy, jeśli zapas spadnie poniżej wartości progowej, powiedzmy 50 pozycji.
- //Oblicz nowe zapasy
- product.Stock=product.Stock - row.Quantity;
- //Wysyłaj pocztę, gdy liczby spadną poniżej 50
- if(product.Stock <= 50)
- {
- sendmail
- [
- from :zoho.adminuserid
- to :vendor.Email
- subject :product.Product_Name + " is running out!"
- message :"<div><div>Hi, " + vendor.Vendor_Name + ",<br></div><div><br></div><div>Recently our product, " + product.Product_Name + " is being most sought after, that we are running out of it. Only " + product.Stock + " remain! Kindly restock.<br></div><div><br></div><div>Thank you.<br></div><div><br></div></div><div><br></div>"
- ]
- }
Fragment d
Teraz połączymy Snippet a, Snippet b i Snippet c; fragmenty muszą być zapętlone przez łączną liczbę wierszy wstawionych do podformularza. Rekordy Produkty i Dostawcy są znalezione po pobraniu na podstawie wartości wybranej w wierszu podformularza.
- //Przypisz podformularz bieżącego rekordu do zmiennej
- subform = input.Inline_Subform;
- for each row in subform
- {
- //Pobierz odpowiedni produkt
- product = Products[ID == row.Products];
- //Zdobądź dostawcę
- vendor = product.Vendor;
- if(row.Number_Of_Items_Needed > 0)
- {
- //Wstaw fragment a i b
- }
- else
- {
- //Wstaw fragment c
- }
- }
6. Utwórz przepływ pracy w formularzu produktu, po pomyślnym przesłaniu formularza, gdy rekord produktu jest edytowany.
7. Kliknij Dodaj nową akcję i zapisz następujący fragment kodu potopu w edytorze potopu, aby wysłać e-mail do klientów, odpowiednio dla pomyślnie zaktualizowanego pola Stock:
- //Przypisywanie tematu i wiadomości do wysłania e-maila do klientów
- subject = "";
- message = "";
- if(input.Stock > 0)
- {
- //Ten warunek gwarantuje, że wysyłka dotyczy tylko uzupełnienia zapasów
- //Wysyłaj wiadomości tylko do tych klientów, którzy poprosili o ten produkt
- for each customer in Customers_With_Restock_Request[Products == input.ID && Mailed == false]
- {
- //Sprawdź, czy pozycje żądania uzupełnienia zapasów przez klienta są równe zaktualizowanym zapasom i wyślij odpowiednio
- if(customer.Number_Of_Items_needed <= input.Stock)
- {
- subject = input.Product_Name + " is now re-Stocked!";
- message = "<div>Hello<br></div><div><br></div><div>" + input.Product_Name + " is now restocked with " + input.Stock + " items. Order now!</div>";
- //Oznacz je jako wysłane, aby powstrzymać się od spamowania
- customer.Mailed=true;
- }
- else
- {
- //Wysłać wiadomość, gdy liczba artykułów uzupełniających jest mniejsza niż żądana przez klienta
- subject = input.Product_Name + " is re-Stocked, but...";
- message = "<div>Hello<br></div><div><br></div><div>" + input.Product_Name + " is now restocked with " + input.Stock + " items. We know you had asked for " + customer.Number_Of_Items_needed + " items. We were able to procure a lesser number. Sorry! We will notify when we get the remaining items!</div>";
- }
- sendmail
- [
- from :zoho.adminuserid
- to :customer.Customer.Email
- subject :subject
- message :message
- ]
- //Ponieważ klient powinien zostać ponownie wysłany, Mailed nie jest aktualizowany
- }
- }
Zobacz jak to działa