|
|
(13 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| <html> | | <html> |
| <h5> <strong> We create an openDocument report and fill it with data. Also some tips and tricks on | | <h4> |
| | We created an openDocument report and filled it with data. Also, here are some tips and tricks on how to get help in constructing OCL |
| | expressions and seeing crossreferences where things are used throughout the model. |
| | </h4> |
|
| |
|
| how to get help in constructing ocl expressions and how to see cross reference
| | <p class="video-warn"> |
| | | <em>To make your experience smooth, we set the main tags mentioned in the video to the right bar menu of this mini-player. Choose an interesting subtitle on the list and immediately get to the exact theme navigation item place in the video. Now you can pick any topic to be instructed on without watching the whole video.</em> |
| where things are used throughout the model </strong> </h5>
| |
| | |
| <p> | |
| <em>To make your experience more comfortable, we set the main tags mentioned in the video to the right bar menu of this mini player. Choose the interesting subtitle on the list and immediately get to the exact theme timeplace in the video. Now you can pick any topic to be instructed without watching the whole video.</em> | |
| <style type="text/css">
| |
| p {
| |
| opacity: 0.7;
| |
| text-align: justify;
| |
| width: 90%
| |
| }
| |
| </style>
| |
| </p> | | </p> |
|
| |
|
| <style> | | <div class="video"> |
| #video12 {
| | <div class="video__wrapper"> |
| position: relative;
| | <iframe src="https://www.youtube.com/embed/PbprP4RR19U?rel=0&autoplay=0" frameborder="0" allowfullscreen></iframe> |
| height: 500px;
| | </div> |
| width:560px;
| | <div class="video__navigation"> |
| padding-bottom: 10px;
| | <span class="navigation-item"data-video="PbprP4RR19U" data-start="25" tabindex="0"> Reports </span> |
| }
| | <strong> ViewModel Editor: </strong> |
| #video12 iframe {
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="116" tabindex="0"> • Columns needed for Report </span> |
| position: absolute;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="1001" tabindex="0"> • Template URL </span> |
| min-height: auto;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="1283" tabindex="0"> • Report File Name </span> |
| min-width: auto;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="458" tabindex="0"> Model Access Form</span> |
| }
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="1078" tabindex="0"> openDocument text </span> |
| #video12 div {
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="1568" tabindex="0"> Class action for show </span> |
| position: absolute;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="1889" tabindex="0"> ViewModel root object requirement </span> |
| top: 0;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="1965" tabindex="0"> openDocument report show command </span> |
| left:760px; | | <span class="navigation-item" data-video="PbprP4RR19U" data-start="2165" tabindex="0"> Tags in odt template in Word </span> |
| width: 260px;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="2558" tabindex="0"> Some expressions on setting the date </span> |
| height: 100%;
| | <span class="navigation-item" data-video="PbprP4RR19U" data-start="2558" tabindex="0"> “Used by” cross reference index </span> |
| padding-left: 10px;
| | </div> |
| overflow-y: auto;
| |
| }
| |
| span {
| |
| font-size: 18;
| |
| display:block;
| |
| padding: 2px 10px 2px 10px;
| |
| padding-bottom: 0.5;
| |
| padding-top: 0.5;
| |
| opacity: 0.7;
| |
| }
| |
| span:hover {
| |
| color: #0000FF;
| |
| cursor: pointer;
| |
| }
| |
| span:focus {
| |
| color: blue;
| |
| </style>
| |
| </br>
| |
| <div id="video12"> | |
| <iframe width="740" height="500" src="https://www.youtube.com/embed/ru6iK6AFnnk?rel=0&autoplay=0" frameborder="0" allowfullscreen></iframe>
| |
| <div> | |
| <span data-video="ru6iK6AFnnk" data-start="20" tabindex="0"> Reports
| |
| </span>
| |
| <strong> View Model Editor: </strong>
| |
| <span data-video="ru6iK6AFnnk" data-start="111" tabindex="0"> •Columns needed for Report </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="996" tabindex="0"> • Template URL </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="1278" tabindex="0"> • Report File Name </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="453" tabindex="0"> Model Access Form</span>
| |
| <span data-video="ru6iK6AFnnk" data-start="1073" tabindex="0"> Open document text </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="1563" tabindex="0"> Class action for show </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="1884" tabindex="0"> View model root object requirement </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="1960" tabindex="0"> Open document report show command </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="2160" tabindex="0"> Tags in odt template in Word </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="2553" tabindex="0"> Some expressions on setting the date </span>
| |
| <span data-video="ru6iK6AFnnk" data-start="2553" tabindex="0"> “Used by” cross reference index </span>
| |
| </div> | | </div> |
| </div>
| |
|
| |
|
| <script>
| |
| var IMG = document.querySelectorAll('#video12 span'),
| |
| IFRAME = document.querySelector('#video12 iframe');
| |
| for (var i = 0; i < IMG.length; i++) {
| |
| IMG[i].onclick = function() {
| |
| IFRAME.src = 'https://www.youtube.com/embed/' + this.dataset.video + '?rel=0&autoplay=1';
| |
| if(this.dataset.end) IFRAME.src = IFRAME.src.replace(/([\s\S]*)/g, '$1&end=' + this.dataset.end);
| |
| if(this.dataset.start) IFRAME.src = IFRAME.src.replace(/([\s\S]*)/g, '$1&start=' + this.dataset.start);
| |
| this.style.backgroundColor='rgba(0,0,0,.2)';
| |
| }
| |
| }
| |
| </script>
| |
| </html> | | </html> |
| | | [[Category:MDriven Designer]] |
| '''Raw subtitles text'''
| | [[Category:MDriven Designer Sessions]] |
| | | [[Category:OCL]] |
| Hi welcome back this is section 6 of MDriven designer overview
| | [[Category:Expressions]] |
| | | [[Category:Reports]] |
| let's do reports, reports are really only collections of information
| | {{Edited|July|12|2024}} |
| | |
| presented in, a well usually a paper or
| |
| | |
| something that we consider a document
| |
| | |
| so as this is the case it lends itself to
| |
| | |
| the view models just like any other
| |
| | |
| things we have looked at given the fact that
| |
| | |
| so let's add a new view model and
| |
| | |
| say that this is our report
| |
| | |
| of course we need to design, what it
| |
| | |
| supposed to hold, but what if it would be
| |
| | |
| and what if it would be a bill to pay
| |
| | |
| the rent as such it would probably be rooted in
| |
| | |
| the lease contract, so that we will call
| |
| | |
| this "rent bill report" and when it
| |
| | |
| comes to report we have a a shortcut
| |
| | |
| to add a few things that are important for
| |
| | |
| reports, add columns needed for report
| |
| | |
| so let's start with that one
| |
| | |
| we've got a template URL and a report name
| |
| | |
| so these kind of reports I'm going to
| |
| | |
| show now and is the kind that we recommend
| |
| | |
| there it was another kind of reports, but
| |
| | |
| I'm not going to talk about it and
| |
| | |
| this that I'm going to talk about is based on
| |
| | |
| the open documents done that Microsoft
| |
| | |
| submit to identification and which is
| |
| | |
| pretty good it's really very much
| |
| | |
| office as a next step open xml format so
| |
| | |
| the report file name
| |
| | |
| we need to actually say what the
| |
| | |
| resulting file is gonna be named and the
| |
| | |
| template URL is where we can find a
| |
| | |
| template to fill with data, we're going
| |
| | |
| to look at all this, but let's just add
| |
| | |
| the other data that's needed in the
| |
| | |
| report, so the apartment number
| |
| | |
| most like the rent of course, start
| |
| | |
| date of the contract and maybe we also
| |
| | |
| want the period of the rent, so maybe
| |
| | |
| this isn't rooted in the lease contract,
| |
| | |
| maybe, this happens to me all the
| |
| | |
| time that I haven't fought out my
| |
| | |
| problem it isn't finished I need to work on
| |
| | |
| it as I design the other aspects going
| |
| | |
| into the domain, so "Billable Period"
| |
| | |
| this would typically be a a month or
| |
| | |
| something maybe as a start date that is
| |
| | |
| date time and the end date and the
| |
| | |
| lease contract has many billable periods
| |
| | |
| and then heading back to my report, this
| |
| | |
| shouldn't be rooted in lease
| |
| | |
| contract it should be rooted available period
| |
| | |
| right, but then these
| |
| | |
| expressions aren't valid anymore, because
| |
| | |
| they need to follow the link up to this
| |
| | |
| contract, like that, so I can take lease
| |
| | |
| contract is gonna be the same change
| |
| | |
| like that and as you see it
| |
| | |
| automatically builts this UI, but it
| |
| | |
| doesn't really let's see what's wrong
| |
| | |
| with it two dots I was wrong and but I'm really
| |
| | |
| not interested in building a UI, so that
| |
| | |
| UI hints I see here are really just
| |
| | |
| disturbing for reports so "use placing hints: no"
| |
| | |
| not for this report, then it's a
| |
| | |
| cleaner way of looking at the just data
| |
| | |
| so if I have the apartment number the
| |
| | |
| rent and start date and end date I'm
| |
| | |
| sure what, yeah this is the start and the end date
| |
| | |
| of the lease contract, but these are
| |
| | |
| actually more like it and I would want
| |
| | |
| them all of the Billable Peiod, like that
| |
| | |
| and of course we need the name of the
| |
| | |
| person living here and I get
| |
| | |
| I get the columns back to
| |
| | |
| lease contract, but it doesn't allow me
| |
| | |
| to navigate further than that, this false
| |
| | |
| trackway, so I need to find another way I
| |
| | |
| just add a generic column like that and
| |
| | |
| when I set the expression and I'm free
| |
| | |
| to type what I need one way is to have
| |
| | |
| the model access work for me, model access
| |
| | |
| actually brings up this diagram in the
| |
| | |
| context, that we were billable period and I
| |
| | |
| know that I want to go to lease contract
| |
| | |
| and I want to go to person
| |
| | |
| watch up here as I click the
| |
| | |
| the navigation, as I do a navigation
| |
| | |
| expression is built for me, so now
| |
| | |
| I'm on lease contract, but I want the
| |
| | |
| person that was called tenant and
| |
| | |
| on the tenant I would like the full
| |
| | |
| name, so now it has built something that
| |
| | |
| I can just copy like that and I can paste it
| |
| | |
| this wasn't exactly what I want because
| |
| | |
| I was billable period, so what I really
| |
| | |
| just one was to say "self" and lease
| |
| | |
| contracts and tenants and I didn't
| |
| | |
| actually want to select full name, I wanted
| |
| | |
| to have a full name, so doing these
| |
| | |
| justifications, so that's one way to get
| |
| | |
| help to build up the ocl
| |
| | |
| expressions, while navigating around in
| |
| | |
| your model, so now would want to name
| |
| | |
| this the full name maybe, so we have covered
| |
| | |
| this and we have covered that, but we
| |
| | |
| also want to cover this, so if the person
| |
| | |
| has multiple rented apartments
| |
| | |
| he must know what this bill is
| |
| | |
| regarding, so let's add another generic
| |
| | |
| column and following
| |
| | |
| that, let's do it the same way with the
| |
| | |
| model access, we are on a billable period,
| |
| | |
| we want to move up to lease contract, but now we want to
| |
| | |
| move to the house instead and we want
| |
| | |
| to have the street number
| |
| | |
| copy that and paste, and same here we
| |
| | |
| actually already was on a billable period
| |
| | |
| just stated self, I can see that the
| |
| | |
| context that we entered in expression is
| |
| | |
| billable period that's because we have
| |
| | |
| billable period as the root of our view model
| |
| | |
| so when I, also same here, I don't want to
| |
| | |
| select the street number I want to add street
| |
| | |
| so house street and yet another column
| |
| | |
| was gonna add a generic column like that because we
| |
| | |
| are not done, we also need the street and eventually
| |
| | |
| the city, so let's go ahead and you
| |
| | |
| can just do it this way
| |
| | |
| I go to lease contract from lease contract
| |
| | |
| we go to roles, rented apartments
| |
| | |
| and from rent apartments, we go to tenants
| |
| | |
| the street and from street we go to name
| |
| | |
| that would be another way to navigate
| |
| | |
| create the correct ocl expression
| |
| | |
| the street, and they're going to copy
| |
| | |
| this copy use the menu, so you see what I do
| |
| | |
| copy and paste, name this "the city" and from
| |
| | |
| the street don't want the name I want to
| |
| | |
| follow the role to city and grab its name
| |
| | |
| this is one way to get some flat data
| |
| | |
| but quite often you want to have lists
| |
| | |
| in reports, so let's bend over backwards to actually get a list in here
| |
| | |
| somehow, but let's say that on the bill
| |
| | |
| we also state who else lives in the
| |
| | |
| building just to get the need to get
| |
| | |
| to get them a reason to have a list in
| |
| | |
| our report, so I could do that by adding
| |
| | |
| nested View Model class full of
| |
| | |
| multilinks, but since the context I'm
| |
| | |
| in the billable period, doesn't have an actual
| |
| | |
| many association that would build our
| |
| | |
| multilink that we are only offer the
| |
| | |
| billable period all instances, so we're going
| |
| | |
| to do this manually instaed and
| |
| | |
| add generic column and add
| |
| | |
| a nested view model class, add other nested view
| |
| | |
| model class and we state nothing about it
| |
| | |
| so this column is going to be associated
| |
| | |
| to this nesting, so pick that one there
| |
| | |
| and then I get this arrow saying that
| |
| | |
| this will be detailed here
| |
| | |
| depending on what it is of course, so from
| |
| | |
| from the billable period move up
| |
| | |
| to lease contract, from lease contract and
| |
| | |
| go to the house and from the house go
| |
| | |
| back to the tenants, that will be a that
| |
| | |
| would be a list of all the other people
| |
| | |
| including myself that live in this house
| |
| | |
| and that would be a collection of person
| |
| | |
| right, so this messing should really the
| |
| | |
| of type person and we can call it
| |
| | |
| "persons in the house"
| |
| | |
| let's call this one "persons in the house"
| |
| | |
| so all names
| |
| | |
| as columns need to be unique and all
| |
| | |
| nestings and the root must be unique
| |
| | |
| within themselves but we can reuse names
| |
| | |
| here between a column a nesting, so now
| |
| | |
| we're person and we will want to state
| |
| | |
| something about the person on the bill
| |
| | |
| the full name, like that, so many persons
| |
| | |
| persons in the house, full name
| |
| | |
| yeah that's the data for our report but
| |
| | |
| we're going to want to build a report
| |
| | |
| as well, so we need a template URL and in
| |
| | |
| the long run this will be you a template
| |
| | |
| that situated in some internet site
| |
| | |
| somewhere, but since we are only working
| |
| | |
| locally on prototyping we on a
| |
| | |
| user standard file of some sort
| |
| | |
| and let's see where I had saved this
| |
| | |
| file it's temp\DemoModel, so let's put
| |
| | |
| I'm going just do a string here,
| |
| | |
| hardcoded string, c:\temp\DemoModel
| |
| | |
| report them late and since this is
| |
| | |
| using the open document standard and it
| |
| | |
| has the extension open document text .odt
| |
| | |
| if it's a word like report, so I'm going
| |
| | |
| to copy this and say okay on that, and I
| |
| | |
| wonder if I need to double slash these
| |
| | |
| because otherwise, it will be interpreted
| |
| | |
| as state escape sequence for the
| |
| | |
| string, so like that and now I'm gonna open
| |
| | |
| and what I really want to do is
| |
| | |
| start word actually, so that's what I
| |
| | |
| should do, save as here
| |
| | |
| gonna call it ODT like that I don't think I should have odt
| |
| | |
| there because it will be double, save
| |
| | |
| so now I have an odt okay and just to
| |
| | |
| get started we have a special tag what
| |
| | |
| we gonna do is do some report designing
| |
| | |
| and to actually poor in data here, we will use
| |
| | |
| percent and some tag that actually will
| |
| | |
| be the tag from the viewmodel, the name
| |
| | |
| from the viewmodel column, but since we
| |
| | |
| don't want to copy and paste these
| |
| | |
| we can start with generic one called %meta%
| |
| | |
| what this does is actually just showing
| |
| | |
| all the other tags save and another thing
| |
| | |
| is the squiggly lines denoting
| |
| | |
| miss spelling, it can some times
| |
| | |
| mess up our tags because in the xml file
| |
| | |
| these will be free separate notes
| |
| | |
| so let's head back to alternative settings and on the, I guess,
| |
| | |
| the language control and we say hide
| |
| | |
| spelling errors and I'll hide
| |
| | |
| grammatical errors in this document
| |
| | |
| yes, so I'm gonna save that and then this
| |
| | |
| other one we needed for that is what the
| |
| | |
| reports going to be called and again I
| |
| | |
| could just do a string, but we want some
| |
| | |
| data as well, so let's do a combination
| |
| | |
| bill for apartment and then we can
| |
| | |
| I'm gonna copy this one apartment number
| |
| | |
| asstring, because that was an
| |
| | |
| integer and then I want to append the
| |
| | |
| extension as well, so that we can open it
| |
| | |
| okay,like that let's see how we can invoke this if we
| |
| | |
| are back on our design that we're going
| |
| | |
| to refresh the model just so we know
| |
| | |
| what we have show all houses or other
| |
| | |
| show all persons ok we have a person, but
| |
| | |
| we don't really have anything on a
| |
| | |
| person, so let's just quickly add a
| |
| | |
| viewmodel to handle something that is rooted on the person
| |
| | |
| person view, we say it's a person, we say that we can see
| |
| | |
| the first name and last name and add some nestings
| |
| | |
| what if we were to add a nested singlelinks
| |
| | |
| okay we don't have any for it
| |
| | |
| multilink would create and delete this
| |
| | |
| is a quick way to enter the townhouses
| |
| | |
| so what happened was that it added some
| |
| | |
| actions to create the house and delete
| |
| | |
| the house as buttons show up here
| |
| | |
| what can we add something more?
| |
| | |
| the rented apartments guess
| |
| | |
| undo that control, I'm going to add nested
| |
| | |
| multilink with picker add and remove
| |
| | |
| rented apartments that was like
| |
| | |
| different it added a picker and add
| |
| | |
| a remove button, I want to show something
| |
| | |
| in these grids, make that one
| |
| | |
| a little larger, add a column
| |
| | |
| okay, so I'm gonna leave that as string
| |
| | |
| and instead head over to the house and watch
| |
| | |
| the default string representation, is actually, we did that
| |
| | |
| already, so that will be good for us and
| |
| | |
| for the rented apartment and that's the
| |
| | |
| house as well ok and for this one so that's nesting
| |
| | |
| and as the house as well okay,so I'm gonna add an action, so that we
| |
| | |
| can bring this one up, so what we're
| |
| | |
| going to do now is add a class action
| |
| | |
| for show, whenever we have a person
| |
| | |
| somewhere in the UI and we should be
| |
| | |
| able to show this view, that will show up
| |
| | |
| here, as a view person view
| |
| | |
| and if I double-click it I get selected here
| |
| | |
| so did a few things just to get us
| |
| | |
| going to refresh the model and show
| |
| | |
| all persons and now when I click on a person
| |
| | |
| I get the view persons view and if I
| |
| | |
| hold ctrl while I click it I get a new
| |
| | |
| tab with that person and Delsie Bad and
| |
| | |
| we can add her as a tenant and
| |
| | |
| this one and save that, we can also say
| |
| | |
| that she, we could create the house that
| |
| | |
| she owns, so that for real I guess we
| |
| | |
| added that in the default string representation
| |
| | |
| okay, so she rents here and then we got
| |
| | |
| this one show house from object
| |
| | |
| where did that come from remember I don't
| |
| | |
| it was a class action on the house
| |
| | |
| that brings up the house view, so that
| |
| | |
| will help us navigate to here, where we
| |
| | |
| see that the Delsie Bad is now also a
| |
| | |
| tenant of this, so these are the lease
| |
| | |
| contracts it would be good if we could
| |
| | |
| enter their rent or manag the billable periods here, so that was the house view
| |
| | |
| so let's look that up, the house view
| |
| | |
| and now we are suffering a bit from too
| |
| | |
| small screen, we can always zoom in to
| |
| | |
| watch details, but it would be good if we
| |
| | |
| could see it all like this alright, so yeah
| |
| | |
| we have the rent over there, but from there the lease contract and
| |
| | |
| we would like to be able to add or create billable period
| |
| | |
| so here I'm gonna add a nested view
| |
| | |
| model with create and delete for
| |
| | |
| billable period, of course I can do all these
| |
| | |
| expressions by hand, but these are just
| |
| | |
| snippets that we have found that are so
| |
| | |
| common that it's good to have them
| |
| | |
| done already, so what I did now was that
| |
| | |
| these things we are going to write
| |
| | |
| the billable period here,the same as
| |
| | |
| a presentation just hyphens to make
| |
| | |
| it as string and the billable period is
| |
| | |
| in the nested list here which is the
| |
| | |
| grid, so let's add column, I know it's
| |
| | |
| outside your screen, but I guess you know
| |
| | |
| this point out start and end date and
| |
| | |
| removed as string, like that and if
| |
| | |
| we head back and refresh the model
| |
| | |
| and we show all houses, we picked that
| |
| | |
| this one, we also have a way to set
| |
| | |
| billable period, we're going to create billable period
| |
| | |
| and now when we have billable period we would
| |
| | |
| like to do a bill for this person in
| |
| | |
| this house, for this billable period, right so
| |
| | |
| and last I'm gonna do that, well
| |
| | |
| there's something wrong here
| |
| | |
| let's see what it said view person view warning the view model does
| |
| | |
| not require a root object, so that's that
| |
| | |
| the systems telling us that since we
| |
| | |
| have this person view that we created
| |
| | |
| that apparently needs root objects
| |
| | |
| that we set it with the view, person view, but we haven't stated that it
| |
| | |
| requires root object on the view and
| |
| | |
| we should do that just to let the system
| |
| | |
| know that we are on top of things and we know what we are doing
| |
| | |
| so requires root object and if
| |
| | |
| I save and adhance and update that once again they are gone
| |
| | |
| it's from the warning wanted to do was probably to add a class
| |
| | |
| action this one and it should be on the class billable period and
| |
| | |
| let's call it Generate Bill and the executed expression on this one
| |
| | |
| so this is where all obvious down to something
| |
| | |
| self, we are billable period and we want to open a document report
| |
| | |
| open document report show that's the one
| |
| | |
| we want to do and this needs a viewmodel
| |
| | |
| and that has the date that one we did actually
| |
| | |
| so we could just enter the name here on
| |
| | |
| that the in hyphens but that would not
| |
| | |
| be very good if we change the name later
| |
| | |
| on, so it's better to be strictly
| |
| | |
| typed and go on the constant that we
| |
| | |
| have, billable period, that's the class that
| |
| | |
| it's rooted in and we have view and I
| |
| | |
| press "ctrl + Enter" to get up this little
| |
| | |
| tree that I can just copy from to
| |
| | |
| lessen my mouse movements, view models
| |
| | |
| and from that one I see that we have one
| |
| | |
| that calls rent bill report
| |
| | |
| ok so that's what I want to do with this
| |
| | |
| one, so whenever I have billable period this
| |
| | |
| action should show up, saving again and
| |
| | |
| the heading back over here let's save
| |
| | |
| this one, errors in the information
| |
| | |
| what do you mean? well the Delsie Bad must have an
| |
| | |
| apartment number and the Delsie Bad lives free
| |
| | |
| ok let's fix that then she lives an
| |
| | |
| apartment five and she still lives free
| |
| | |
| now she's gonna pay 100 and she's gonna
| |
| | |
| have a billable period, so but we need to refresh the
| |
| | |
| model and show all the houses and now
| |
| | |
| for the Delsie Bad, for this billable period
| |
| | |
| let's say it start 10/1/2016 end 10/31/2016 and when I click that,
| |
| | |
| when I get there the action since I'm now on
| |
| | |
| billable period save generic bill and
| |
| | |
| then it says errors and why, reference
| |
| | |
| not set AsByteArray and reproducing opendocument report
| |
| | |
| ok I went offline and checked it out
| |
| | |
| it turned out that since I had word
| |
| | |
| opened the template was locked
| |
| | |
| and that was the error I got from that
| |
| | |
| album, make a note of that to make it better
| |
| | |
| every statement it generate the
| |
| | |
| bill, now that I have closed to the
| |
| | |
| template in work, like get to word to
| |
| | |
| open up this so remember that
| |
| | |
| there I said that the percent meta
| |
| | |
| percent just would provide all the other templates for me
| |
| | |
| so this is the resulting report not very
| |
| | |
| good-looking, but I'm gonna copy this tags
| |
| | |
| because that's how we can pour in
| |
| | |
| our data, going to open the report
| |
| | |
| template again, so that's the template
| |
| | |
| now I'm not that interested in the
| |
| | |
| meta-thing, more interested in the data as
| |
| | |
| such, the template URL and the file
| |
| | |
| name is not interesting to me, but the
| |
| | |
| apartment number, so bill for apartment number
| |
| | |
| and then I can guess say that should be
| |
| | |
| debt and these pay dollars for the period
| |
| | |
| starting at and ending at
| |
| | |
| and of course, we are free to style this
| |
| | |
| any way we would like and just to provea point, we going to
| |
| | |
| we also have the let's save
| |
| | |
| this one and close it and that was a
| |
| | |
| report we generated and generate a
| |
| | |
| new bill and now we get this bill for apartment
| |
| | |
| bill for apartment number five
| |
| | |
| in the house at Grastensvagen
| |
| | |
| please pay a hundred dollars for their
| |
| | |
| period starting at the date and ending
| |
| | |
| at the date and we got the date time as well
| |
| | |
| we should fix that, but what
| |
| | |
| about the listing all the other tenants
| |
| | |
| in the house that we wanted to do
| |
| | |
| open up the template again
| |
| | |
| that was the report and this is the
| |
| | |
| template, and that looks like this
| |
| | |
| it's the different tag %% + persons
| |
| | |
| in the house and that's actually if
| |
| | |
| we head back to the rent bill report as
| |
| | |
| the persons in the house that's that column that nests
| |
| | |
| so how do we go about creating a table
| |
| | |
| rate, table let's do like that
| |
| | |
| Other people in the house where you live at
| |
| | |
| and of course we could use to the same
| |
| | |
| tags multiple times, so to actually this
| |
| | |
| role should be replaced over and over
| |
| | |
| depending on each person, so we do that
| |
| | |
| by setting this tag as the star tagged
| |
| | |
| in the row and then what we
| |
| | |
| actually want to show in this cell is
| |
| | |
| the full name and also lives with you sort of
| |
| | |
| so that's how we would go about getting
| |
| | |
| the effect, if we close this one and head
| |
| | |
| back and generate the bill we get
| |
| | |
| other people in the house where you live
| |
| | |
| in Grastensvagen - Hans, Dick, Delsie, so
| |
| | |
| and that's how you can do reports really
| |
| | |
| easy and it's working with the excel as well
| |
| | |
| excel like files than the extension is ods
| |
| | |
| open documents spreadsheet to fix this
| |
| | |
| to more format, that we would like, we
| |
| | |
| would head back to the report data and
| |
| | |
| say that we don't actually want to
| |
| | |
| communicate these as and as date we
| |
| | |
| would like them as strings instead and
| |
| | |
| then we can use to c# syntax for 2
| |
| | |
| ToString that takes a parametr that is
| |
| | |
| a string, that sort of helps us design
| |
| | |
| the value, I think it's like this small
| |
| | |
| "y" for the year, four letters, four
| |
| | |
| positions, four digits and that it must
| |
| | |
| be enlarge for the month because the small one
| |
| | |
| are reserve for the minutes I guess
| |
| | |
| copy that and I going to use the same on
| |
| | |
| the end date, like that, saved that head
| |
| | |
| back to the prototyper, refresh the
| |
| | |
| model and show all houses, double-click
| |
| | |
| on the house to get the first one or two
| |
| | |
| get their first view, get the first
| |
| | |
| action that navigates to view which was
| |
| | |
| this one house view, like that
| |
| | |
| and pick tenants by search we could add some
| |
| | |
| more at these, ok save let's say there's
| |
| | |
| errors because they don't have apartment
| |
| | |
| numbers, but that's okay
| |
| | |
| for me, I can live with it
| |
| | |
| ok, so this didn't turn out the way
| |
| | |
| I want to add, why not
| |
| | |
| well because I hadn't entered anything for
| |
| | |
| the Dick Smith it was for the Delsie Bad
| |
| | |
| so I'm going to generate the bill for her as well
| |
| | |
| then it's looks ok, good, as you see
| |
| | |
| this was apartment 5 but this was
| |
| | |
| important 3, so we haven't mentioned the
| |
| | |
| name in the report of course we could do
| |
| | |
| that as we have the data in there
| |
| | |
| it will be the same
| |
| | |
| just using this tag called "tenant full name"
| |
| | |
| so now we have done a few things
| |
| | |
| with our little model and one thing that
| |
| | |
| I really want to point out is that as we
| |
| | |
| do everything in the model the model
| |
| | |
| also knows everything, so if I were to right-click their rent
| |
| | |
| let's see if we can get this on screen somehow,
| |
| | |
| if I want to right-click the rent here
| |
| | |
| and "used by" then I directly see that the
| |
| | |
| the lease contract rent is used in a
| |
| | |
| constraint, ok it's also used in a
| |
| | |
| viewmodel column for the house view the
| |
| | |
| lease contract rent, it's also used in
| |
| | |
| the "rent bill report rent", so this really
| |
| | |
| is a cross reference for everything in
| |
| | |
| our model, that comes only when we
| |
| | |
| actually used to model for everything
| |
| | |
| now we have the total control of what
| |
| | |
| should happen, if the rent need to be
| |
| | |
| the concept of rent, the attribute of rent
| |
| | |
| would need to be changed in any way
| |
| | |
| where does it affect and I can have
| |
| | |
| click these straight off the lease
| |
| | |
| contract rent and the lease contract
| |
| | |
| is selected for me in the tree and I
| |
| | |
| can check the constraints for it then
| |
| | |
| and find that this constraint of
| |
| | |
| course use the rent right or wrong
| |
| | |
| that so that's real and good effect
| |
| | |
| so let's finish up this session here and
| |
| | |
| in the next one we're going to look at
| |
| | |
| images to have images and fights
| |
| | |
| uploading and downloading files etc.
| |
| | |
| so thank you for listening and I will be back
| |