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}
#{unTextarea $ supplierAddress sup}
#{supplierTel sup}
#{supplierEmail 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 |