module Handler.SupplierActions where import Import import Handler.Common import qualified Data.Text as T getSupplierActionsR :: SupplierId -> Handler Html getSupplierActionsR sId = do mSup <- runDB $ get sId case mSup of Just sup -> defaultLayout $ $(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}_{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 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 sup -> 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 |