module Handler.SupplierActions where import Import import Handler.Common import qualified Data.Text as T import Text.Blaze getSupplierActionsR :: SupplierId -> Handler Html getSupplierActionsR sId = do mSup <- runDB $ get sId case mSup of Just sup -> defaultLayout $ do setTitleI (MsgSupplierActions (supplierIdent sup)) $(widgetFile "supplierActions") Nothing -> do setMessageI MsgSupplierUnknown redirect SupplierR data BevDigest = BevDigest { bdCrates :: Int , bdTotal :: Int , bdBev :: Beverage } getSupplierDigestR :: SupplierId -> Handler Html getSupplierDigestR sId = do mSup <- runDB $ get sId case mSup of Just sup -> do master <- getYesod bevs <- runDB $ selectList [BeverageSupplier ==. (Just sId)] [Asc BeverageIdent] digests <- return $ map genBevDigest bevs w <- return $ [whamlet|$newline always

#{supplierIdent sup}
#{unTextarea $ supplierAddress sup}
#{supplierTel sup}
#{supplierEmail sup}


_{MsgCustomerId}: #{supplierCustomerId sup}

 
| _{MsgArtNr} | _{MsgName} | _{MsgVolume} | _{MsgCrateCount} | _{MsgPricePerCrate} | _{MsgTotalValue} |
|---:|---:|---:|---:|---:|---:| $forall dig <- digests $if bdCrates dig /= 0
| #{fromMaybe "" $ beverageArtNr $ bdBev dig} | #{beverageIdent $ bdBev dig} | #{formatIntVolume $ beverageMl $ bdBev dig} | #{T.pack $ show $ bdCrates dig} | #{formatIntCurrency $ fromMaybe 0 $ beveragePricePerCrate $ bdBev dig} #{appCurrency $ appSettings master} | #{formatIntCurrency $ bdTotal dig} #{appCurrency $ appSettings master} |
|  |_{MsgTotalCrates} | #{T.pack $ show $ sum $ map bdCrates digests} | _{MsgBuyValue} | #{formatIntCurrency $ sum $ map bdTotal digests} #{appCurrency $ appSettings master} | |] tableLayout w Nothing -> do setMessageI MsgSupplierUnknown redirect SupplierR -- tableLayout :: Widget -> WidgetT site0 IO () tableLayout :: WidgetT App IO () -> HandlerT App IO Markup tableLayout widget = do cont <- widgetToPageContent $ do $(combineStylesheets 'StaticR [ css_bootstrap_css , css_main_css ]) widget withUrlRenderer [hamlet|$newline never $doctype 5 ^{pageHead cont} ^{pageBody cont} |] genBevDigest :: Entity Beverage -> BevDigest genBevDigest bev = BevDigest amount (amount * (fromMaybe 0 $ beveragePricePerCrate $ entityVal bev)) (entityVal bev) where amount = if ((beverageMaxAmount (entityVal bev) - beverageAmount (entityVal bev)) `div` (fromMaybe 1 $ beveragePerCrate (entityVal bev))) < 0 then 0 else ((beverageMaxAmount (entityVal bev) - beverageAmount (entityVal bev)) `div` (fromMaybe 1 $ beveragePerCrate (entityVal bev))) getDeleteSupplierR :: SupplierId -> Handler Html getDeleteSupplierR sId = do mSup <- runDB $ get sId case mSup of Just _ -> do a <- runDB $ selectList [BeverageSupplier ==. (Just sId)] [] if null a then do runDB $ delete sId setMessageI MsgSupplierDeleted redirect SupplierR else do setMessageI MsgSupplierInUseError redirect SupplierR Nothing -> do setMessageI MsgSupplierUnknown redirect SupplierR