From fe452d359ff0ddb1a4ec3ec4713cde8173b625dd Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Mon, 11 May 2015 11:35:24 +0200 Subject: [PATCH] added orders to confirm report / phone allows more digits now / added reports to rails admin navigation --- .../app/controllers/reports_controller.rb | 6 +- back-office/app/helpers/application_helper.rb | 2 + back-office/app/models/cart.rb | 3 + back-office/app/models/item.rb | 63 ++- back-office/app/models/place.rb | 522 ++++++++++++++++++ .../views/reports/orders_to_confirm.html.erb | 61 ++ .../config/initializers/rails_admin.rb | 5 + front-api/models/item.rb | 2 + front-api/models/item_in_group.rb | 2 + front-ui/app/components/cart/checkoutPage.js | 10 +- front-ui/app/stores/cartStore.js | 4 +- 11 files changed, 661 insertions(+), 19 deletions(-) create mode 100644 back-office/app/views/reports/orders_to_confirm.html.erb diff --git a/back-office/app/controllers/reports_controller.rb b/back-office/app/controllers/reports_controller.rb index 81996e0..7bbaccb 100644 --- a/back-office/app/controllers/reports_controller.rb +++ b/back-office/app/controllers/reports_controller.rb @@ -1,9 +1,11 @@ -class ReportsController < ApplicationController - +class ReportsController < ApplicationController def items_to_order @report = Item.items_to_order end + def orders_to_confirm + @report = Item.orders_to_confirm + end end \ No newline at end of file diff --git a/back-office/app/helpers/application_helper.rb b/back-office/app/helpers/application_helper.rb index de6be79..8a9a7af 100644 --- a/back-office/app/helpers/application_helper.rb +++ b/back-office/app/helpers/application_helper.rb @@ -1,2 +1,4 @@ module ApplicationHelper + + end diff --git a/back-office/app/models/cart.rb b/back-office/app/models/cart.rb index 5322588..fc67258 100644 --- a/back-office/app/models/cart.rb +++ b/back-office/app/models/cart.rb @@ -4,4 +4,7 @@ class Cart < ActiveRecord::Base belongs_to :user belongs_to :delivery_destination + + + end diff --git a/back-office/app/models/item.rb b/back-office/app/models/item.rb index 62110b2..bf2b2e1 100644 --- a/back-office/app/models/item.rb +++ b/back-office/app/models/item.rb @@ -5,20 +5,20 @@ class Item < ActiveRecord::Base belongs_to :supplier belongs_to :brand belongs_to :delivery_time_estimation - + validates_presence_of :name, :description, :list_price, :current_input_price, :tags, :unit_id, :code, :sub_category_id, :weight, :supplier_id def self.items_to_order - items_raw = Item.find_by_sql(%Q{ - select s.id as supplier_id, i.code as code, i.name as name, sum(iic.count) amount, i.current_input_price - from carts c - left join item_in_carts iic on iic.cart_id = c.id - left join items i on i.id = iic.item_id - left join suppliers s on i.supplier_id = s.id - where c.confirmed and not (c.packed or c.delivered) - group by s.id, i.name, i.code, i.current_input_price - order by s.name, amount desc; + items_raw = Item.find_by_sql(%Q{ + select s.id as supplier_id, i.code as code, i.name as name, sum(iic.count) amount, i.current_input_price + from carts c + left join item_in_carts iic on iic.cart_id = c.id + left join items i on i.id = iic.item_id + left join suppliers s on i.supplier_id = s.id + where c.confirmed and not (c.packed or c.delivered) + group by s.id, i.name, i.code, i.current_input_price + order by s.name, amount desc; }) items_sorted = {} @@ -35,6 +35,7 @@ class Item < ActiveRecord::Base complete_sum = 0 suppliers_sorted.each_pair do |key, value| + rep_sec = OpenStruct.new # report section rep_sec.supplier = value rep_sec.items = items_sorted[key] @@ -54,4 +55,46 @@ class Item < ActiveRecord::Base end + def self.orders_to_confirm + items_raw = Item.find_by_sql(%Q{ + select dd.*, c.id as order_id,i.code as code, i.name as item, iic.count as amount , i.list_price, iic.count * i.list_price as sum_price + from carts c + left join delivery_destinations dd on c.delivery_destination_id = dd.id + left join item_in_carts iic on iic.cart_id = c.id + left join items i on i.id = iic.item_id + + where c.ordered and not(c.canceled_on_check or c.canceled_on_delivery or c.confirmed or c.packed or c.delivered) + order by + c.created_at, iic.created_at; + }) + + items_sorted = {} + + items_raw.each do |item| + items_sorted[item.phone] ||= [] + items_sorted[item.phone] << item + end + + sections = [] + complete_sum = 0 + + items_sorted.each_pair do |key,values| + section = OpenStruct.new + section.delivery_destination = values.first + section.sum_amount = 0 + section.items = [] + values.each do |item| + section.sum_amount += item.sum_price + complete_sum += item.sum_price + section.items << item + end + sections << section + end + full_report = OpenStruct.new + full_report.sections = sections + full_report.full_sum = complete_sum + + return full_report + end + end diff --git a/back-office/app/models/place.rb b/back-office/app/models/place.rb index 8d92248..28f3f80 100644 --- a/back-office/app/models/place.rb +++ b/back-office/app/models/place.rb @@ -1,2 +1,524 @@ class Place < ActiveRecord::Base + + + def self.name_from_code(code) + places_bulk = %Q{Aleksandrovac 78255 + Avtovac 89245 + Balatun 76310 + Banja Luka 78000 + Banovici 75290 + Batkovic 76312 + Begov Han 72233 + Berkovici 88363 + Bihac 77000 + Bijela 76204 + Bijeljina 76300 + Bijelo Brdo 73263 + Bileca 89230 + Biljesevo 72248 + Bjelimici 88407 + Blagaj 88201 + Blatnica 74275 + Blatnica Kod Mostara 88263 + Blazuj 71215 + Bok 76277 + Boljanic 74322 + Bosanska Krupa 77240 + Bosanski Petrovac 77250 + Bosansko Grahovo 80270 + Bradina 88408 + Bratunac 75420 + Brcko 76000 + Brcko Distrikt 76100 + Brekovica 77205 + Brestovo 74210 + Brestovsko 71255 + Breza 71370 + Brezicani 79208 + Brezik 76109 + Brezovo Polje 76216 + Brijesnica 74206 + Brijesnica Kod Doboja 74206 + Brijesnica Mala 74206 + Brijesnica Velika 74206 + Brka 76206 + Brnjic 72243 + Brocanac 88243 + Brocanac 88243 + Brod Kod Foce 73309 + Brodac 76313 + Bronzani Majdan 78204 + Bucici 72290 + Bugojno 70230 + Bukinje 75203 + Buletic 74277 + Buna 88202 + Busovaca 72260 + Buturovicpolje 88409 + Buzim 77245 + Cajnice 73280 + Caparde 75405 + Capljina 88300 + Cardak 72224 + Careva Cuprija 71347 + Catici 72246 + Cazin 77220 + Cecava 74274 + Celebici 88404 + Celebici Lusnic 80203 + Celebici Kod Foce 73307 + Celic 75246 + Celinac 78240 + Cemerno 89243 + Cerin 88265 + Cerovica 74211 + Cerovljani 78403 + Citluk 88260 + Coralici 77226 + Crkvina 76239 + Crnici 88367 + Crnjelovo 76328 + Dejcici 71221 + Demirovac 79243 + Derventa 74400 + Derventa Kod Vlasenice 75444 + Divin 89233 + Doboj 74000 + Doboj Istok 74206 + Doboj Jug 74203 + Doborovci 75328 + Dobosnica 75308 + Dobretici 77210 + Dobrinja 71245 + Dobrljin 79223 + Dobro Selo 77242 + Dobrun 73247 + Dokanj 75206 + Dolac Na Lasvi 72278 + Domaljevac 76233 + Domanovici 88305 + Donja Mahala 76274 + Donja Medjidja 76257 + Donja Slatina 76327 + Donje Mostre 71305 + Donji Agici 79228 + Donji Memici 88343 + Donji Vakuf 70220 + Donji Vijacani 78432 + Donji Vrbljani 79289 + Donji Zabar 76273 + Dragaljevac 76323 + Dragalovci 74209 + Dragocaj 78215 + Dreznica 88215 + Drinjaca 75410 + Drinovci 88344 + Drvar 80260 + Duboki Potok 75358 + Dubostica 75308 + Dubrave 78411 + Dubrave Donje 75274 + Dubrave Gornje 75273 + Dubrovik 79227 + Dugo Polje 74483 + Djurdjevik 75272 + Dusanovo 75445 + Duzice 88342 + Dvorovi 76311 + Fajtovci 79264 + Foca 73300 + Fojnica 71270 + Fojnica Kod Gacka 89247 + Gabela Polje 88306 + Gacko 89240 + Glamoc 80230 + Glavicice 76318 + Globarica 72230 + Gojevici 71275 + Gorazde 73000 + Gorica 88340 + Gornja Koprivna 77222 + Gornja Slatina 76238 + Gornja Tuzla 75208 + Gornji Kamengrad 79266 + Gornji Podgradci 78405 + Gornji Rahic 76207 + Gornji Strpci 78439 + Gornji Teslic 74272 + Gornji Vakuf Uskoplje 70240 + Gornji Zovik 76207 + Grab 89201 + Grabovica 78227 + Gracanica 75320 + Gracanica Kod Bugojna 70233 + Gracanica Selo 75276 + Gradac 88392 + Gradacac 76250 + Gradiska 78400 + Grude 88340 + Guber 80205 + Listani 80204 + Guca Gora 72277 + Hadzici 71240 + Hajdarevici 72225 + Haljinici 72245 + Han Bila 72281 + Han Pijesak 71360 + Hrasnica 71212 + Hrasno 88395 + Hresa 71144 + Hrvacani 78436 + Husino 75216 + Hutovo 88394 + Ilidza 71210 + Ilijas 71380 + Ilovaca 73208 + Imljani 78234 + Izacic 77208 + Jablanica 88420 + Jahorina 71423 + Jajce 70101 + Janja 76316 + Janjici 72215 + Jare 88224 + Javorani 78233 + Jelah 74264 + Jezerski 77241 + Johova 79244 + Josanica 73319 + Josavka 78244 + Kacuni 72264 + Kakanj 72240 + Kalenderovci 74413 + Kalesija 75260 + Kalinovik 71230 + Kamenica 77204 + Kaonik 72265 + Kasindo 71213 + Kazaginac 80246 + Kifino Selo 88283 + Kiseljak 71250 + Kiseljak, Kod Tuzle 75211 + Kladanj 75280 + Klakar Donji 74452 + Kljuc 79280 + Klobuk 88324 + Klokotnica 74207 + Knezevo 78230 + Skender Vakuf 78230 + Knezica 79246 + Knezina 71356 + Kobas 78423 + Kocerin 88226 + Kocicevo 78409 + Kola 78207 + Kongora 80244 + Konjic 88400 + Konjoder 77249 + Koprivna 74489 + Koraj 75247 + Kornica 76236 + Kosova 74253 + Kostric 76276 + Kotor Varos 78220 + Kotorsko 74215 + Kovaci 72226 + Kozarac 79002 + Bosanska Dubica 79240 + Kozluk 75413 + Kraljeva Sutjeska 72244 + Kresevo 71260 + Kriskovci 78256 + Krupa Na Vrbasu 78206 + Krusevo 88203 + Kukulje 78424 + Kula 71216 + Kulasi 78443 + Kulen Vakuf 77206 + Kupres 80320 + Laktasi 78250 + Laminci Sredjani 78407 + Lamovita 79204 + Lastva 89208 + Lasva 72216 + Liplje 78222 + Lipnica 75213 + Lisnja 78434 + Livno 80101 + Ljubace 75214 + Ljubija 79206 + Ljubinje 88380 + Ljubomir 89209 + Ljubuski 88320 + Ljuti Dolac 88223 + Loncari 76278 + Lopare 75240 + Lukavac 75300 + Lukavac Mjesto 75301 + Lukavica 75327 + Lusci Palanka 79267 + Maglaj 74250 + Majevac 74216 + Mala Kladusa 77235 + Mala Socanica 74418 + Malesici 75320 + Maoca 76208 + Masici 78410 + Maslovare 78223 + Matici 76271 + Matuzici 74203 + Medjugorje 88266 + Medjuvodje 79247 + Mehurici 72282 + Mesihovina 80243 + Milici 75446 + Miljeno 73283 + Miljevina 73313 + Milosevac 74485 + Miricina 75329 + Modrica 74480 + Mokro 71428 + Mosko 89204 + Mostar 88000 + Mostar, Jug 88000 + Mostar, Jugozapad 88000 + Mostar, Sjever 88000 + Mostar, Zapad 88000 + Mramor 75212 + Mravinjac 73206 + Mrkodol 79544 + Mrkonjic Grad 70260 + Nemila 72212 + Neum 88390 + Nevesinje 88280 + Nova Bila 72276 + Nova Topola 78418 + Bosanski Novi 79220 + Novi Seher 74254 + Novi Travnik 72290 + Nozicko 78428 + Oborci 70225 + Obudovac 76235 + Odzak 76290 + Vukosavlje 74470 + Odzak Kod Nevesinja 88285 + Olovo 71340 + Omarska 79203 + Orahova 78406 + Orahovica Donja 75323 + Orasje 76270 + Osinja 74412 + Osjecani 74225 + Osmaci 75406 + Ostra Luka 79263 + Ostrozac 88423 + Ostrozac Kod Cazina 77228 + Otoka 77244 + Ozimica 72238 + Palackovci 78437 + Pale 71420 + Papraca 75435 + Pazaric 71243 + Pecigrad 77227 + Pelagicevo 76256 + Perin Han 72112 + Petrovo 74317 + Pilica 75412 + Piskavica 78217 + Pocitelj 88305 + Poculica 72252 + Podgrab 71425 + Podhum 80209 + Podlugovi 71387 + Podnovlje 74217 + Podorasje Kod Srebrenika 75355 + Podzvizd 77232 + Poljice 75303 + Popovi 75320 + Posusje 88240 + Potkozarje 78216 + Potocani 78435 + Potoci 88208 + Praca 73290 + Prelovo 73245 + Previja 79287 + Pribinic 74276 + Priboj Kod Lopara 75249 + Prijedor 79101 + Priluka 80202 + Prisoje 80245 + Prnjavor 78430 + Prolog 80206 + Prozor 88440 + Prusac 70223 + Przici 71335 + Puhovac 72207 + Puracic 75305 + Radisici 88325 + Rainci Gornji 75268 + Rakitno 88245 + Rakovica 71217 + Rasko Polje 80247 + Razboj Lijevce 78429 + Razljevo 76218 + Ribnik 79288 + Ripac 77215 + Rogatica 73220 + Rudice 79226 + Rudo 73260 + Ruzici 88347 + Bosanski Samac 76230 + Sanica Gornja 79285 + Sanski Most 79260 + Sapna 75411 + Saracica 78202 + Sarajevo 71000 + Sarajevo, Centar 71103 + Sarajevo, Novi Grad 71160 + Sarajevo, Novo Sarajevo 71120 + Sarajevo, Stari Grad 71140 + Satorovici 76209 + Sekovici 73305 + Sekovici 75450 + Semizovac 71321 + Seonjaci 76205 + Serici 75275 + Sibosnica 75245 + Sibovska 78433 + Simin Han 75207 + Sipovo 78364 + Siprage 78224 + Siroki Brijeg 88220 + Sitnesi 78422 + Sitnica 79283 + Skelani 75436 + Skugric 74261 + Sladna 75353 + Slatina Ilidza 78253 + Smrtici 78438 + Snjegotina Gornja 74279 + Sockovac 74323 + Sokolac 71350 + Sokolovici 71210 + Sovici 88345 + Spionica 75356 + Srbac 78420 + Srebrenica 75430 + Srebrenik 75350 + Srednje 71385 + Sreflije 79249 + Srnice 76258 + Bosanska Kostajnica 79224 + Bosanski Brod 74450 + Istocno Gorazde 73110 + Istocno Orasje 76278 + Istocno Sarajevo 71123 + Stanari 74208 + Stara Dubrava 78243 + Stari Majdan 79268 + Stijena 77224 + Stjenice 73223 + Stjepan Polje 75324 + Stolac 88360 + Stranjani 72209 + Stricici 78208 + Strpci 75305 + Studenci 88323 + Stupari 75283 + Sturlic 77223 + Suho Polje 75344 + Sujica 80249 + Svodna 79229 + Tarcin 71244 + Teocak 75414 + Tesanj 74260 + Tesanjka 74266 + Teslic 74270 + Tihaljina 88348 + Tinja 75357 + Tisca 75455 + Todorovo 77233 + Tojsici 75265 + Tolisa 76272 + Tomina 79265 + Tomislavgrad 80240 + Topcic Polje 72213 + Travnik 72270 + Trebinja 88375 + Trebinje 89000 + Trn 78252 + Trnava Donja 76335 + Trnjaci 76310 + Trnovo 71220 + Trzacka Rastela 77225 + Turbe 72283 + Turija 75306 + Turjak Kod Bosanske Gradiske 78404 + Tuzla 75000 + Ugljevik 76330 + Ugodnovici 74278 + Ulog 71233 + Usora 74230 + Ustikolina 73250 + Uvac 73265 + Vardiste 73249 + Vares 71330 + Varoska Rijeka 77245 + Velika Bukovica 74213 + Velika Gata 77207 + Velika Kladusa 77230 + Velika Obarska 76329 + Vidosi 88208 + Vidovice 76275 + Vinac 70202 + Vir Kod Posusja 88247 + Visegrad 73240 + Visici 88307 + Visoko 71300 + Vitez 72250 + Vitina 88326 + Vitkovci Donji 74265 + Vitkovici 73205 + Vlasenica 75440 + Vogosca 71320 + Vojkovici 71123 + Voljevac 70246 + Vozuca 72227 + Vranjak 74488 + Vrapcici 88113 + Vrazici 75248 + Vrbanja Kod Banja Luke 78211 + Vrbanjci 78225 + Vrbaska 78408 + Vrnograc 77231 + Vrsani 76325 + Vrsta 77203 + Vuckovci 76254 + Vukosavlje 74470 + Zabar Donji 76273 + Zaborak 73287 + Zabrdje 72220 + Zabrdje 76333 + Zabrdje Kod Kotor Varosi 78221 + Zaluzani 78214 + Zavidovici 72220 + Zboriste 74451 + Zelinja 76259 + Zeljezno Polje 72236 + Zenica 72000 + Zepce 72230 + Zitomislici 88268 + Zivinice 75270 + Zupca 71370 + Zvornik 75400} + + separator = /(.*)\s(\d{5})/ + places = places_bulk.split("\n") + places.each do |place| + matches = separator.match(place) + return matches[1].strip if matches and matches[2] === code + end + + return ""; + end end diff --git a/back-office/app/views/reports/orders_to_confirm.html.erb b/back-office/app/views/reports/orders_to_confirm.html.erb new file mode 100644 index 0000000..b9b599d --- /dev/null +++ b/back-office/app/views/reports/orders_to_confirm.html.erb @@ -0,0 +1,61 @@ + +
<%= "report is nil" if @report.nil? %>
+ + +<% unless @report.nil? %> +<% @report.sections.each do |section| %> +
+ + +
+ + <% unless section.delivery_destination.nil? %> +
<%= section.delivery_destination.name %>
+
<%= section.delivery_destination.address %>
+
<%= section.delivery_destination.place %> <%= Place.name_from_code(section.delivery_destination.place) %>
+
<%= section.delivery_destination.email %>
+
<%= section.delivery_destination.phone %>
+ +<% end %> + + +

+ + + + + + + + + + <% section.items.each do |item| %> + + + + + + + + <% end %> + + +
CodeItem nameAmountPriceTotal
<%= item.code %><%= item.name %><%= item.amount %><%= item.list_price %><%= item.sum_price %>
Total for cart: <%= section.sum_amount %>
+ +

+ + +
+ +
Update Order
+ + <% end %> + +Total: <%= @report.full_sum %> + + +<% end %> diff --git a/back-office/config/initializers/rails_admin.rb b/back-office/config/initializers/rails_admin.rb index ca52321..c7034d3 100644 --- a/back-office/config/initializers/rails_admin.rb +++ b/back-office/config/initializers/rails_admin.rb @@ -31,4 +31,9 @@ RailsAdmin.config do |config| # history_index # history_show end + + config.navigation_static_links = { + 'Orders to Confirm' => '../reports/orders_to_confirm', + 'Items to Order' => '../reports/items_to_order' + } end diff --git a/front-api/models/item.rb b/front-api/models/item.rb index 087ab53..700b386 100644 --- a/front-api/models/item.rb +++ b/front-api/models/item.rb @@ -4,6 +4,8 @@ class Item < ActiveRecord::Base has_many :multi_media_descriptions belongs_to :sub_category + + has_many :item_in_groups has_many :item_groups, through: :item_in_groups diff --git a/front-api/models/item_in_group.rb b/front-api/models/item_in_group.rb index e4e79de..5faaf4d 100644 --- a/front-api/models/item_in_group.rb +++ b/front-api/models/item_in_group.rb @@ -1,4 +1,6 @@ class ItemInGroup < ActiveRecord::Base belongs_to :item_group belongs_to :item + + end diff --git a/front-ui/app/components/cart/checkoutPage.js b/front-ui/app/components/cart/checkoutPage.js index 4c7591e..13bdb0c 100644 --- a/front-ui/app/components/cart/checkoutPage.js +++ b/front-ui/app/components/cart/checkoutPage.js @@ -469,9 +469,9 @@ var CheckoutPage = React.createClass({ - - - + + + @@ -578,8 +578,8 @@ var CheckoutPage = React.createClass({
- 06 - + +387 +

broj mobitela - mora biti sa jedne od mreža u BiH

diff --git a/front-ui/app/stores/cartStore.js b/front-ui/app/stores/cartStore.js index 8fab47a..7659d05 100644 --- a/front-ui/app/stores/cartStore.js +++ b/front-ui/app/stores/cartStore.js @@ -156,7 +156,7 @@ var validateDeliveryDestinationForm = function() { _deliveryDestinationErrors['email'] = "Email mora biti ispravno upisan"; } - var phoneRegex = /[\d\s-]{7,8}/i; + var phoneRegex = /[\d\s-]{8,12}/i; if (Validation.safeString(_deliveryDestination.get('phone')).search(phoneRegex) < 0) { _deliveryDestinationErrors['phone'] = "Telefon mora biti ispravan"; } @@ -261,7 +261,7 @@ AppDispatcher.register(function(payload) { takeItemOut(action.itemId); break; case CartConstants.CART_DATA_LOADED: - // do nothing - jsut emmit change + // do nothing - just emmit change break; case CartConstants.SAVE_CART_STATE_FOR_ITEM: if (isDeliveryDestinationValid()) {