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
| |
---|