Forum Archive

Below are all the posts from the sheltermanager forum that was previously hosted on muut.com. As of 6th November 2023, we have switched to github discussions.

Use the find facility in your browser (usually CTRL+F) to search this page.

Animal Code not generating properly

@abbied: 2023-05-03 19:52:51
Hi, towards the end of last year I noticed as we added cats to our shelter it would generate the shelter code in correctly sometimes. Jumping up from code 22C50 )where it should be and instead make is 22C185. I thought maybe it was because someone was pushing a wrong button, or if a cat was put in wrong but I was not able to find the problem. Starting this year everything was moving smoothly until this past week. Again only with adding cats not dogs. instead of assigning where the last cat left off at 23C111 it made the cat 23C190, we then added in another litter of cats and it made it 23C111 where it should have been, and then messed up another litter again. I'm not sure what to do to fix this, but it makes it very difficult having to go in changing case numbers back and forth. My animal code settings are set to YYSNN shortcode SNN.

@jimdunne: 2023-05-04 09:45:55
I've had this, usually occurs when record numbers have been changed manually, or records deleted. Go to Settings>Trigger Batch Process>Reset NNN animal codes for this year - that sorted mine out.


animal_view_adoptable_js problem with mobile

@lisazorn: 2023-04-29 03:31:16
Hello - Our Wordpress website uses animal_view_adoptable_js to display rabbits and it looks like it's not working on mobile. The web page is here: https://saveabunny.org/adopt-help/saveabunny-adoptable-rabbits/ When I load it in a browser on my computer, it works fine. When I load it in a browser on my phone, the div doesn't load. I can also reproduce the problem if I use Safari on my computer with the iPhone user agent. Is there something special I need to do to make it work for mobile? Thank you! -Lisa

@robinrt: 2023-04-30 10:43:27
Sorry, I don't know why the div isn't appearing on mobile. Your site seems to be doing some kind of useragent detection to change the layout rather than using responsive media queries. When I use responsive layout on a desktop to reduce the resolution to mobile size 480px wide (and where I have access to developer tools), it works ok. All our code does is populate the #asm3-adoptables div in the DOM, it does not supply any styles, so it's your page hiding it - it's probably hiding the parent container that the asm3-adoptables div is in.

@lisazorn: 2023-05-01 04:49:59
Thank you for the quick response! I dug into it further and it seemed like a Wordpress module was the culprit; when I disabled it, the issue is resolved.


Cage Card with Weight

@hunterstubb: 2023-04-29 01:33:52
Hello, my shelter is looking to add weight to our cage cards and we are unsure of how to do that. We have looked at Settings -> Reports but none of us know SQL or HTML. Any help is greatly appreciated.

@adoptamutt: 2023-04-29 03:14:25
The weight is stored in a field called ‘weight’ so you can just add that to your select statement like animal.weight or a.weight depending on your FROM statement.

@hunterstubb: 2023-04-29 05:10:55
I tried adding animal.weight and it says the syntax is good but it still doesn't appear on the card. I believe this is because I have no HTML code to format it into the card itself.

@adoptamutt: 2023-04-29 13:42:44
Oh, okay. I thought maybe you had a Cage Card already set up you wanted to just add the weight to. If you don't already have something set up, I would recommend using Settings > Document templates. It works more like a word processor. If you want, once in a template, click Tools > Source Code and copy and paste this in. Also, come join us at ASM Rocks! Facebook page. <p style="text-align: center;"><span style="font-size: 14pt;"><strong><<Organization>><br /><span style="font-size: 10pt;">If I'm in a kennel/condo, please ask a staff member for assistance.</span><br /></strong></span></p> <table style="height: 33px;" border="2" width="742"> <tbody> <tr> <td style="width: 50%;" colspan="2"> <p><span style="font-size: 13.3333px;">Name:  <span style="font-size: 14pt;"><strong><<AnimalName>></strong></span></span><br /><br /></p> </td> <td style="width: 43.5441%; text-align: right;" colspan="2"><span style="font-size: 10pt;">Animal Number: <strong><<ShelterCode>></strong></span><br /><span style="font-size: 10pt;">Internal Loca tion: <<LocationName>></span></td> </tr> <tr> <td style="width: 25%;"><span style="font-size: 13.3333px;">Admitted: <span style="font-size: 10pt;"><strong><<DateBroughtIn>></strong></span></span></t d> <td style="width: 25%;"><span style="font-size: 10pt;">Est. DOB:  <<DateOfBirth>></span></td> <td style="width: 25%;"><span style="font-size: 10pt;">Sex:  <<Sex>></span></td> <td style="width: 18.5441%;"><span style="font-size: 10pt;">Fixed: <<Neutered>></span></td> </tr> </tbody> </table> <table style="height: 317px;" border="2" width="742"> <tbody> <tr style="height: 176px;"> <td style="width: 247px; height: 176px;"><<DocumentImgLink>></td> <td style="width: 477px; height: 176px;"> <p><span style="font-size: 10pt;">Breed: <<BreedName>><br />Color: <<BaseColorName>><br />Markings: <<Features>><br /></span><span style="font-size: 10pt;">Adult Size:  <<Size>><br />Microchip #: <<MicrochipNumber>><br />Weight: <<Weight>><br />Good with dogs? <<GoodWithDogs>><br />Good with cats? <<GoodWithCats>><br />Good with children?  <<GoodWithChildren>><br />Housetrained? <<HouseTrained>><br /></span></p> </td> </tr> <tr style="height: 13px;"> <td style="height: 13px;" colspan="2"><span style="font-size: 10pt;">Comments: <<AnimalComments>></span></td> </tr> <tr style="height: 15px;"> <td style="height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong>TEST HISTORY:</strong></span></td> </tr> <tr style="height: 15px;"> <td style="height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong><<AnimalTests>></strong></span></td> </tr> <tr style="height: 10px;"> <td style="width: 238px; vertical-align: top; height: 10px;" colspan="2"> <p><span style="font-size: 6pt;"><strong>Heartworm Disease</strong> is very prevalent in the South and is a serious and potentially fatal disease contracted through mosquitoe bites. Adult heartworms live in the heart of infected dogs. They survive up to five years and produce millions of young. <strong>It is VERY IMPORTANT to provide MONTHLY heartworm preventative for all dogs.</strong></span></p> </td> </tr> <tr style="height: 13px;"> <td style="height: 13px;" colspan="2"><span style="font-size: 10pt;"><strong>VACCINATIONS/PREVENTATIVES/WORMERS:</strong></span></td > </tr> <tr style="height: 15px;"> <td style="height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong><<AnimalVaccinations>></strong></span></td> </tr> <tr style="height: 15px;"> <td style="height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong>MEDICAL HISTORY:</strong></span></td> </tr> <tr style="height: 15px;"> <td style="width: 730px; height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong><<AnimalMedicals>></strong></span></td> </tr> <tr style="height: 15px;"> <td style="height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong> HEALTH PROBLEMS:</strong></span></td> </tr> <tr style="height: 15px;"> <td style="width: 730px; height: 15px;" colspan="2"><span style="font-size: 10pt;"><strong><<HealthProblems>></strong></span></td> </tr> </tbody> </table> <p> </p>

@hunterstubb: 2023-04-29 16:11:15
What about connecting it the SQL code so all the boxes are filled in such as when I go to Reports -> Auditing -> Cage Card with Vaccination, Medical and Test History I just type in the dog or cat's name and it will automatically fill in the information from their shelter profile.

@adoptamutt: 2023-04-29 16:18:49
All the fields are populated using Document templates. But if you are using the 'Cage Card with Vaccination, Medical and Test History', then you do have HTML code in the HTML box. Just add "Weight: <b>$Weight</b><br />" right under "Size: <b>$Size</b><br />" or whereever you wish the size to be.

@hunterstubb: 2023-04-29 16:30:24
Awesome! Thank you so much


Date of Birth field in the Person table

@jhirizarry: 2023-04-28 13:07:54
I noticed a DOB field pop up in the person form. This seems like a recently added field. I created an additional DOB and linked it in the Names and Address section of the form. Now I have two DOB fields. I would like to remove the Additional DOB field and use the native one in the table. Is there an easy way to do that with an Update query? [DOB](//muut.com/u/sheltermanager/s1/:sheltermanager:uBKb:dob.png.jpg)

@robinrt: 2023-04-28 13:29:26
As long as your additional field is of type date, yes. You can use a query like this to populate the person DOB from your additional field: ``` UPDATE owner SET DateOfBirth=(SELECT asm_to_date(Value, 'MM/DD/YYYY') FROM additional WHERE AdditionalFieldID=XXX AND LinkID=owner.ID) ``` This relies on your date field format being MM/DD/YYYY (ie. a US locale, change it for other locales) and XXX being the ID of your date of birth field in the table additionalfield. Once you've done that and verified it works, you can delete your additional field.

@jhirizarry: 2023-04-28 14:02:48
Worked like a champ!! Thank you, as always!!!!


New ID and Date of Birth Owner Fields Advice

@mmover: 2023-04-27 16:36:09
I'm happy to see that ASM added an ID and date of birth field to the owner records. But I'm in anyone else is in a similar boat to us. We created custom ID and DOB fields a couple years back which means we now have duplicate fields. 1. Is there a way to bulk upload the ID and DOB fields from the custom fields we created. I have a report that pulls the owner ID number and our two custom fields but have never bulk imported changes before. The new DOB field is specifically a date field which means for records that have more than one person (like a married couple) it wouldn't allow for us to label the DOB for which person it goes to or to add more than one DOB. Currently if we have more than one person on a record we will indicate whose DOB or DL goes to whom by labelling it with their first initial or name. Examples: "Megan: 00-00-0000" or "00-00-0000 (M); 00-00-0000 (B)" 2. If we are able to bulk upload will the custom DOB fields with non-date data upload or will they remain blank because the data doesn't fit the criteria? 3. If we wanted to is there a way to disable the new DOB field so that it cannot be utilized? I think what we will likely end up doing given the DOB date field restriction is keeping both the fields we created and the ones ASM added and just change the name of the custom fields to 'Secondary DOB' and 'Secondary DL' so that we can still have records of both. But I wondered if anyone had any other thoughts.

@robinrt: 2023-04-27 16:46:47
You can now mark a record as a couple. That gives you a second DOB field for the other person. It also gives you second fields for name and other contact info. While you can run a query to copy values from your additional field to the new built-in DOB field, you are right that your string date of births with extra data can't copy because they won't parse to dates. You can turn off both new fields if you don't want them - like all other hide options, they're under Settings->Options->Remove.

@mmover: 2023-04-27 17:52:26
That's great, I will look at the Couple function. Thank you so much for clarifying!


Adding new Outcomes to Animal Control Incidents.

@joani: 2023-04-26 16:19:27
We need to add several new outcomes to Animal Control Incidents. Often it is a simple RTO, or No Animal Found. I added these under Settings/System/Additional Fields, but they do not show up in our drop down choices. How do I get them to show?

@jonno: 2023-04-26 17:55:48
Hi, you need to select Settings->Look up data, then from the drop down box in the right top corner select "Incident completed types" and add your new ones here.


Date Format in Reports

@jhirizarry: 2023-04-08 16:15:20
So I am using CURRENT_DATE as Date for a report. It displays in the report as 04/08/2023 00:00:00. How can I 1. Just display the day of the week, for example Saturday or 2. just display the data as 04/08/2023 without the 00:00:00

@robinrt: 2023-04-08 16:21:10
use the to char function to format dates. https://www.postgresqltutorial.com/postgresql-string-functions/postgresql-to_char/

@jhirizarry: 2023-04-08 16:39:53
That worked!! Thank you!!!!


Keeping on top of animals in care

@rainrescue: 2023-04-06 15:34:52
How do you all manage to keep up with the medical needs? We seem to spend ages updating and making sure everything has had what it should have had. Making sure everything is flead and wormed when needed. It's almost a full-time job and we are a small rescue doing about 350 cats and dogs a year. You with much bigger centres - how do you do it? Do you have a dedicated person auditing it all the time like a vet nurse or receptionist or do you expect your supervisor/animal carers to do it? We have 1 manager and 3 carers but they are very hands-on - and so it is not easy for them to notice that something is missing. So - do any of you have a process for animals in care is what I'm saying I suppose.

@adoptamutt: 2023-04-06 16:00:21
Are you utilizing "Template Animals" to set up initial vaccinations and medicals due? Then monitoring the "Vaccination Book" and "Medical Book" for what needs to be given on a daily basis? And then utilizing the "Give" feature to rescedule vaccinations?


logo.jpg

@jhirizarry: 2023-03-29 20:22:59
I am having a strange problem updating my logo.jpg file. I have renamed ,y original one to logo1.jpg and created a new one using the same size parameters. When I upload the logo.jpg file the icon on the top left changes to a ?. see pic attached [Screenshot 2023-03-29 at 3](//muut.com/u/sheltermanager/s1/:sheltermanager:L5C3:screenshot20230329at3.18.06pm.png.jpg) However, when I changed the name to this file to say logo2.jpg and click on it, the image shows up in my browser. Change it back to logo.jpg, the image is back to a ? mark. Any thoughts on why this may be happening? I have have similar issues with Splash and Watermark images.

@robinrt: 2023-03-29 22:02:29
Sounds like you might have a previous image cached in your browser as logo.jpg. Does it correct itself if you refresh with CTRL+F5 ?

@jhirizarry: 2023-03-30 01:37:00
Yes.... I should have thought of that!! Thanks for your assistance!!

@jhirizarry: 2023-04-05 15:34:19
This is a really strange problem... We are rebranding and I have changed the logo.jpg and splash.jpg images. All my online forms still display the old splash image even though the splash image when clicked on in Extra Images displays the correct image. I have tried this on multiple computers, deleted the cache, even tried it on my work computer which has never logged into ASM and the old image is displayed. Is there anyway you can see this on your end?

@robinrt: 2023-04-05 15:40:57
are you a customer? If so, email your account number and the name of the form with the problem to us at help@sheltermanager.com and I'll take a look. Maybe you had your online forms point at your website rather than extra image links or something?

@jhirizarry: 2023-04-05 16:56:23
Yes, I am a customer. I'll send you the data you requested now. Thanks! So you are aware, I am copying the link from the Extra Images page and pasting it directly into the online forms.


Document Template

@jhirizarry: 2023-03-27 03:25:23
I am using a document template for the animals Medical Record. In the template I am using the following fields (See Pic) [Image 3-26-23 at 10](//muut.com/u/sheltermanager/s3/:sheltermanager:CC7v:image32623at10.15pm.jpeg.jpg) The problem I am having is that only the first instance of the medical is being reported. (see pic) [Image 3-26-23 at 10](//muut.com/u/sheltermanager/s3/:sheltermanager:BfJ2:image32623at10.19pm.jpeg.jpg) Even though there are 3 listed in the record (see pic) [Image 3-26-23 at 10](//muut.com/u/sheltermanager/s2/:sheltermanager:aY2C:image32623at10.18pm.jpeg.jpg) Any ideas what I am doing wrong? Thanks! John

@robinrt: 2023-03-27 08:22:13
The 3 listed items are treatments in the same regimen. The animal has 1 "Dewormer" medical regimen. The document template shows regimens, not individual treatments.

@jhirizarry: 2023-03-27 19:21:09
Thanks! Anyway to split those out or is that done via a report? Also, trying to add <<DateofBirth>> to template, however; when I select the document from the animal record, the DOB value does not display. Am I using the wrong field>

@jhirizarry: 2023-03-27 21:29:04
Disregard. I figured it out. Read the MANUAL!!! LOL


User documentation / video or other resources

@njcunliffe: 2023-03-23 10:41:10
Hi, I wondered if there were any user manual, youtube videos or other online materials? I have recently joined joined an RSPCA branch and I am trying to understand the system capability, map across what we actually use and make a plan to implement any key missing processes. I looked on the home page but couldn't find anything. Please send a link if I missed it. Appreciate your help. Nic

@robinrt: 2023-03-23 11:11:07
Hi, click on your username at the top right of the screen when logged in. There are links to the manual and training videos.

@pearsos: 2023-04-19 15:26:50
Hi Nic, We use ASM at RSPCA Oak & Furrows Wildlife Rescue (for a year now, big fans!). I've recently put out feelers to see if there's any way of RSPCA users having an online community and apparently one is in development! In the meantime, if I can help in any small way: asm@rspcaoandf.org.uk Also, the ASM Rocks! Facebook group is useful. Simon


Does TemplateSpecies template also look at Type?

@adoptamutt: 2023-03-20 19:30:57
If you have two "TemplateSpecies" templates, both of the Species of "Cat" does the system then look at Animal Type? I know that the "TemplateType" templates take precedence over "TemplateSpecies". If I'm testing correctly, "TemplateSpecies" looks like it also looks at Animal Type if multple templates are in place with the same species.

@robinrt: 2023-03-21 09:14:00
I think that's just coincidence. If you've got two TemplateSpecies with the same species, then the first one to be entered is used.


Internal server error after update

@titnono: 2023-03-14 09:04:09
Hello, I'm getting an error after updating our server from version 46 (VERSION = "46 [Mon 30 Jan 11:02:07 GMT 2023]"; BUILD = "01301102"), to the current version on the git (VERSION = "47u [Sat 11 Mar 08:17:30 GMT 2023]"; BUILD = "03110817"). When I want to view an animal, I get an internal error message. Here is what the log says: Mar 14 07:46:53 shelter CRITICAL ASM Database.query (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(PARTITION BY m.animalid ORDER BY CASE WHEN m.returndate IS NULL THEN 0 ELSE 1 E' at line 1") File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 552, in query#012 s.execute(sql, params) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 250, in execute#012 self.errorhandler(self, exc, value) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler#012 raise errorvalue File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 247, in execute#012 res = self._que ry(query) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 411, in _query#012 rowcount = self._do_query(q) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 374, in _do_query#012 db.query(q) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 292, in query#012 _mysql.connection Mar 14 07:46:53 shelter CRITICAL ASM Database.query failing sql: SELECT ea.ID, owner.OwnerName AS EventOwnerName, ea.ArrivalDate, ea.Comments, a.id AS AnimalID, a.animalname, a.SHORTCODE, a.SHELTERCODE, a.MOSTRECENTENTRYDATE, a.LASTCHANGEDDATE, a.LASTCHANGEDBY, a.AcceptanceNumber AS LitterID, a.AnimalAge, a.Sex, s.SpeciesName, a.DisplayLocation, a.AgeGroup, a.Sex, s.SpeciesName, a.displaylocation, bc.BaseColour AS BaseColourName, sx.Sex AS SexName, bd.BreedName AS BreedName, ea.EventID, ma.MediaName AS WebsiteMediaName, ma.Date AS WebsiteMediaDate, CASE WHEN EXISTS (SELECT * FROM adoption ad WHERE ad.eventid = ea.eventid AND ad.movementtype = 1 AND ad.animalid = ea.animalid) THEN 1 ELSE 0 END AS Adopted, lastfosterer.ownerid as LastFostererID, lastfosterer.ownername AS LastFostererName, lastfosterer.returndate AS LastFostererReturnDate, lastfosterer.mobiletelephone AS LastFostererMobileTelephone, lastfosterer.hometelephone AS LastFostererHomeTelephone, lastfosterer.worktelephone AS LastFostererWorkTelephone, ev.STARTDATE I don't know if this is related to my MySQL version, I'm still with ubuntu 18.04 and MySQL 5.7.41. Thank you for your help!

@robinrt: 2023-03-14 10:00:22
Hi, yes, it's your old version of MySQL that's the issue as it doesn't support window functions/PARTITION BY. The code that does that was contributed recently and it's unnecessary in my opinion for it to be using that function for what it's doing. I've written out that code now and committed. If you pull from git again, the problem should be fixed.

@titnono: 2023-03-14 13:15:27
Hello, thank you very much for the quick answer and the fix. It works! I know I don't really have a choice to upgrade the server anymore, the OS is at the end of its life. Regards


Adding javascript to manipulate online forms

@adoptamutt: 2023-03-09 18:51:32
The manual mentions that we can add a javascript funtion called "asm3_onlineform_submit" into the footer of a form to "tranform the values" before submitting to ASM. Is it possible to set the Entry Category to a specific value when processing the form using Create > Animal? If so, could you provide an example?

@robinrt: 2023-03-10 08:08:00
The javascript runs on the client, it can only change the value of something in the form before it is submitted. You can change a value like this: ``` function asm3_onlineform_submit() { $("#f999").val("New Value"); } ``` Change f999 for the id attribute of the field you want to change - you'll have to lookup what that is by right clicking on it in the form and choosing "Inspect". I don't think this is what you want. Entry category can't be set by create animal at the backend. The only way to influence what value it gets is to update the default entry category under Settings->Options->Defaults


SQL 'Like'

@jhirizarry: 2023-03-05 17:14:47
I have a SQL statement that yields no results. It seems like the Additionalflags field is not a standard table field. I don't quit understand the structure. Results show the AdditonalFlags field with Adopter|Volunteer, etc. select * from owner WHERE AdditionalFlags LIKE '%Applicant%' This statement for example, yields no results. Yet, I have the flags set for Applicants. I'm trying to do a bulk update on the AdditionalFlags field to update all Applicants to Volunteers. Thoughts? What am I missing?

@robinrt: 2023-03-05 18:20:02
AdditionalFlags is a varchar. I don't see why your SQL isn't working - the only thing I can think of is that LIKE is case sensitive and your flag is "applicant" rather than "Applicant" or something. If you want to replace one flag for another, use a REPLACE call (and make sure that the flag being replaced is not a component of another flag name). Note that the built in flags all have their own column as well which will be 1 for set or 0 for not set, eg: owner.IsVolunteer, owner.IsStaff ``` UPDATE owner SET AdditionalFlags=REPLACE(AdditionalFlags, 'Applicant', 'volunteer'), IsVolunteer=1 WHERE AdditionalFlags LIKE '%Applicant%' ```

@jhirizarry: 2023-03-05 19:41:57
Let me give this a try!! Thanks!

@jhirizarry: 2023-03-05 20:48:15
Nice! Thank you!!! That worked!


Additional Field Question

@jhirizarry: 2023-03-05 16:11:33
I created an Additional field, DateofBirth. I want to collect that info in an online form for a person (Volunteer). Is that possible? I created the field and mapped it to the Name and Address section of the person form. Instead of manually adding the data, it would be nice to collect it from the online form.

@robinrt: 2023-03-05 18:20:28
Yes. Call your online form field additionalDateOfBirth

@jhirizarry: 2023-03-05 19:21:21
You are a genius! Thanks, worked perfectly. Thank you!!!!!!


Retailer Movements and Reservations

@jhirizarry: 2023-03-05 00:50:47
We adopt animals through Petsmart and use the Retailer feature. What I have noticed when we have a Reservation for an animal at the Retailer is that when using the To Adoption button in the Reservation Book, is throws an error that says "An animal cannot have multiple open movements." In the manual it states "If you use Move ‣ Out ‣ Adopt an animal and the animal is at a retailer, ASM will take care of this for you." Is this only the case when you select Move>Out>Adopt an animal? There appears to be a difference when using the To Adoption action from the Reservation Book. Can the To Adoption function not have the same functionality as the Adopt an Animal function in the Move menu?

@robinrt: 2023-03-05 09:33:08
The validation when saving movements does close foster movements and cancels reservations, so it should be able to close retailer movements. I'll put this on our dev list to investigate as I'm not sure why it's only done from move->adopt an animal.

@jhirizarry: 2023-03-05 13:52:57
Ok, Thanks. Please let me know as we have a lot of animals that get adopted at the retailer through a reservation. Also, just to clarify, this is for the Retailer movement, not Foster. Although, I have seen this happen with Fosters as well what using the To Adoption feature in the Reservation Book.

@robinrt: 2023-03-05 18:21:26
Yes, confirm the dev instruction is for retailer movements.

@jhirizarry: 2023-03-05 20:51:36
Ok, thanks.. I'm at an adoption event now and it happened again with one of my animals at the Retailer location.

@robinrt: 2023-03-10 08:08:36
This is in production now.


I can't make asm work in my new computer

@montserratbc: 2023-03-02 22:39:12
Hi, I have been trying for several months now to have ASM3 work in my new compter. It is just impossible and I urgently need to access the software. The problem is that 127.0.0.1 rejects connection. Help is much appreciated.


Help with Centos 7 install

@michael-5302: 2023-02-22 02:23:02
I am total newbie to using linux (Centos 7), and don't really understand it yet. Is it possible for someone to provide me steps and possibly commands to get it installed and running? Ive tried to use the readme file, but i am having no luck. We have been using the windows and web versions of 2, and would like to switch to 3 on our local system and still use mysql.

@robinrt: 2023-02-22 10:18:11
The instructions provided are for Debian and derived distributions, such as Debian, Ubuntu, Mint, etc.

@ccsoh: 2023-02-22 11:12:04
So which version of asm3 should I use for centos? I've tried on ubuntu 22.04, and it constantly was saying files couldn't be found.

@ccsoh: 2023-02-23 01:40:39
Do you think it would be better to use Debian or derived distribution? If so, which would you recommend.

@ccsoh: 2023-02-24 17:18:25
I have it some what installed, but now it says it can't connect to mysql. I have mysql setup with a blank database named asm, firewall is off.

@michael-5302: 2023-02-25 04:10:15
I ended up installing Mint, it still says there are files it cant find, so i installed them manually. when i get to npm install, i get errors. Here is a copy of what it says. gelbart@Server:~$ sudo npm install npm ERR! code ENOENT npm ERR! syscall open npm ERR! path /home/mgelbart/package.json npm ERR! errno -2 npm ERR! enoent ENOENT: no such file or directory, open '/home/mgelbart/package.json' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2023-02-25T03_47_52_870Z-debug-0.log I know the file cant be found, but where would i find it or create it? Any help would be greatly appreciated.

@robinrt: 2023-02-25 08:04:49
There's no need to run npm install, that's only if you're doing development. If you're using Mint, you can install the sheltermanager3 Debian package and follow the instructions in the README starting at "Configuring ASM"

@ccsoh: 2023-02-25 08:08:09
I did that, but it not connecting to any database. When it goes to connect, sometimes it says it can't connect and sometime it says internal server error.

@robinrt: 2023-02-25 08:13:20
What error do you get in /var/log/syslog when it fails to connect? What have you set for your database values in /etc/asm3.conf ?

@ccsoh: 2023-02-25 08:16:32
I left everything the way it was, except for the location of the database. I believe it's a firewall block, it says UFW BLOCK, but if it's firewall, I have it disabled.

@ccsoh: 2023-02-25 08:18:06
Database is set to mysql, localhost, 3306, username, pwd, asm

@ccsoh: 2023-02-25 08:18:39
Database is setup in mysql as the same name, asm.

@robinrt: 2023-02-25 08:33:21
If you're getting block messages then you clearly can't have it disabled? Try "ufw status" to check whether it's running and "ufw disable" to disable it. Both commands need to be run as root.

@robinrt: 2023-02-25 08:34:35
You can also use SQLite instead of MySQL which is a lot more straightforward. Set the db type to SQLITE in asm3.conf and for the db name parameter, set a path to a file for it to create, eg: /tmp/asm3.db

@michael-5302: 2023-02-25 08:37:15
mgelbart@Server:~$ sudo ufw status Status: inactive mgelbart@Server:~$ can i import a database from MYSQL to SQLLITE?

@robinrt: 2023-02-25 08:56:00
if you have an old ASM2 that's working with MySQL there's a dump tool that will output the data as generic SQL that will load into any database (System->Database->Dump Database - I think). You can run that against the Settings->SQL interface tool in a new ASM3 database to import the data.

@ccsoh: 2023-02-25 10:29:39
Thank you, I will see how it goes and let you know.

@michael-5302: 2023-02-25 21:56:39
Okay, I did as you suggested, and I still have the same problem of not connecting, but here is the new errors. I do not see any firewall errors now. -Error #1: CRITICAL shelte Database.execute unable to open database file File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 284, in execute c, s = self.cursor_open() File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 148, in cursor_open c = self.connect() File "/usr/lib/sheltermanager3/asm3/dbms/sqlite.py", line 18, in connect return sqlite3.connect(self.database, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES) sqlite3.OperationalError: unable to open database file -Error #2: CRITICAL shelte Database.execute failing sql: select count(*) from animal None

@michael-5302: 2023-02-26 01:00:37
if i type 'http://localhost/asm3/database', the "create your database" page loads.

@robinrt: 2023-02-26 08:27:16
systemd has given your Apache a private tmp folder, stopping it from reading your database file in /tmp. Either move the database to another folder that isn't tmp, or allow Apache to read the global tmp with these commands (note that the line that starts with echo up to privatetmp.conf is one line - this forum is adding a break): ``` mkdir /etc/systemd/system/apache2.service.d echo -e "[Service]\nPrivateTmp=no" > /etc/systemd/system/apache2.service.d/privatetmp.conf systemctl restart apache2 ```

@ccsoh: 2023-02-26 08:30:27
Thank you, I will give it a try and let you know the results.

@michael-5302: 2023-02-26 17:30:43
Still getting the same error. CRITICAL asm Database.execute unable to open database file File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 284, in execute c, s = self.cursor_open() File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 148, in cursor_open c = self.connect() File "/usr/lib/sheltermanager3/asm3/dbms/sqlite.py", line 18, in connect return sqlite3.connect(self.database, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES) sqlite3.OperationalError: unable to open database file

@michael-5302: 2023-02-26 17:31:15
CRITICAL asm Database.execute failing sql: select count(*) from animal None

@michael-5302: 2023-03-01 18:53:26
Any other ideas/suggestions?


HomeAgain Registration

@jhirizarry: 2023-02-18 01:11:48
I noticed an error when trying to register my microchips with Homeagain. The site http://homeagain.4act.com is not available when I click on it and the log says "ALERT: received HomeAgain 54101 'account not found' response header - abandoning run and disabling publisher" I went to the Homeagain site and tried my user account and it worked, although the url for the site is different than the one listed in SM. Is this feature no longer supported? Thanks! John

@robinrt: 2023-02-18 08:03:55
The username and password for HomeAgain integration is a pair of machine generated UUIDs that they generate and send to you. The login for their site will not work. You'll need to get in touch with HomeAgain to ask for an API user/password.

@jhirizarry: 2023-02-18 13:24:23
Thanks! I'll get in touch with them.


Incoming forms wont stay deleted

@jessrescue: 2023-02-14 15:51:34
I had it set to delete incoming forms manually as a precaution by system admins. problem is after I delete them they come back.

@robinrt: 2023-02-14 16:19:21
Hi, how are you deleting the forms? Are you using the "Delete Processed" button, the regular "Delete" button or are you relying on them being deleted automatically when you leave the screen.

@jessrescue: 2023-02-14 16:48:07
I have used the delete processed and they came back & the delete button

@robinrt: 2023-02-15 08:32:35
That sounds very odd, are you a sheltermanager.com user? If so, please email us at help@sheltermanager.com and let us know your account number so I can take a look.

@robinrt: 2023-02-15 08:36:50
I have just noticed that the screen doesn't check you have delete incoming form permissions, so the buttons always appear, but will not delete forms if you don't have permission. I'm applying a fix for that now, but you should check that your users have permission to delete incoming forms. Do that by checking what role they have for their accounts under Settings->System user accounts. Edit the role and grant it permission under Settings->User Roles. Note that users need to log out and back in again when their permissions change.

@jessrescue: 2023-02-15 14:10:09
I will recheck it for our account I have system admin privileges so that is why it was odd it wasn't doing it.


Request: add publishing options for shelter animals count data

@ibesky: 2023-02-12 11:00:52
Request if it's feasible (unless I'm missing something, which is also entirely possible). We're using the automatic publishing to SAC which is AWESOME - thank you for making it happen. I was wondering if in the publishing options, we could have the ability to set the categories for seized animals and transfers, like we do for strays, surrenders, or TNR. All of our seized animals show up as "other" in the database and I don't see where to link the categories on the ASM backend.

@robinrt: 2023-02-12 12:18:40
Animals with the "Cruelty Case" flag go in the impound/seized count. There's no need for entry categories for transfers as we use the transfer in tickbox on the entry slider. It's only strays and surrenders that we don't have built in flags or fields for, so that's why they can be configured from entry categories.

@ibesky: 2023-02-12 16:24:20
Ok, thank you, I'll have to look at my settings since ours aren't showing up!

@ibesky: 2023-03-18 10:00:57
Hi Robin, I updated the animals in question to have the cruelty case flag on their listing, and I still have the animals showing up in SAC as "other". The only thing that I can think of is that the flag is supposed to have a specific ID number (ours is 7 and I'm in lookups -> animalflags) and that's making it not behave properly. Any insight you can give would be appreciated.

@robinrt: 2023-03-18 10:07:55
Cruelty case is built in - it can't have an ID because it doesn't appear in lkanimalflags. Have you added a flag called cruelty case and used that instead of the built in one or something?

@ibesky: 2023-03-18 10:52:21
And that would be our problem! Thank you, time to fix it O.o

@ibesky: 2023-03-18 10:59:33
Adding that we can't use the built in flag to animals that aren't on shelter so this may have been the issue when we went back to "fix" the reporting issue. We have an entry category for cruelty cases but I don't think they ever used the flag - now we know for going forward!


Transfer Movement not working correctly

@mdeprima1964: 2023-02-07 22:42:32
I've used the transfer movement in the past to transfer animals from our rescue to another shelter. It worked well. I tried to do that today, but when I try to select the "transfer to" entity, it's no longer presenting organizations as an option. Only people. Help!

@robinrt: 2023-02-08 08:12:32
It doesn't only show organisations - it looks for people with the "Other Shelter" flag.

@mdeprima1964: 2023-02-08 11:09:09
Resolved. Mostly user error. Thank you.


Looking for a catio/ adoption room hybrid

@lifescoutn: 2023-02-06 16:25:46
Sorry to bother everyone here, but I'm looking for advice for an Eagle Scout project at a local shelter. The original idea was to build a 3' x 5' catio inside a larger free roaming room to allow extra cats in. The possibilities include either all FIV cats or cycling caged cats in every few weeks so they can run free (most every cat gets out of their cage daily). -The volunteers wanted cats to get space to run, with beds and shelves. -The director was hoping for a small adoption area. -A worker suggested that you wouldn't want people walking into a small enclosure with cats, so the catio would work best. -The director then said a smaller catio on wheels to push them around as necessary. -Someone in charge of cats said that it would cause too much stress to get them in and out (in carriers to another room). We're thinking of a small catio with a side door to the cats running in and out to the adoption space, maybe with doors in the catio to guide them into the adoption room. But there's nothing even close to this online. The large plexiglass ones look amazing but the space is a little limited, and affording it is definitely an issue (shelter will offer donation request letters, but not funding). Has anyone seen an idea that works?

@adoptamutt: 2023-02-06 16:33:33
I would suggest going to the "ASM Rocks!" Facebook or the "Animal Shelter/Rescue Workers Network" Facebook page and ask that question. I bet either one of these would give you a ton of suggestions.

@lifescoutn: 2023-02-07 20:19:00
Thank you! I had no idea where to start, and this will be great! Have a good day!


DB Error after upgrade

@rementis2: 2023-01-31 19:53:09
After upgrade from 45 to 46 I can't publish and I get this error in asm3.log: Jan 31 12:46:06 lightningtournament CRITICAL asm Database.query (1525, "Incorrect DATETIME value: ''2023-01-31 06:25:36''") File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 552, in query#012 s.execute(sql, params) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 209, in execute#012 res = self._query(query) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 315, in _query#012 db.query(q) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 239, in query#012 _mysql.connection.query(self, query) MySQLdb._exceptions.OperationalError: (1525, "Incorrect DATETIME value: ''2023-01-31 06:25:36''") Jan 31 12:46:06 lightningtournament CRITICAL asm Database.query failing sql: SELECT ID FROM animal WHERE LastChangedDate > %s UNION SELECT ID FROM adoption WHERE LastChangedDate > %s UNION SELECT ID FROM media WHERE Date > %s UNION SELECT LinkID FROM audittrail WHERE TableName='configuration' AND Action=1 AND Audit Date > %s ["'2023-01-31 06:25:36'", "'2023-01-31 06:25:36'", "'2023-01-31 06:25:36'", "'2023-01-31 06:25:36'"]

@robinrt: 2023-02-01 11:11:23
Which publisher are you using when this happens? Have you got a log excerpt before this point so we know what the query is?


Search function on the Forum

@mdeprima1964: 2023-01-30 23:02:20
Doesn't seem to work

@robinrt: 2023-01-31 09:52:19
The forum isn't our software so I have no way of fixing it, but I'll report it to the provider if you can give me some details. When I use the search box it seems to work for me? If I search for "search function" I get this post.


Zeroing out accounts at beginning of the year

@mdeprima1964: 2023-01-30 22:59:29
We're trying to use the accounts function this year. We've been playing around with it to get ready and have balances in some of the accounts. How do you zero them out to start the year? How do you save the data before you do that? On another area... How do you create the beginning balances? Like your bank account balance etc? This section could use more documentation. Since most examples are dealing with physical inventory and I'm dealing with cats, it's really hard to grasp how to translate that. If you have a recommendation in terms of a book or website that would help me with the double entry bookkeeping for a rescue, that would be great. We have few physical assets that we'll track.

@robinrt: 2023-01-31 09:48:17
Hi, you can set the accounting period start date under Settings->Options->Accounts - this resets the totals from that date. No need to manually zero anything out. Opening balances are usually set by having an Income::OpeningBalances nominal income account that you withdraw from into your bank type accounts. I don't really have any specific recommendations for learning double entry book keeping but I'm sure there must be lots of resources online.

@mdeprima1964: 2023-02-07 22:43:10
This was very helpful and got me on the right track. Thank you


Events?

@willhsnba: 2023-01-30 19:53:58
I love checking out the patch notes at the bottom to keep an eye out for cool new features and little tweaks that might change things to get a jump on staff questions. It looks like Saggi has been working on some events framework and it should have been recently implemented, but I can't find it anywhere. Is it still brewing? It is so cool seeing ASM evolve!

@robinrt: 2023-01-31 09:49:51
It's not finished yet so the UI isn't complete/active in production. It will allow shelters to track fundraising events that they hold and which animals participated in things like adoption events.

@willhsnba: 2023-02-02 18:42:11
Exciting! Thanks for the preview blurb :)


Error When Trying to Open Attached Media (PDF)

@vikib: 2023-01-24 18:43:31
On at least one of my animals, I'm getting this error when I try to open an attached PDF file. DBFS Error Failed retrieving vb0822/48245.pdf from S3 (endpoint=https://684ca8c9fe0c90d51af061fedaa7ffbd.r2.cloudflarestorage.com): An error occurred (InternalError) when calling the GetObject operation (reached max retries: 4): We encountered an internal error. Please try again. Have I lost access to this file or is it a back-end error that will be resolved at some point? Thank you

@robinrt: 2023-01-31 09:50:45
Hi, I think this was transient, no files were lost. We saw it happen on a few customers for a short time and then it cleared up. Is this still happening for you?


Bulk Vaccination

@jhirizarry: 2023-01-19 03:19:16
This is a great feature and an easy way to enter vaccinations for multiple animals at one time...Until the vaccination you want to enter is Rabies. I took 15 kittens for FVRCP and Rabies vaccinations today. I entered the FVRCP using the Bulk Vaccination feature, however; when doing the same for Rabies I selected the 15 kittens and I got stuck when I needed to enter the 15 unique Rabies tag numbers. I ended up having to go to each record and enter the tab number, which defeated the purpose of the Bulk entry. Any thoughts on how to get around this or is the Bulk Vaccination feature just not going to work for Rabies. Thanks!

@robinrt: 2023-01-19 09:07:01
Hi, you're right, bulk can't really help when you need to enter 15 different values. At least if you do it on the Vaccination Book screen they should still be on screen so you can edit them all quickly.


Animals Reclaimed by owner with owner DOB and fees paid

@mmover: 2023-01-17 19:04:43
I'm trying to create a report that pulls the intake date, outcome date (redemption date) , animal information, owner information, and the amount of redemption fees collected. The two things I want in the report are the owner's date-of-birth and the fees collected for that movement/redemption (donationtypeID = 196). Owner's DOB which is a custom field. I think I need the below line but I don't know where to put it in order for it to work. My limited understanding is making me guess that because I'm pulling information from the 'animal a' table and not the owner that it might not work? I've used this line to pull DOB for a report but it was doing it from the 'ownerdonation' table COALESCE((SELECT af.Value FROM additional af INNER JOIN additionalfield aff ON aff.ID = af.AdditionalFieldID WHERE af.LinkID = owner.ID AND aff.FieldName = 'DateofBirth'), '') AS DOB This is what I currently have: Current Report: SELECT a.AnimalName, a.ShortCode, s.SpeciesName, atp.AnimalType, a.BreedName, e.ReasonName, o.OwnerName, a.DateBroughtIn, m.MovementDate, a.NeuteredDate, o.OwnerAddress AS OAddress, o.OwnerTown AS OTown, o.OwnerCounty AS OCounty, o.OwnerPostcode AS OPostcode, pl.LocationName, a.PickUpAddress, a.BroughtinbyOwnerID, basecolour.basecolour, CASE WHEN a.DeceasedDate Is Not Null THEN 'Died' WHEN a.ActiveMovementDate Is Not Null THEN (SELECT MovementType FROM lksmovementtype WHERE ID = a.ActiveMovementType) ELSE 'On Shelter' END AS OutcomeName, CASE WHEN a.DeceasedDate Is Not Null THEN a.DeceasedDate WHEN a.ActiveMovementDate Is Not Null THEN a.ActiveMovementDate ELSE Null END AS OutcomeDate, CASE WHEN a.DeceasedDate Is Not Null THEN (SELECT ReasonName FROM deathreason WHERE ID = a.PTSReasonID) WHEN a.ActiveMovementDate Is Not Null THEN o.OwnerName ELSE '' END AS OutcomeQualifier FROM animal a INNER JOIN basecolour ON basecolour.ID=a.basecolourID INNER JOIN species s ON a.SpeciesID = s.ID INNER JOIN animaltype atp ON a.AnimalTypeID = atp.ID LEFT OUTER JOIN adoption m ON m.ID = a.ActiveMovementID LEFT OUTER JOIN owner o ON m.OwnerID = o.ID LEFT OUTER JOIN owner oo ON a.OriginalOwnerID = oo.ID INNER JOIN entryreason e ON a.EntryReasonID = e.ID INNER JOIN pickuplocation pl ON a.PickupLocationID = pl.ID WHERE MovementDate between '$ASK DATE Left between$' AND '$ASK DATE and$' AND (EntryReasonID IN (1,2,8,11,13) OR IsDOA=1) AND NonShelterAnimal = 0 AND ActiveMovementType = 5 ORDER BY pl.LocationName, a.DateBroughtIn Any help would be greatly appreciated.

@mmover: 2023-01-17 20:29:34
One thing I forgot to mention is that I have a report that pulls the animal's info, the fees collected, and the person who paid the fee's info. In most cases the owner of the animal and the one who paid the fees are the same person but not always. So this report doesn't give me the information I need because it doesn't give me the owners info every time. I don't need to know who paid the fees, I just need to know how much they paid along with the owner's info and the animal's info. Hopefully that helps clarify.

@adoptamutt: 2023-01-24 16:52:12
I believe if you add something like "(SELECT af.Value FROM additional af INNER JOIN additionalfield aff ON aff.ID = af.AdditionalFieldID WHERE af.LinkID = o.ID AND aff.FieldName = 'dateofbirth') AS DOB" to your select statement you can pull the dob. Also if you add "INNER JOIN ownerdonation ON ownerdonation.MOVEMENTID = a.ActiveMovementID" you would get the donations for only that activemovement. Then you could add "ownerdonation.donation" to your select statement to get the donation regardless of who made it. Of course, test test test.

@mmover: 2023-02-25 21:57:11
Thank you so much! I will try that.


Hidden people notes

@leannec: 2023-01-16 13:14:16
Is there a way to have notes for a person that are hidden from view from most people, and only give access to some people? I can't see anywhere.

@robinrt: 2023-01-16 14:56:00
You could use the investigation tab for person records, it allows dated notes to be recorded and users must have the view investigation permission to see them. If you don't see the investigation tab, make sure animal control is not ticked under Settings->Options->Remove (and make sure your user has permission to view investigation notes).

@leannec: 2023-01-17 00:14:57
Thanks. This seems to work!


Using Square for payments and donations

@jhirizarry: 2023-01-11 19:17:21
Hello, is there a way to use Square as a payment processor? If not, are their plans to? We use Square for Adoptions and donations and have to create an addition client record in Square to keep track of payments and donations types.

@robinrt: 2023-01-13 08:59:33
Hi, there isn't a way at the moment, but it is on our list for future development as Square seem quite popular.


Overview non-shelter animals

@9inchnacho: 2023-01-10 09:41:35
Is there a possibility to show the non-shelter animals? Even better would be per site and unit.

@robinrt: 2023-01-10 11:04:41
Sorry, no, I can't see how that would make any sense? They are public-owned animals that are not in the care of the shelter. You can get a list of them from the advanced find animals screen by setting Location to (all) and Flags to Non-Shelter.

@9inchnacho: 2023-01-11 14:46:31
As we use the program for our clinics treating also street animals, this question came up. However, your input of the advanced search is great. Thank you very much.


Signature screen not staying in place

@mdeprima1964: 2023-01-01 02:56:16
I first noticed this last week and it was a problem this weekend when we did adoptions: When taking signatures on screen, the signature pad won't stay in place, making it very difficult to sign. Same problem on an Android and an iPhone.

@robinrt: 2023-01-01 16:47:51
Is it the signing pad screen in the mobile interface that you're using? Or the "sign on screen" option under the media tab of the desktop interface?

@robinrt: 2023-01-10 11:06:25
I think we found and fixed this a week ago if you'd like to check?

@mdeprima1964: 2023-01-30 22:59:53
Much better! Thank you!


Importing Cats

@jhirizarry: 2022-12-30 15:24:55
We are taking on 27 cats from our county shelter. They use Sheltermanager as well. I asked them to Export the records using the the "All Photos, Documents, PDF's selection under the Media dropdown. When I Import the file, the pictures and documents do not transfer over. At least I do not see them associated with each cat record. I am missing a step in the Import process?

@jhirizarry: 2023-01-02 15:12:58
I figured it out. Thanks!


Audit retention length should be customizable

@mattatmickaboo: 2022-12-28 21:02:08
Hi all! I'll attempt to submit a code fix for this to the open source github repo, but want to log this in case I get pulled away to other things and am unable to. Our organization has a lot of volunteers and has occasionally had to look back through audit records for a year or two to straighten out administrative issues. The default audit record retention is 6 months and that's hardcoded into audit.py I've manually changed it but lost records when we did an upgrade and I forgot to go back in and change the hardcoded value. (I restored them from backup). Would you consider having a days value set in the configuration instead, where audit.py will pull in an organizationally-defined audit record period?

@mattatmickaboo: 2022-12-28 21:05:03
I saw some replies below concerned with performance of larger audit record lengths. Another alternative would be to implement a "cold storage" for audit logs in a separate table, and only index UI / Animal records off the "recent" audit events. That sounds like more complex and more difficult logic though - I'd be happy to just have the ability to customize it a bit and decide how to optimize performance on my end

@robinrt: 2022-12-29 09:07:09
Yep, it should have been a sitedef. I've commited a fix so you can override it in asm3.conf with db-retain-audit-days (default 182). I would worry about performance later if reporting on that table becomes an issue - no point trying to pre-optimise something that might turn out to be fine.


Save in work document or Auto Save

@mhs_jeff: 2022-12-28 20:28:09
Maybe a silly question. We have started processing all of our applications in ASM which has been great for our paper usage. We created a application processing cover sheet document template which gets generated and saved in the person's media tab. When we are doing background checks, references calls, etc we go into the media tab and edit this document. We have had a lot of issues with people forgetting to save after they have made several changes to the document and then their changes are lost. When asking why they don't save as much it is because when you hit the save button it saves but also closes the document making it hard to save as part of the work flow. So two questions. Is there a way to enable an auto save feature and if not is there a way to make it that saving does not close the document? Thank you!


127.0.0.1:5000

@montbatcol: 2022-12-26 17:36:11
I have changed my computer which is running on Windows 10. I have used version ASM 3-3.2.1 on the old computer and it ran perfectly. Now, it seems impossible to make ASM work because it can't reach 127.0.0.1:5000 Anyone able to help? Many thanks Montserrat


Location for Good Samaritan and Rescue Partner Intakes

@mhs_jeff: 2022-12-22 19:31:35
Hey all, We have been on a path of trying to make our data as good as possible and I could use some help. We intake animals in a variety of ways, owner surrender, good Samaritan surrender, rescue partner, etc. When owners surrender we list them as the original owner along with their address so when we pull a report on intake animals we can easily track origin town and city. The problem we are having is with other types of intakes. We work with several partners including trappers who cover multiple areas. We still want to obviously list that they were brought in by the rescue partner but are trying to figure out a way to track origin city / state for each that way when we pull an intake report that way we can better track all the communities we serve. My first thought was to create a generic "person" for each town and have that be the original owner but I thought that might cause confusion. Is there any better way? Thanks! Jeff

@robinrt: 2022-12-23 11:25:02
There's a Jurisdiction field/dropdown on animal records. You could create each town as a jurisdiction (Settings->Lookup Data) and assign it to the animals. There are many reports in the repository that will break down by jurisdiction.

@mhs_jeff: 2022-12-28 20:14:51
Thank you for the reply. In order to use the same report that we have been using, we just created a generic "person" for each town.


Create Database fails

@asmcodehelp: 2022-12-22 06:39:32
Did a fresh install of latest github code (12/21/2022 commit# 8b79978) on Ubuntu 22.04 + MySQL. Create Database begins, but fails with 'internal server error'. Last few lines in asm3.log show: INFO asm_de dbupdate.install_default_data creating default database schema CRITICAL asm_de Database.execute (1170, "BLOB/TEXT column 'EventAddress' used in key specification without a key length") File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 289... CRITICAL asm_de Database.execute failing sql: CREATE INDEX event_EventAddress ON event (EventAddress) None Any ideas? Thanks.

@robinrt: 2022-12-22 08:10:33
It's a mismatch in the new table definition - EventAddress should be VARCHAR not TEXT. I've committed a fix now. Thanks for letting us know.


Media tab PDF no longer viewable in app

@ketalabama: 2022-12-15 00:09:14
Used to be i could click on a PDF attached to an animal's record from the media tab when in the app and it would display a view of the document. For about the past week, from an iphone, when I click on an attached pdf it brings up a blank screen. I'm able to open PDFs attached in messages and such so I don't think it is the iphone. Anyone else experience this issue?

@robinrt: 2022-12-15 08:35:37
I think Apple have broken the PDF.js we bundle for use with the app. We're retiring the app as it's no longer needed. The easy fix is to stop using the app, and login with https://m.sheltermanager.com in your mobile browser (you can still bookmark this page with your phone and make it act like an app).

@ketalabama: 2022-12-15 19:42:59
When is the app and support for the app being retired?

@robinrt: 2022-12-15 21:28:28
It will disappear from the app store next November. The mobile interface is still available at m.sheltermanager.com and always will be (we're also most of the way through a much improved new version of it) - there's just no need for the actual app itself any more and it's a pain to maintain.


Repeated Diary

@9inchnacho: 2022-12-14 08:36:00
I am looking for a way to repeat the Diaries. Is this already possible?

@9inchnacho: 2023-01-10 09:41:50
bump

@robinrt: 2023-01-10 11:05:26
Sorry, it isn't. As long as you don't need the full completion history, you could simply re-diarise them as they come up by moving the diary date on.

@9inchnacho: 2023-01-11 14:41:47
ok, thank you


Keyword for AnimalAge truncated in documents?

@ketalabama: 2022-12-05 10:17:25
We use the keyword <<Age>> in printed documents. I'm noticing that while the animalage in the database shows as "2 years 8 months" in the printed document it shows as just 2 years. I played with using <<DisplayAge>> as well in case that behaved differently but it does not. Is this a bug or just how it works or should I be using a different keyword? Thanks!

@robinrt: 2022-12-15 08:37:12
It's just how it works for document output.


Audit Trail

@bkrodle: 2022-12-01 14:02:19
We were looking up a dog from April 2022 in our database and noticed that the audit trail was blank. We checked several other animals and noticed the same thing. Is there a time limit on how long the audit trail stays populated?

@robinrt: 2022-12-01 14:15:43
Yes, it's kept for a rolling 6 months for performance reasons (it would quickly grow to a huge size and be slow to report on and retrieve data from otherwise).


Screens on my mobile

@mdeprima1964: 2022-11-27 17:35:43
Ever since I've had a mobile phone, I've used the desktop version of ASM3 via my phone and it's worked well. Yesterday I went to use it and the screens seem reformatted and the text is very small. Is there a setting I've inadvertently changed, or did a release come out with a change? The last screenshot is what the first menu used to look like. I'm sad. [Screenshot_20221127-112147](//muut.com/u/sheltermanager/s3/:sheltermanager:dnYJ:screenshot_20221127112147.png.jpg) [Screenshot_20221127-111501](//muut.com/u/sheltermanager/s3/:sheltermanager:1YFp:screenshot_20221127111501.png.jpg) [Screenshot_20221127-110926](//muut.com/u/sheltermanager/s3/:sheltermanager:VOa2:screenshot_20221127110926.png.jpg) [Screenshot_20221127-113353](//muut.com/u/sheltermanager/s1/:sheltermanager:dAov:screenshot_20221127113353.png.jpg)

@adoptamutt: 2022-11-27 19:28:36
My desktop screen looks normal (like your ..113353) on iPhone.

@mdeprima1964: 2022-11-27 21:30:00
Hmmm.... Then what have I done I wonder?

@mdeprima1964: 2022-11-27 21:42:49
Ok, I figured it out. I had an option called "Desktop Site" selected in my browser drop-down (see screenshot). When I unchecked it, all returned to normal. Thank you for checking Karen, that helped. [Screenshot_20221127-153654](//muut.com/u/sheltermanager/s3/:sheltermanager:rMv4:screenshot_20221127153654.png.jpg)


Hide or Ghost out Submit button until form is filled out

@jhirizarry: 2022-11-25 15:13:18
So I have setup an online form with Show if statements to display a Warning, for example, if the answer to a question does not favor an adoption. The problem is that the Submit Botton is active and the adopter can still submit the form even if the form is not completely filled out or and answer to a question Yes|No is not favorable. If No, cannot adopt, for example.

@jhirizarry: 2022-12-05 18:26:50
Maybe there is a workaround for this? I am trying to use mandatory fields, however; when the field is not visible yet, due to a show if condition, the submitter can still hit the submit button. I have it setup so that when submit is entered, it creates the people record and reserves the animal, provided they got that far in the online form. I am trying to streamline the adoption process and having the Person record created automatically is extremely helpful.

@robinrt: 2022-12-15 08:39:18
It's deliberate behaviour - if a field is hidden by showif then it is not mandatory. Mandatory only applies to fields the user can see. Otherwise, fields the user can't see/fill out would block them from submitting the form.

@jhirizarry: 2022-12-30 15:13:11
Thanks, Robin. What I was hoping to do was to hide or ghost out the Submit button until the entire form was filled out. This prevents, for example, someone answering the question, "Are you 18?", answering "NO" and then submitting the form.


Mobile format for online forms

@jhirizarry: 2022-11-24 23:37:31
I have tried to figure this one out based on all the forum responses but fall short each time. The online forms are coming together, however, when viewed on an iPhone, for example, the size is huge. See attached. I see there is code to account for this in the Header, but it seems to not work for me. Thoughts? [PNG image](//muut.com/u/sheltermanager/s3/:sheltermanager:0jGl:pngimage.png.jpg)

@robinrt: 2022-11-25 08:42:00
It looks like it's working as expected? You can adjust the font size for the small screen media query in this section of the CSS. Change font-size: 110% to a smaller value, eg: 100% or 90% ``` @media screen and (max-device-width:480px) { body { font-family: sans-serif; } * { font-size: 110%; } ```

@jhirizarry: 2022-11-25 14:27:26
That worked!! Thanks again.

@jhirizarry: 2022-11-25 14:39:48
Actually, take that back. Looks great on an iPhone, but on an iPad it messed the formatting up.

@jhirizarry: 2022-11-25 17:13:43
All good now. Thanks again for your help! I forgot about the server side delays. :-)


Formatting for Online Form

@jhirizarry: 2022-11-24 17:03:47
Is there a way to format the check boxes so they are left adjusted? See attachment. [Left adjust](//muut.com/u/sheltermanager/s3/:sheltermanager:DxLf:leftadjust.jpg.jpg)

@robinrt: 2022-11-24 17:27:39
Sorry, there isn't an easy way to do that.

@jhirizarry: 2022-11-24 17:38:41
No worries! Thanks for the quick response. I saw another user in the forum ask about the font size on the mobile device. I am trying to understand how to resolve that for the form I am working on. [PNG image](//muut.com/u/sheltermanager/s3/:sheltermanager:tImk:pngimage.png.jpg)


App Crash when trying to take photo

@jhirizarry: 2022-11-24 14:03:52
I just discovered and installed the ASM iPhone App. Noticed the Animal Photo Uploader and got really excited. However, when I select the animal and tap Take Photo, the app crashes. I found that I could take the photo using the phone and the Select from Gallery option works. I have a lot of cats to photo so being able to take the photo from the app would be far easier. I also tried this on my iPad and the app crashed there as well.

@robinrt: 2022-11-24 15:32:54
Hi, the app is being retired due to unreliability and issues like this. If you login to the mobile interface with your phone browser at m.sheltermanager.com you should be able to take a photo from within an animal record.

@jhirizarry: 2022-11-24 16:26:20
I see. That worked! Thank you!


How to add an emergency/alternate contact to the adoption record?

@ken2950: 2022-11-23 04:30:54
Our rescue would like to add an emergency contact to each new adopter record, complete with the emergency contact's first & last name, email, and phone number. As a bit of additional background, our adoption application asks for this information. We would like to have it automatically inserted into the correct fields upon being transmitted to ASM(similar to how the adopter's details are posted to ASM). How would we go about doing this?

@ken2950: 2022-11-23 05:54:23
Update: I ended up creating "additional fields" for all of the emergency contact information we want to have with each new person record (e.g., name, address, phone, email, etc.). I then ensured that in our online forms, the field names matched (e.g., if I named the field for the emergency contact's phone number "emergencycontactphone," I made sure to use the same field name for the online form). I thought it would help ASM know how to map the fields received in the online form to the new person record if the field names matched. Unfortunately, that seems not to be the case, as ASM does not bring in the data from any of the additional fields when a new person record is created from the "view incoming forms" page. Am I doing something wrong? Any help is appreciated.

@robinrt: 2022-11-23 07:31:21
Hi, yes, in your online form fields they need to start with the word "additional" followed by the name of your additional field. Eg: if your additional field is named emergencycontactphone, then on your form it must be named additionalemergencycontactphone

@ken2950: 2022-11-24 05:17:42
That worked! Follow-up question: Our form collects the address in two separate fields (e.g., address line 1 and address line 2 are separate fields). Not all addresses have a second line, but for those that do, we want to be able to capture it. How would I get ASM to take the values from address line 1 & 2 and insert it sequentially into a single field (ideally with a line break in between) in the new person record like it does by default when a new adopter is created?

@robinrt: 2022-11-24 08:39:12
Sorry, the short answer is that there's no way to do that. Your address must be a single field. If you use the notes type the submitter can include line breaks.

@ken2950: 2022-11-24 21:23:01
Thanks for letting me know. One more question: I've noticed a potential bug. Every time I change the online form and then proceed to preview the form in ASM, my changes are not shown. In fact, I just made a change to the form where I changed the field type from "text" to "lookup, multiple select," and the changes are not appearing on the form. I've noticed this with several of the forms I'm working on, and the only workaround is to duplicate the form and preview the changes on the duplicate. Any ideas as to what's happening?

@robinrt: 2022-11-25 08:38:30
Yes, the forms are cached on the server side for 30 minutes. On the edit online forms screen, there's a pair of buttons to the right of the form's name near the "View form" link. One of these is to open the form in development mode without caching. You can refresh this version of the form to see your changes reflected immediately.


Document Fonts

@mdeprima1964: 2022-11-14 07:05:12
I've created a document reflecting the cat's medical to be sent to the adopter after adoption. Everything looks fine when it's viewed from the media tab, but when I click the "print" or "pdf" buttons, the data in any tables does not retain the correct font. [Screenshot_20221114-002309](//muut.com/u/sheltermanager/s3/:sheltermanager:wCzS:screenshot_20221114002309.png.jpg) [Screenshot_20221114-002255](//muut.com/u/sheltermanager/s3/:sheltermanager:2Z9t:screenshot_20221114002255.png.jpg)

@robinrt: 2022-11-14 09:23:15
Did you copy this document from another source, such as Microsoft Word? Often, they can set fonts via an embedded style tag that doesn't work when converting to PDF. You should be able to correct this by selecting the text in your template and manually applying the font styles you want with the font dropdowns. This *should* fix printing and printing to PDF on the local machine. Converting to PDF with the toolbar button does it on our server and you are limited to the truetype fonts we have installed on the server (which is the standard Microsoft ones such as Times New Roman, Courier, Arial, Verdana, etc).

@mdeprima1964: 2022-11-18 17:54:38
Ok, I've updated the font sizes, but not the fonts themselves. And yes! I created the document template in WORD. Thank you!


Animals in care on particular date

@jimdunne: 2022-11-08 11:26:28
Hi, Is there a report/way of finding out the number of animals that were in care on a particular date? I'm sure I have found it before. Many Thanks!

@jimdunne: 2022-11-08 11:30:34
[SOLVED] Found it - Shelter Inventory at Date


Adoption Fee field

@jhirizarry: 2022-11-06 15:28:30
Hello, I am trying to include the Adoption Fee field on the Cage Card report. I cannot find that field referenced in any of the tables. The Adoption Fee filed shows up on the Animal tab in the details section. Does anyone know what the name of the field is and what table it is in?

@robinrt: 2022-11-06 15:38:43
It's animal.Fee

@jhirizarry: 2022-11-06 16:06:05
Thanks for the quick reply. Unfortunately, that did not work. [Screen Shot 2022-11-06 at 11](//muut.com/u/sheltermanager/s2/:sheltermanager:mihR:screenshot20221106at11.02.14am.png.jpg) . I included animal.fee in the query and $animal.fee in the html, but it errored out. Also, I do not see the field fee in the animal table.

@robinrt: 2022-11-06 17:45:40
It's just $fee in the HTML, it doesn't understand table qualifiers and only looks at result columns. If you are modifying our existing reports, they usually alias the animal table as a, so you might have to use a.fee or just fee without a table qualifier.

@jhirizarry: 2022-11-06 18:01:58
Genius! That worked!! Thank you!!! Simply $fee in html did the trick. Thanks again!


Adopter Mail Merge Report Returning zero results

@mdeprima1964: 2022-11-06 11:17:58
I'm attempting to run the report "Adopter" under the "Mail" tab and get zero results. When I am on the "Find a Person" screen and select "Adopter" I get 133 people. What am I doing wrong?

@adoptamutt: 2022-11-09 02:43:46
I haven't seen a Mail Merge called "Adopter". Maybe download the Mail Merge "Non-Returned Adoptions" and give that one a try.

@mdeprima1964: 2022-11-14 06:53:54
That worked. Thank you. Just fyi... Go to the "mail" tab at the top, pick "adopters" from the drop down. You get 0 results. The other options, like "Donor's" seem to work.


Special needs display on website

@srupe05: 2022-11-04 19:05:08
I have not been able to get any "special needs" indicator to display on animals published to our website. The 'special needs' box is checked on the record. In looking through the publishing templates, I could not find any code that would generate the output for the special needs box. I tried adding my own code but am a novice and what I tried did not work. Was hoping someone might be able to provide assistance. Thanks!

@adoptamutt: 2022-11-09 02:40:01
<script> if ('$$HasSpecialNeeds$$' == 'Yes') document.write("<li>Special Needs.</li>"); </script>


Adopt-a-pet Publish error

@michael-5302: 2022-10-28 12:22:18
I try to publish our pet list to adopt a pet, but it doesn't work. I did an auto upload test, and it is showing that some of the fields are not valid. Like it says "Grey/Blue/Silver/Salt & Pepper" is not a valid color for the type of "Cat" (Must be a valid color name). Then it also says "Breed2" is not recognized by the current species. I'm assuming I can just delete the breed2 field from the database, but wanted to see if there was another option before doing so.

@robinrt: 2022-10-28 13:08:14
Hi, are you actually using ASM2? I don't think AdoptAPet integration in ASM2 could send colours. ASM3 does not send colours by default since AAP are so stringent about what they will accept. Stopping ASM from sending colours under Publishing->Set Publishing Options->AdoptAPet will fix those issues. I'm not sure I understand the Breed2 bit, have you created a breed named Breed2 or something? The AdoptAPet error message is saying that it doesn't recognise that as a cat breed, however I don't understand how we could ever send that to them as you can't edit the list of publisher breeds and we will only ever send mapped publisher breeds to AdoptAPet. Maybe you hand edited your own import.cfg file on their FTP server?

@michael-5302: 2022-10-28 15:29:13
Yes, we are still using ASM2 because of being able to have it on Windows locally. Nothing was hand edited. I went into MySQL, and I found an entry for breed2ID, listed under animal. Can I just dump the Breed2ID entry without messing up ASM?

@michael-5302: 2022-10-28 15:35:09
Breed2ID is line 72, in the Animal table.

@robinrt: 2022-10-28 15:50:14
Removing a column the system expects to find will stop the system working. I am assuming that it's the value in Breed2 that is causing the issue rather than the existence of the column in the datafile being sent to AdoptAPet (which will still be there, whether you trash the database or not!). Have a look at the second breed field for that cat, then compare it to the publisher breed against that second breed under System->Lookup Data->Breeds. Make sure it's a valid cat breed. Looking at the source for ASM2, there is the option to exclude colours, so I would disable sending them to fix the colour issue. It is not worth trying to send colours to AdoptAPet because their requirements are so strict.

@michael-5302: 2022-10-29 01:44:27
I think that did the trick. just have to wait to see if they actually upload. it says they did but there not showing yet, so maybe there's a delay. Thank you very much for all your help.


Sites

@9inchnacho: 2022-10-25 18:14:07
Dear all, new here. I've enabled multiple sites but don't see where to implement them. Can somebody help? Thank you & best regards

@robinrt: 2022-10-25 22:23:07
https://sheltermanager.com/repo/asm3_help/options.html#display "Enable multiple sites: Once enabled, sites can be created in the lookup data section. Sites can be assigned to locations, user accounts, incidents and people records. User accounts with a particular site assigned can only see animals in locations belonging to their site, along with people and incidents at their site. Leaving a person, location or incident with no site allows anyone to see it. Leaving a user account without a site allows it to see all sites. This allows you to handle multiple sites with one ASM database. A number of site-specific reports are available in the repository."

@9inchnacho: 2022-10-26 16:59:59
Perfect, thank you very much.


Question about newer version of ASM software.

@mcgiwer: 2022-10-18 16:23:25
Hello. I'm curious if there is planed a never version of Animal Shelter Manager (ASM) then 3.x. Are any news about this topic ?

@robinrt: 2022-10-18 17:06:49
https://github.com/bobintetley/asm3/milestone/7


[Feature request] Adminstrator demo

@mcgiwer: 2022-10-18 16:03:58
I would like to request adding to the online demo a administrator account demomonstration (not only user one)

@robinrt: 2022-10-18 16:12:52
Hi, the reason we can't do this is because that would allow malicious users to trash the demo database.

@mcgiwer: 2022-10-18 16:17:24
It could be prevented thru making it readonly 😉


Don't want to charge any boarding

@trishawf_ifr: 2022-09-30 15:25:18
All our cats are in foster care, so there is no boarding cost for any of the cats. I went into the settings and changed daily boarding cost to $0, but there is one cat record where the total boarding cost has still calculated, and when I change it to $0, the change doesn't stick (so next time I go back into the cat record, the total boarding cost is back). For this particular cat's record, I do have another cost listed against this cat's record (for vet work). Just wondering how to make the boarding cost disappear for good and never come back. I had previously changed the cost to $0 but suddenly it had reverted back when I had a look in there tonight.

@robinrt: 2022-09-30 16:29:37
Hi, did you make sure to click the button to the right of the daily boarding cost value on the cat after setting it to 0 to save? If it won't persist, please email us at help@sheltermanager.com with your account number and let us know which cat it is.

@trishawf_ifr: 2022-10-02 03:08:55
Hi, thanks for the tip - I had not clicked that little button. I will make sure to do that. Thanks!


Bulk people

@johockley: 2022-09-27 15:27:38
Hi - I can see the function to bulk amend animal data but is it possible to bulk update people - such as adding or removing specific flags? thanks

@robinrt: 2022-09-27 16:01:14
I'm afraid it isn't right now, but that would be a great feature for us to add in future.

@johockley: 2022-09-27 16:12:39
OK - thanks.


Help with donor management setup

@johockley: 2022-09-26 15:04:16
Hi I'm trying to figure out the best way to manage my fundraising journeys - I need to be able to assign a code for each campaign or event, track progress, send emails, export based on these codes and bulk amend. I was hoping the 'log' function would allow this but I can't see it in the report builder. Does anyone have any idea of the best way to achieve this?

@robinrt: 2022-09-26 17:20:50
Most people do this by creating a person flag for fundraising campaigns, along with a matching payment type. You can then tag the people you want to target wtih email with the flag, and use the payment type for donations made as a result of the campaign so that the payment breakdown by type reports will give you totals for your fundraising campaign.

@johockley: 2022-09-26 17:35:43
OK thanks - would you create multiple flags throughout a project then so that you can see what stage they are at (so prospect, signed up, completed event, paid etc)? Can you bulk amend these and pull reports on them? Would you create a custom report or does one exist for this? Sorry for so many questions I'm a total newbie to this!


"Looking for" section in people records

@trishawf_ifr: 2022-09-25 00:33:17
In "people" records, do other shelters make use of the "Looking for" section for fosterers, or is this supposed to be more for adopters? I notice in the Type section there is the capacity field in terms of numbers of fosters, so is that usually what you'd stick to for fosterers?

@robinrt: 2022-09-25 08:34:42
Yes, correct on both. Looking For is aimed at finding adopters. Some people add extra people flags for their fosterers according to what they're willing to foster. It's then easy to look up who has the "Foster Bottlefeed Kittens" flag etc.


Escaped animal shows on daily meds list

@jimdunne: 2022-09-21 17:23:18
Is there a reason why, once marked as escaped, an animal still appears on the daily meds list? Surely if it has escaped and no longer in care, this should not happen?

@robinrt: 2022-09-21 17:39:38
Have you turned on the option to show off-shelter animals in the medical books? It's under Settings->Options->Medical->Include off-shelter animals in medical calendar and books

@jimdunne: 2022-09-23 17:11:25
I have, but surely an escaped animal is not 'off shelter' no more than one released to the wild is? We use off shelter animals as there are some hedgehog carers locally that do not do meds, faecal tests etc, so we do them for them and need to record them.

@robinrt: 2022-09-24 08:07:30
It's not that sophisticated. off-shelter just means not in care as far as checking animal location is concerned. Unless escaped animals are a regular thing, it will be simpler to hold the regimen for that animal (or delete it).


Person Lookup In Online Form

@mhs_jeff: 2022-09-15 19:57:06
Hey all, We are trying to create an online form to use for references to fill out for applications. Is there a way in an online form to have a person field like the shelter animal field. That way the person who is filling out the reference could select the potential adopter who they are providing a reference for? Thank you!

@robinrt: 2022-09-15 20:03:59
Sorry, no. Loading personal data into a public online form could be hugely dangerous.


Website photos

@rachie_672: 2022-09-13 22:29:52
Is there a way to have certain pets published to 2 different pages on our organizations website? Such as animals on stray hold publishing to a lost and found page and adoptable pets to the adopt me page.

@robinrt: 2022-09-14 10:04:37
Yes, see https://sheltermanager.com/repo/asm3_help/service.html#html-held-animals


Assign multiple carers to a cat

@trishawf_ifr: 2022-09-13 01:05:34
We would like to be able to assign multiple carers to one foster cat . We would rather not have to make one record for two people (carers) especially when they have different surnames (it just looks messy). Is it possible to change settings to allow this, or if not, is it something we can suggest as a future enhancement?

@robinrt: 2022-09-13 10:24:35
A person record can represent a couple. We have a ticket on our list to look at adding second person contact info in future, but most people just combine the names. Eg: First name: John and Jane, Last name: Smith and Jones

@trishawf_ifr: 2022-09-14 06:02:51
Yeah, I tried that and it looked bad (to me at least). So hopefully in future we can add a second person :) Thanks!


Petco Love Lost, Petfinder, & ASM

@catutopia: 2022-09-08 20:56:01
Petco is now requiring us to use ASM to push stray listings to Petco Love Lost through Petfinder to be considered for grants. We do not (and don't intend to) use the automatic upload of adoption ready animals to Petfinder. Petco Love thinks we just need to click on the enable box in ASM and set the status code boxes. Since we have no idea what these status letters (F & H) mean or how they are determined by ASM I hesitate to do this without more information. Does anyone have more information about this?

@robinrt: 2022-09-09 11:05:53
Those status letters are PetFinder's status codes that are put in the import file we send them. F is a found/stray animal, H is a held animal. There isn't a way to enable sending of your strays and held animals to PetFinder without sending your adoptable animals too. Is there a reason you don't want to publicise your adoptable animals with PetFinder?


Getting error during publish

@rementis: 2022-09-07 00:33:41
I occasionally see this error during publish to adoptapet: ALERT: 'ascii' codec can't encode character '\u201c' in position 5382: ordinal not in range(128)

@robinrt: 2022-09-07 09:23:17
This was a fairly recent bug that was fixed back in May. It occurs when extended non-ASCII characters are used in animal descriptions and when constructing the datafile for adoptapet. The only way to fix it is to either update your ASM to the latest from git or to remove special characters from your descriptions or patch the code manually to specify utf-8 in the saveFile function of src/asm3/base.py


pets.csv blank when uploading to adoptapet

@rementis: 2022-09-07 00:32:04
All of my animals disappear and when I ask adoptapet I'm told my pets.csv file is blank. If I then manually publish it goes back to normal.

@robinrt: 2022-09-07 09:17:44
Sounds like it's blank due to errors during publish.


Install ASM3 on stand alone PC with Windows 10

@paultimpson: 2022-09-05 11:32:57
Hi Can anyone give me a step by step installation process of ASM3 on a stand alone PC that has Windows 10 on? I am not very technically minded so it will need to be easy to understand I'm afraid. Many thanks

@robinrt: 2022-09-06 09:35:30
Hi, ASM3 does not run on Windows. It requires a Linux server. There is a package available in the download section for Debian or Debian-based distros such as Ubuntu. You can rent a Linux VPS from many cloud providers for a monthly fee. One of a good enough spec will cost about £20/month to run. It does require knowledge of Linux/Unix and sysadmin skills though. Our hosting is also very reasonably priced at £215/year including email support, regular backups and a guarantee that you'll always have the latest software.


Movement > Adoption - movement does not 'complete'

@trishawf_ifr: 2022-08-31 14:58:53
I have created a movement for a cat using "Adopt a cat", but for some reason it hasn't completed, so when I try to do the next movement (which is the cat coming back into foster care) I can't do it because the adoption one is still 'open'. The status column for the adoption is blank - not sure if that matters? The adoption date is from last year, and the cat was only returned this year. What would be possible reasons for an adoption movement not completing?

@trishawf_ifr: 2022-08-31 15:22:54
Or should I have included the return date in the "movement > adoption" entry to begin with? I see the option Move > Return an animal from adoption, which is what I tried, but it didn't cancel out the original adoption movement.

@robinrt: 2022-08-31 16:06:11
You need to put a return date on the original adoption movement before you can create a new movement.

@trishawf_ifr: 2022-09-01 14:18:15
How would that work when an animal is adopted out as per usual, but you don't know that they're going to come back in future? You wouldn't be putting a return date in then. I would have thought the "Return an animal from adoption" option would add a return date into the adoption movement, but this doesn't appear to work. I also wondered if "Return an animal from another movement" might work? Or "Reclaim an animal".

@robinrt: 2022-09-01 15:13:32
You can edit the adoption at any time in the future and add a return date. The "Return an animal from adoption" screen gives a list of adoptions. Just click the word "Adoption" in the leftmost column of list to edit them and add a return date. All of the tables in the system allow editing records by clicking the bold word in the left column.

@trishawf_ifr: 2022-09-02 00:48:27
When I go to that screen I don't see any adoptions listed - would this be some setting I have that only shows recent adoptions? (this adoption was from last year) If so, can I change it to show all past adoptions?

@robinrt: 2022-09-02 08:26:35
That screen shows adoptions in the past 30 days. If you want to return an older adoption, just go to the movement tab of the animal or person involved in that adoption.

@trishawf_ifr: 2022-09-05 14:08:44
I finally took a look at this tonight and figured out how to do what you were saying (so easy ... didn't realise you could click on the adoption to open the pop up :P ). Thanks for your help!


Adding an animal retrospectively - codes etc

@trishawf_ifr: 2022-08-31 13:09:44
Hello I did a bulk import of cats into our Shelter Manager, and most of them imported fine but I know that a few didn't. I stumbled across one that is missing and I want to add it, but it's going to be out of sequence - so it will get a code that doesn't match the code it should have. The code the cat will get is IF036-22 (which is in sequence for this year's in-take), but the code he should have is IF016-15. My question is, if I add the cat and he gets that first code, can I amend the code to the old one, and then expect that the next cat i add in sequence will get IF036-22 as its code? Thanks! Trisha

@robinrt: 2022-08-31 13:25:05
Yes, you should be able to manually change the code. You may have to run the option to reset NNN codes under Settings->Trigger Batch Processes after changing the code, or the next code issued for the next animal will be 23.

@trishawf_ifr: 2022-08-31 14:20:54
Thanks for this tip. I will try it out.


Newbie question about animal codes

@trishawf_ifr: 2022-08-27 02:36:16
Hi all, We have just signed up to Shelter Manager, and I'm wondering if we can change the format of the animal code to match our usual codes that we use outside of SM? We only rescue cats, so it's pretty simple. Our usual cat codes look like this: IF001-22 This represents the first IF cat to come into our rescue for the year of 2022. Or if we can't use the animal code for this is there another field we can use to manually put our IF codes in, that will be searchable / easily visible in our records? Thanks!

@robinrt: 2022-08-27 08:31:59
Yes, you can edit the format under Settings->Options->Animal Codes. In your case, the format string IFXXX-DD should do what you want.

@trishawf_ifr: 2022-08-28 00:35:47
Great, thank you. I had put that in but wasn't sure if it would work. I'll test it out. :)


Recording Costs

@kerry-fluffybutts: 2022-08-19 19:34:04
Is there any way to record a cost without it being related to a specific animal? Something similar to how the Payment Book works where we could record general costs with a due date and paid date, and be able to see future planned expenditure. I'm thinking of general costs, example our Shelter Manager subscription, purchase of merchandise or equipment, which is not attributable to a specific animal Thanks

@robinrt: 2022-08-20 09:32:20
This is what the Financial->Accounts module is for. You can add your bank accounts and record expenses etc. Payments and costs can automatically create accounting transactions.


Sharing to Instagram?

@adoptamutt: 2022-08-19 15:46:07
Is there Instagram share code that we can add to our publishing templates similar to: document.write('<i class="fa fa-fw fa-facebook"></i><a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=' + u + '">Share on Facebook</a>');

@robinrt: 2022-08-20 09:35:26
Looking around, I can't find anything that says Instagram has an equivalent sharer URL. There might be a javascript API but it will be more complicated.


Animal Numbering

@bkrodle: 2022-08-17 20:37:20
We've noticed that when we enter a dog into the shelter as a stray, owner release, or capture the numbers stay in order, but quarantine and protective custody have reverted to an earlier number. Example dog as comes in as a stray the number is D221006, capture comes in as D221007, owner release comes in as D221008, but we enter a quarantine and we get D22710 and a protective custody enters as D22712. Shouldn't the numbers stay the same as long as it's a dog? I haven't noticed this with cats.

@adoptamutt: 2022-08-17 20:51:44
What is your "Animal Code format" set to? (Settings > Options > Animal Codes)

@bkrodle: 2022-08-17 21:51:15
Animal code format TYYNNN Animal shortcode format NNT I thought it might be those settings, but I can't find anything that would cause it to reserve numbers.

@adoptamutt: 2022-08-17 22:06:25
What are your Types? If you happen to have Types like Dog Stray, Dog Protective Custody then ASM is pulling from two different number ranges. NNN = Number unique for this TYPE of animal. If you are using T or TT in combination with NN or NNN, I think is it better to have all unique first letters of Animal Types (or 1st and 2nd if using TT), otherwise you will see different numbering sequences even though the first letter of the animal code is the same. Does that make sense?

@bkrodle: 2022-08-17 22:28:11
But wouldn't that pull more than 1 dog with that number? When I check numbers before and after those they are captures. It's no big deal, but it was just weird.

@adoptamutt: 2022-08-17 22:35:43
The shelter code would always be different because your types would all have a different first letter. For example, if your types were: "D = Dog Stray", "P = Dog Protective", "T = Dog Capture", "O = Dog Owner Surrender". The first shelter codes assigned for each of these types would be: D22001, P22001, T22001, O22001.

@adoptamutt: 2022-08-17 22:38:37
BTW, ASM looks at the Animal Type ID, not the actual first letter to determine what the next NNN needs to be assigned as.

@bkrodle: 2022-08-17 22:47:09
Yes, I get that, but I don't have it set up that way. I guess I could have. Reporting pulls those numbers separately, but for cage cards our building is small enough not to need different prefixes, just D for dog and C for cat. I've only had 8 protective custody dogs this year , but the number was D22712. I'm wondering if it is using deleted numbers from mistakes (ie, entered dog stray instead of dog capture) to fill in for those protective and quarantine numbers.

@robinrt: 2022-08-18 09:11:23
The letters on your types are not relevant for generating codes - it's the animal type itself that determines which count is used. As Karen said, if you have multiple dog types and you are using NNN codes, they will keep different counts. Have a look at your code format under Settings->Options->Animal Codes. If you have never changed this, it will be TYYYYNNN - with the NNN portion being the number of animals this year for the selected animal type.


Adding new vaccine to drop down menu

@sborrego: 2022-08-14 19:25:45
I want to add a new vaccine to the drop down list of vaccines we have and can't figure out how to do that

@adoptamutt: 2022-08-14 21:13:17
Settings > Lookup data > Vaccination types


Adoption Application Online Form - reserveanimalname

@bajadogslapaz: 2022-08-04 19:20:55
Hi there - We often have dogs adopted and awaiting transport and would like to exclude them from the list of dogs that show up in the "reserveanimalname" field on our online Adoption Application -- so people don't try to adopt a dog that is awaiting transport. We technically still have the dog and don't want the chips registered or to loose track of the dog until it is in the possession of the adopter - so we don't changed their status to adopted until that time. But during this "waiting period" these dogs show up in the form and we get applications for them. Is there another list or flag we can set to prevent this? I don't want to use "NotForAdoption" because that could be confusing with other dogs that are not for adoption for medical or other reasons. Suggestions?

@robinrt: 2022-08-04 19:37:21
Not for adoption is the safe manual way to stop them being adoptable. Other options: 1. You could put animals awaiting transport in another location which is not valid for publishing (this would make them not adoptable). 2. You could put animals awaiting transport on hold (under the Entry slider) if you don't use holds for intake anyway. 3. You could create their adoption movement with a future date. Animals with a future adoption are automatically not adoptable.

@bajadogslapaz: 2022-08-04 23:28:47
Excellent - thank you!


Return Category displays same value no matter the real option selected

@ketalabama: 2022-08-03 10:58:21
We have animals returned from time to time. On the movement tab we always select specific Return Categories. However, when the popup is closed on the Movement grid it always shows "Allergies". No matter what was actually selected. On reports it does reflect the category correctly but not in the UI. Just curious if this can be fixed? [Shelter Manager Return Reasons Issue](//muut.com/u/sheltermanager/s1/:sheltermanager:G2VS:sheltermanagerreturnreasonsissue.png.jpg)

@robinrt: 2022-08-03 11:07:57
Hi, thanks for letting us know. I'll apply a fix for that asap. It's only the on screen display after entry that is wrong as you've seen. If you press F5 to reload the screen they will show in the table correctly.

@ketalabama: 2022-08-03 11:20:54
Wow! Thanks that was fast :-)


PetFinder Photos

@bajadogslapaz: 2022-07-06 18:58:21
I see from some posts in 2019 and 2020 that PetFinder is often slow with the auto upload of photos. Is that still the case -- I'm wondering if I might be doing something wrong. Dogs all got listed but not the photos.

@robinrt: 2022-07-07 09:20:58
It can be at times, yes. There's also an issue in that if an animal is delisted for any reason and then relisted, they'll refuse to use the URLs for images they've already seen so that can cause them to disappear sometimes. If it's been days since you updated PetFinder and there are still no photos, email us at help@sheltermanager.com with your account number and we can nuke and reload your PetFinder listings.


Reorder Photos

@bajadogslapaz: 2022-07-05 21:08:23
Is there a way to re-order the photos in the media tab so we can dictate which photos are published first, second, third, and fourth in adoptapet? Thank you!

@robinrt: 2022-07-05 21:15:42
Sorry, there isn't. The only thing you can do is exclude the ones you don't want. They're sent in the ordered they were added descending.

@bajadogslapaz: 2022-07-06 04:58:55
OK thanks. So it sounds like if we want to reorder them, we need to delete and reupload in a specific order.

@robinrt: 2022-07-06 07:13:36
I'm afraid so. The picture in slot 1 is always the one that you designated as preferred under the media tab.

@bajadogslapaz: 2022-07-08 01:16:19
Yes - got it. Thanks.


Adopt-a-Pet paragraph/line breaks formatting dropped

@adoptamutt: 2022-06-27 14:19:20
Is there anyway to retain the paragraph or line break formatting in our animal descriptions when exporting to Adopt-a-Pet?


where are custom documents stored?

@kytti: 2022-06-24 01:41:05
I had to move my ASM to a new computer. A sql dump allowed all my animal data to be added to the new install, but my custom animal forms documents aren't there. I can't seem to find them on the drive either. Where do I look? Thanks!


additional field name on report

@bfreides: 2022-06-19 21:31:17
I added an additional field name called "sbfnotes" I am trying to call that field on a report. BAF Animals for RG Compare SELECT a.ShelterCode, a.AnimalName, a.id, a.DateBroughtIn, a.MostRecentEntryDate, a.IdentichipNumber, a.AnimalAge, a.BreedName, a.DisplayLocation, a.TimeOnShelter, a.hiddenanimaldetails, sx.Sex, t.AnimalType, s.SpeciesName, CASE WHEN a.ActiveMovementType = 2 THEN 'Foster' WHEN a.ActiveMovementType = 8 THEN 'Retailer' ELSE i.LocationName END AS LocationName FROM animal a LEFT OUTER JOIN animaltype t ON t.ID = a.AnimalTypeID LEFT OUTER JOIN species s ON s.ID = a.SpeciesID LEFT OUTER JOIN lksex sx ON sx.ID = a.Sex LEFT OUTER JOIN internallocation i ON i.ID = a.ShelterLocation WHERE a.Archived = 0 ORDER BY CASE WHEN a.ActiveMovementType = 2 THEN 'Foster' WHEN a.ActiveMovementType = 8 THEN 'Retailer' ELSE i.LocationName END, s.SpeciesName, DateBroughtIn

@robinrt: 2022-06-19 21:34:05
Hi, did you see this in the FAQ? https://sheltermanager.com/site/en_faq_asm3.html


Group all fostered animals together in Shelter View?

@seanimals: 2022-06-12 16:51:10
We've just started using sites and love how the Site mode of Shelter View looks, but we'd like all the fostered animals to show together in one 'site' rather than within the Site they were last at. Is there a way to do that? I know there's other ways to see all the fostered animals in one group, but it would make the Site view much less confusing for our staff if they could be grouped together in this mode. is it possible? Many thanks.

@robinrt: 2022-06-12 19:19:19
When you say the site they were last at, it sounds like it's the site linked to the location? Are you a sheltermanager customer? If so, could you email your account number to help@sheltermanager.com so I can take a look and see what you mean?

@seanimals: 2022-06-15 04:47:10
I am. Doing now.


Different site but same location name

@seanimals: 2022-06-10 15:18:34
I've just started using the Site function but encountered a problem: If sites have locations of similar or same name, there's no way to tell which is which when moving an animal. For example, we have two sites, The Den and The ARK, and both have a Garden A, Garden B, etc. How do we differentiate between locations of the same name but different sites when trying to add their location?

@robinrt: 2022-06-10 16:57:05
The simple way is to put the site in the location name - eg: ARK::Garden A

@seanimals: 2022-06-11 04:09:50
That's what I just moved away from. It's OK. We've renamed the gardens at our three sites: Group A, Garden A, and Garden 1.


Document Templates - PDF no longer loading images

@megw341: 2022-06-09 20:53:21
When we save a document template as a PDF to save in a file or email to adopters it is no longer loading the images (logos, etc). It just shows a box with a question mark. I've tried reloading the images and adding the photos back on the template but it's still giving the same error. These images are loaded in the "Extra Images" section for the document templates.

@robinrt: 2022-06-09 21:11:12
I'm deploying a fix for this now, they should start working again in approximately 5 minutes.

@megw341: 2022-06-09 21:38:26
Thank you so much!


How to make iframe resize to fit content? And how to make it scrollable?

@seanimals: 2022-06-06 12:34:50
I'm trying to finish our new rehoming page, but I have two problems with the asm3-adoptable-iframe (using hyphens because underscores will get deleted). 1. It would be great if I could get the iframe height to fit the content. Is there any HTML or CSS that could do that? 2. Currently, the iframe on the new site won't scroll; all extra content is just hidden. Is there a wa y to fix that? Strangely, it scrolls just fine on our old site, but the problem persists even if I just delete all the new CSS and paste the code from the old site. Why would that happen? I've been searching online for nearly two weeks now, but I haven't found anything that works. I know very little about HTML or CSS, though, and just copy and paste and play around a lot until something works. I can post the code we're using, if that would help. Many thanks for any help at all.

@seanimals: 2022-06-10 14:54:46
I got someone on Fiverr to fix it.


How to style Extra Content?

@seanimals: 2022-06-06 12:22:30
I've almost finished styling our new rehoming page, and I've added the length of time on shelter as extra content below the thumbnail and basic info. <script> asm3_adoptable_filters = "size agegroup sex breed species"; asm3_adoptable_extra = function(a) { return a.TIMEONSHELTER; } </script> But try as I might, I haven't been able to work out how to style the font, colour, and size of the output. I'd also like to add something like "Time on shelter:" just before it but don't know how to do that either. Any CSS tips for this?

@robinrt: 2022-06-06 13:49:39
Construct it as part of the string you are returning. Instead of return a.TIMEONSHELTER, do: ``` return '<span style="font-size: 120%; color: red">Time on shelter: ' + a.TIMEONSHELTER + '</span>'; ``` This will make the font 20% larger than normal and red. You can use any CSS attributes in a style tag, such as font-family or font-weight

@seanimals: 2022-06-06 14:32:19
Thank you very much!

@seanimals: 2022-06-06 14:55:40
That worked perfectly! Is it possible to change the font colour on hover?

@robinrt: 2022-06-06 15:06:33
You can only set a hover style via CSS in a <style> tag - not in a style attribute. Give the span you're outputting a class name (eg: "timeonshelter") and then style timeonshelter in a style tag instead. ``` return '<span class="timeonshelter">Time on shelter: ' + a.TIMEONSHELTER + '</span>'; ``` ``` <style> .timeonshelter { color: red; font-size: 120%; } .timeonshelter:hover { color: green; } </style> ```

@seanimals: 2022-06-06 15:27:36
Thanks again!


"Remove insurance number field" bug?

@asmcodehelp: 2022-06-01 19:40:44
1) Enable "Remove the insurance number field from the movement screens" 2) Move -> Adopt an animal -> Insurance field *IS* removed (CORRECT) But if do: 3) open an animal -> Movements -> New Movement -> Adoption -> Insurance field *IS NOT* removed Insurance field also still appears if viewing an old Adoption movement. Is this a bug or expected? Currently using: ASM v46u (27/03/22 commit #26348fe88d18bb510aa3e0944333b1a4ce606948)

@robinrt: 2022-06-02 09:33:19
it's a bug. The logic that displays it for adoptions is overriding the logic that hides it based on the remove option. I'll get that fixed. Thanks for reporting.


PetFinder Automated Updates

@megw341: 2022-06-01 19:25:24
ASM is still showing publishing logs for Petfinder but Petfinder has not updated since 5/29 at 8:00pm. We have updates set for every 2 hours. We are manually changing out Petfinder but is there something I can do to reset the connection? I've already contacted Petfinder Support.

@robinrt: 2022-06-01 19:28:19
It sounds like there's a problem with your field mappings. If you run PetFinder manually from the publishing menu it should tell you. I suspect you've added a new breed or species under Settings->Lookup Data, but you haven't chosen a matching publisher breed. Look for ones with a blank value in the publisher column.

@megw341: 2022-06-01 22:50:57
It doesn't look like there are any blank fields and I've run publishing manually a couple of times now. It looks like Adopt-A-Pet is up-to-date and talking to ASM properly. This seems to be a PetFinder issue.

@robinrt: 2022-06-02 08:24:56
Are you getting an error message when you run PetFinder? There should be an error message or a log file and it sounds like you aren't getting the latter. If you use sheltermanager.com you could email us at help@sheltermanager.com with your account number and we'll take a look.


Automated emails to new adopters/fosters?

@jrich1: 2022-06-01 15:36:38
Hi all, is there any functionality in ASM to automatically send an email to new adopters or people fostering animals? We like to send out an email that includes links to various resources, which has always been a manual step following a foster/adoption. I don't think an automatically-run report can email based on recipients pulled from the database, but maybe there's another built-in way of doing this that we're just not aware of - or maybe it can be done quite easily with an external helper program and a call to the service API? thanks, Jules

@robinrt: 2022-06-01 15:41:27
No, we deliberately never allowed this with adopters due to the capacity for mistakes to be made. There are ways to bulk email adopters but a person has to "pull the trigger". The mail merge "Non-Returned Adoptions" allows you to email everyone who adopted an animal between two specified dates and didn't return their animal. There is a similar mail merge for active fosterers and there's also the weekly fosterer email that can be turned on under Settings->Options->Medical. The weekly email lets you customise the top part of the message and it sends a message to all fosterers on Monday mornings saying what medical treatments/vaccinations are due for the animals in their care that coming week.


Foster report

@audraf: 2022-05-28 00:25:04
Is there a report that can pull all fosters between 2 dates with their names (the humans) and their emails?

@robinrt: 2022-05-28 08:56:15
I've updated the "Fosters by date with outcomes" and "Fosters by date and fosterer with outcomes" reports to do this now. If you already had them installed they will update automatically, otherwise install them from Settings->Reports->Browse sheltermanager.com

@audraf: 2022-05-31 19:29:55
Thank you!


"costpertreatment" column missing for database restore?

@jrich1: 2022-05-25 16:11:19
Hi all, I've taken a SQL dump from our hosted site that I'm trying to restore to a local machine, but the restore eventually fails with <ERROR: column "costpertreatment" of relation "animalmedical" does not exist> and then rolls back all changes. Has anyone encountered this and has a fix? I do notice that our live site is 46u, but the download available from the website reports itself as 45, I'm not sure if that particular column only appeared in 46u? Or maybe there's something I need to enable via the web interface on my local copy before attempting the restore? I'm running Postgres on the local machine, which I believe I saw somewhere is what the hosted sites use? Thanks!

@robinrt: 2022-05-25 16:19:24
Yes, it was added in the current release that is not out yet. Either upgrade your local version of the software from github, or you could manually add that column for now to make the error go away: ``` ALTER TABLE animalmedical ADD CostPerTreatment INTEGER; ```

@jrich1: 2022-05-25 17:59:41
Thanks! Altering the table did the trick (for anyone else in this situation, the same needs to be done for the 'medicalprofile' table).


Estimated DOB

@vikib: 2022-05-24 19:21:52
Is there a way to remove the box with "Estimated" for date of birth from the animal details?

@robinrt: 2022-05-25 10:43:02
There isn't. It's an important field for indicating where the DOB is a guess and not known.


Search Cancelled Reservations

@mhs_jeff: 2022-05-23 21:28:51
Hey All, I saw some awesome posts in this forum about using the reservation book in order to process adoption applications, and I'm working to move us over to that. Something that I've always wanted to make easier is a way to look up previous approved applicants for a given animal. For example if we have a dog and a lot of people applied but obviously only one was chosen. If we have another similar dog that comes in I would love to be able to look up all the prior applicants that applied for that dog, any ideas? I tried to add the "reserveanimalname" field to person additional fields so I can make it searchable, but could not get it to transfer from an online form. I was also concerned when it is cancelled it may clear it. Maybe I could set another field equal to that field in the online form? I admit that other than having the applicant populate two fields with the same value I'm not sure how to do that. I've learned so much from the forum, thank you!

@robinrt: 2022-05-24 08:39:50
Cancelled reservations always appear under the animal's movement tab as well as that of the person. "reserveanimalname" is an online form field - creating an additional person field will have no effect. When you have a field named that in your online form (usually of type "Adoptable Animal") the system will auto create the reservation for you when you use Create->Person on the incoming forms screen to create a person from the form. It also links it if the person already exists. That field is used so that the person filling out an online form can state which animal they are applying to adopt.

@mhs_jeff: 2022-05-24 16:47:16
Ok thanks, I think I was deleting vs. cancelling when I was testing. Is there a way to run a report that looks at active/current reservations? I'm hoping to try to run a report looking for people who have/had a reservation for a certain animal.

@robinrt: 2022-05-24 16:49:25
The "Reservation Book" screen under the Move menu shows that. There's also an installable report called Reservation Book that shows the same info.

@mhs_jeff: 2022-05-24 17:09:35
Thank you, the Reservation Book report only shows current and active reservations though I believe. I'm hoping to develop a report where I could look up the animal name and see anyone who ever had a reservation for them even if it is cancelled. That way I could easily go find old applicants for new animals.

@robinrt: 2022-05-24 17:15:37
Unless I misunderstood, your question was "is there a way to run a report that looks at active/current reservations?". The movement tab of the animal's record will show every reservation for that animal ever, even if it was cancelled. In your previous comment it sounded like you were deleting reservations instead of cancelling them? If this is the case, a report is not going to help since you've removed the data.

@mhs_jeff: 2022-05-24 17:19:01
Sorry, I realized I am all over the place a bit. I was trying to test and was deleting reservations, I understand my error and am no longer doing that. What I'm looking for is to run a report that looks at cancelled reservations for a given animal. My goal is doing this is to be able to easily identify prior approved applicants for an animal that did not get select as the final adopter.

@robinrt: 2022-05-24 17:29:03
Ok. There is a report that finds cancelled reservations for all animals. It's called "Reservations Cancelled by Date with Addresses". You can use CTRL+F in your browser to find any animal or person within the report when viewing it. We never saw much point in having a variant of that report for a single animal since you can just view all previous reservations under its movement tab.

@mhs_jeff: 2022-05-24 17:45:36
Ok thank you very much! This helps a lot. I'm very excited to get us processing our applications paperless and completely within ASM.

@mhs_jeff: 2023-01-01 22:19:48
Sorry to bring this back up, but now doing this there is another challenge I'm running in to. We have some people who are putting in applications and leaving the “reserveanimalname” field blank. What is great is that it is coming into the reservation book and we can process it like any other application. The challenge I'm having is that any report that I run after the application is processed and the reservation is cancelled doesn't seem to pick those up. Is there a way to run a report on active and cancelled reservations that would show reservations that were not done on a specific animal? Thank you!

@robinrt: 2023-01-02 12:31:00
Which reports are you using that are excluding the reservations without animals? Sounds like they might be using an inner join unnecessarily.


Animals with trial adoption showing on site overnight day of adoptionSeveral tim

@megfl: 2022-05-21 05:48:37
Several times this week, I have noticed my animals that have a movement for a trial adoption, show up on the website around midnight the day of that trial adoption movement - whereas they had been previously not published due to the trial adoption movement This is causing confusion to our potential adopters who are looking at the site late at night. I haven't figured out when the animals stop appearing. If I move the movement out an additional day, they immediately come off the site. Is this a known bug, or is this a configuration issue?

@megfl: 2022-05-21 07:15:12
Its happening from midnight the day of the trial adoption, through 2am the day of the adoption. After that, the movement to the adopter is process (appears as the "last movement") and the animal no longer shows as available.

@robinrt: 2022-05-21 07:29:42
when you say it's your website, what mechanism are you using to put the animals on your website? Is it the javascript include system, the html-adoptable-animals service call or are you doing something else? Is the date on the trial adoption for "today" or is it tomorrow?


Import Online Form

@mhs_jeff: 2022-05-17 20:08:07
Hey All, When working on our online forms the other day I noticed that you could input online forms. I looked but couldn't find any information on this capability. Is it via a certain file type and format? Thank you!

@robinrt: 2022-05-18 09:14:36
Yes, they can be JSON or HTML forms. There's info in the manual here: https://sheltermanager.com/repo/asm3_help/onlineform.html#importing

@mhs_jeff: 2022-05-18 12:51:30
Great thank you!


Unit Allocation

@gweeks: 2022-05-12 17:03:58
Is there a way to reserve empty animal units by allocating them to an animal due to come? Using shelter view is easy to see which units are empty but once we have assigned a unit to an animal that needs to come in it would be useful to somehow be able to show this as sometimes it may take a few days for the animal to come in and we may get more queries about space availability so having empty units show as reserved instead of empty would be useful. Is this possible?

@robinrt: 2022-05-12 17:09:04
I haven't tested this, but you can schedule an animal to come in by giving it a future brought in date. I can't remember if it will show as on shelter before it arrives. If it does, it will show in the space you allocated. Otherwise, you could create an animal record with a brought in of today and put something in the name like NOT ARRIVED YET and update the brought in date when it does arrive.


Editing the notes section

@audraf: 2022-05-10 22:23:50
Hi a couple of questions: Can the names of sections be changed? Is it possible to disable that info from going under the animals photo?

@robinrt: 2022-05-11 09:01:09
Hi, what is it that you're looking at? A report maybe or a document template? Are you talking about user interface itself? If it's the user interface then no, it requires re-programming the system to change it.

@audraf: 2022-05-11 18:40:14
Sorry, I realize that was not clear. In the animal in the notes. Markings, hidden comments, description, warning. Thanks.

@robinrt: 2022-05-11 18:42:57
Ok, yes, that's the user interface - I'm afraid you can't change it.

@audraf: 2022-05-11 18:45:18
Ok thank you.


Issue with Location display name for TNR movement

@ketalabama: 2022-05-08 15:04:38
Is there a way to change "Location" display name for Movement TNR? If we add the movement as TNR but later happen to look at the cat in the Animal Details the Location Display Name is "Transfer". Would prefer "TNR" or "Released" or something that is specific to TNR. Since we do not have access to Movement Types I do not see a way to change it. Any suggestions or help?

@robinrt: 2022-05-09 09:33:23
When an animal has left the shelter, the location shown is the last one the animal was in before it left. It is not an indicator of where the animal is now. The banner display at the top should show current location and for TNR/Releases, it should be showing Location: TNR, is it not doing this?

@ketalabama: 2022-05-09 20:11:13
[Image 1 main Animal Details](//muut.com/u/sheltermanager/s1/:sheltermanager:THQ1:image1mainanimaldetails.png.jpg) [Image 1 main Movement Detail](//muut.com/u/sheltermanager/s1/:sheltermanager:i1bk:image1mainmovementdetail.png.jpg)

@ketalabama: 2022-05-09 20:11:23
No. This is what we are seeing.

@robinrt: 2022-05-09 21:19:35
Transport is not a movement type in the stock database. I think someone has edited your lksmovementtype table and changed the value from TNR to Transport and that's why it is not showing correctly. Are you a sheltermanager customer? If so, could you let me know your account number to help@sheltermanager.com and I'll take a look.

@ketalabama: 2022-05-10 11:33:04
Hi. We are. Sending the account number to the suggested email. Thank you


Scheduling Appointments Online?

@drjarred: 2022-05-05 23:06:21
Hi there, I know with a lot of new veterinary software clients can schedule rechecks and appointments online themselves. Is there anyway to do this in ASM in any shape or fashion? I am trying to attempt to filter out any unnecessary phone calls/emails as much as possible when scheduling appointments for the community but not add in another app or system for staff to learn. Thank you!

@robinrt: 2022-05-06 09:10:17
I'm afraid there isn't, but that's a great idea for a feature request! I'll write something up for our dev list.


Microchip questions

@bkrodle: 2022-05-03 20:34:39
How do I fix ASM so that dogs that are entered prechipped and reclaimed by the owner are not trying to re-register with Home again? We don't want to exclude reclaims because we chip for people that don't have a chip already.

@robinrt: 2022-05-03 20:37:40
If you don't want to exclude reclaims from the "Register microchips after" publishing option, then the only option is to give the animal the "Do not register microchip" flag.

@bkrodle: 2022-05-04 14:37:39
Thanks! I didn't even see that flag.


Download ?

@thebarefootranch: 2022-05-02 20:25:14
I am trying to download the software and none of the download options seem to do anything. The one I am specifically looking for is the Debian/Ubunto version. Can someone provide me with the direct link?

@robinrt: 2022-05-03 09:12:59
It's that our https site is linking to an http download file, browsers apparently refuse to do that now. I've changed the link to https now so you should be able to download without any errors.


CSS for .asm-animal-emblems .custom

@lisazorn: 2022-05-01 20:14:09
Hi - we added a couple custom animal emblems and it's showing up with a purple background; it looks like these come from .asm-animal-emblems .custom How is this configured/where is this specified? Thanks! -Lisa

@robinrt: 2022-05-02 08:05:24
All emblems are shown with that purple background. It isn't really user configurable, it's in the system's asm.css file. Back in the day, you could set your own user style sheets for websites to override values, but that was a very long time ago and I don't think that's something modern browsers allow.

@lisazorn: 2022-05-02 23:24:29
Got it, thank you!


Boarding Module Update

@lisazorn: 2022-05-01 20:03:40
Hi - I saw some previous posts about adding a boarding module. We're currently using ASM to track boarding and it is indeed messing up our data a bit (since folks who board bunnies are now labeled as people who have surrendered, etc). I saw that ASM is planning to add this feature (https://github.com/bobintetley/asm3/issues/623) but I was wondering if there is a estimated date or timeline it'll be available? Thank you! -Lisa


Request Payment From Online Form

@mhs_jeff: 2022-04-27 14:42:03
Hey Everyone, I learn so much every time I read through this forum. Looking at payment processors and would love to use this feature more. Would like to use it to take in general donations. Is it possible to use an online form as a donation form that would trigger a payment? Or is it possible to embedd these things from ASM on our webiste? Thanks! Jeff

@robinrt: 2022-04-27 15:27:29
Not at the moment, we're planning a donation checkout in future that you could link in a form or from your website. At the moment though, you have to manually create the due payment on the person record before triggering the payment processor so it's not possible to trigger it from a link. Obviously you could also take ASM out of the equation altogether and use PayPal to accept donations and then use "Settings->Import PayPal CSV file" to create the received payments in ASM each month from the activity file download that you get from PayPal.

@mhs_jeff: 2022-04-27 17:49:58
Ok that would be awesome and help us track all kinds of payments. The challenge I haven't tried the import Paypal CSV feature but am concerned about it correctly identifying people as often times we see different names on the Paypal and get limited data. Thanks!

@robinrt: 2022-04-27 18:06:03
It uses the email address to try and identify existing people in your database. If it doesn't find a match, it will create a new person from the name and address data in the PayPal file.

@mhs_jeff: 2022-04-27 19:44:59
Thanks for the info. Maybe I can use this to get stuff to better align. Than you!


Additional fields on reports

@leannec: 2022-04-16 14:48:13
I think the question I meant to ask before was how do I get my additional fields I have created on reports? Help!!

@adoptamutt: 2022-04-16 18:01:09
To add an additional field associated with an animal, just add something similar to your SELECT statement: (SELECT value from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = animal.ID AND additional.linktype = 0 AND additionalfield.fieldname = 'RWComments') AS RWComments

@leannec: 2022-04-17 02:26:11
Thanks Karen. Not sure why I never looked at NEW REPORT before!! I can do that easily. But how do I only display pets who have a tag number? Can you help? Below is the SQL and HTML of my report basic at the moment.... This is the SQL: -- qbtype=animal&qbfields=AnimalName%2CCurrentOwnerAddress%2CCurrentOwner Name%2CCurrentOwnerMobileTelephone%2Caf_11&qbcriteria=notdeceased&qbsort=af_11&v=1 SELECT AnimalName, CurrentOwnerAddress, CurrentOwnerName, CurrentOwnerMobileTelephone, (SELECT Value FROM additional WHERE LinkID=v_animal.ID AND AdditionalFieldID=11) AS af_11 FROM v_animal WHERE DeceasedDate Is Null ORDER BY af_11 HTML $$HEADER <table border="1"> <tr> <th>ANIMALNAME</th> <th>CURRENTOWNERADDRESS</th> <th>CURRENTOWNERNAME</th> <th>CURRENTOWNERMOBILETELEPHONE</th> <th>AF_11</th> </tr> HEADER$$ $$BODY <tr> <td>$ANIMALNAME</td> <td>$CURRENTOWNERADDRESS</td> <td>$CURRENTOWNERNAME</td> <td>$CURRENTOWNERMOBILETELEPHONE</td> <td>$AF_11</td> </tr> BODY$$ $$FOOTER </table> FOOTER$$

@adoptamutt: 2022-04-17 17:44:35
Add to the end of your WHERE statement: AND rabiestag <> '' (that is two single quotes)


Report with Tag numbers

@leannec: 2022-04-15 04:24:52
I am not sure if this is a standard field, or one I created! But I would like a report with any pets who have an ID tag (the field is Tag Number under Health and Idenfication). Some of these will be in our shelter and some with adopters, but I would like them all listed. I am okay at editing reports, but hopeless at creating from new. I am hoping someone can help me please. I would like in Tag number order with dog name, and owner/foster carer name and contact details....

@adoptamutt: 2022-04-16 18:05:56
The field RabiesTag found in the animal table is a standard field. I have removed this field from my Health and Identification Section because we enter the tag number in the rabies tag field in the vaccination record. When it is entered in the rabies tag field of the vaccination record, ASM automatically updates the animal.rabiestag field to the most recent rabies tag entered, so animal.rabiestag still has data even though it is Removed through settings to avoid confusion.

@leannec: 2022-04-17 02:08:29
Thanks. It is a custom field I created actually. But maybe I should have just used the Rabies tag field, as then I could get it on reports.

@leannec: 2022-04-17 02:23:49
Actually worked this out using the New Report. But can't work out how to only include pets who have a tag.

@adoptamutt: 2022-04-17 17:45:21
Add: WHERE rabiestag <> ''


Auto email foster famillies for vaccines etc

@galia: 2022-04-05 13:22:14
Hi everyone, What is the trigger for email reminders for Foster families for vaccinations and medical treatments and what time scale? I have one foster family the basically refuses to give me these details (for over a year now) but I have noted that despite the 'expired vaccination date' the emails has stopped going out thanks for looking

@robinrt: 2022-04-05 13:59:39
If you're using the "Weekly fosterer email" option under Settings->Options->Medical, the email is sent every Monday morning as part of the overnight batch. Expired vaccines are not included in the email - it is only scheduled items (ie. those with a required date but no given date) such as due vaccines, medical treatments and tests. There is an audit trail report you can install that shows you what emails have been set, when and to who. It's called "Audit Trail: Sent Emails by Date". If you don't have it, you can install it under Settings->Reports->Browse sheltermanager.com

@galia: 2022-04-05 14:07:29
Thanks Robin, I will check the info in the vacine info


Execute Script no longer works after upgrading from ASM v44 to v45

@asmcodehelp: 2022-03-26 23:55:05
To reproduce: 1) Create a script file "test.sql" containing a test command, say: DELETE FROM breed; 2) Execute the script: Settings -> SQL Interface -> Execute Script -> Choose File -> select "test.sql" -> Execute Script 3) Result: "ERROR: cannot use a string pattern on a bytes-like object" System details: asm 45 (open source .deb pkg) ubuntu 20.04.4 python 3.8.10 apache2 2.4.41 mysql-community-server 8.0.28

@robinrt: 2022-03-27 13:09:49
Thanks for the heads up, I've committed a fix to the source repo now. You can either clone the latest source tree to fix, or work around it by copying your script into the box and using execute, or running it directly via MySQL.


Default Text in Bios

@jaaustin: 2022-03-25 14:50:03
We have information that we'd like to be in every bio. Right now we are typing/copying/pasting into every animal's notes. Is there a way to have default text (like adoption fee) show up for every pet/bio?

@robinrt: 2022-03-25 15:22:50
that option is under Publishing->Set Publishing Options->All Publishers->Add this text to all animal descriptions


publishing

@ddchs38024: 2022-03-21 12:54:24
i am getting a message saying no publishers running? I have made no changes.

@robinrt: 2022-03-21 13:53:50
You've fallen afoul of the non-microchipped publishing option. I've responded to your email, updated the option in your data and republished now,.

@adoptamutt: 2022-03-21 14:49:30
@ddchs38024, we have a Facebook users' group at ASM Rocks! come join us.


Cats auto flagged as not available if they don't have microchips?

@mungo181: 2022-03-20 22:43:31
Anyone else experiencing this? Cats without microchips aren't going out to any websites. I'm going to have to go through 50+ listings to add fake microchip info. I can't find where to change this in publishing settings.

@mungo181: 2022-03-20 22:53:45
update: found where to change it. There must have been an update within the past week, unless someone at my org was messing with the settings.

@adoptamutt: 2022-03-20 23:32:40
It was an update a few days ago. You can click on the ASM version number in the lower right hand corner of the Home Screen to see updates.

@adoptamutt: 2022-03-21 14:48:42
@mungo181, we have a Facebook users' group at ASM Rocks! come join us.

@cwbest: 2022-03-25 20:03:08
@mungo181, we have been having the same problem. You say you found how to fix it... Can you share??

@adoptamutt: 2022-03-26 13:07:33
It is in Publishing > Set publishing options > Animal Selection.


recherche de la notice en français de la version 2.8.16

@unchatdanslavie: 2022-03-20 17:53:39
Bonjour je recherche la notice en français pour la version 2.8.16 svp . Merci

@robinrt: 2022-03-20 17:59:18
Hi, I'm afraid we don't have a French translation of the manual. Sorry.

@unchatdanslavie: 2022-03-22 10:09:26
en anglais alors svp ?

@sebro52: 2022-04-02 06:21:26
Bonjour, vous recherchez la notice pour l'installer ou l'utiliser? Le logiciel est déjà traduit en français et simple d'utilisation. Sinon il existe un manuel complet en anglais très complet mais en vente https://www.lulu.com/content/paperback-book/animal-shelter-manager-manual/12895189?page=1&pageSize=4

@sebro52: 2022-04-02 06:30:38
https://www.lulu.com/en/en/shop/robin-rawson-tetley/animal-shelter-manager-series-3-manual-pdf/ebook/product-16226j5e.html?page=1&pageSize=4


Transport Book options

@megw341: 2022-03-16 19:04:36
We are opening up new rescue partnerships and we would like to start using the Transport Book to help with scheduling. The Transport Book requires an animal profile to schedule the transport. Is there a way to remove this? It's great for animals in our care but for intake pickups we won't have those animals in our system yet. We would just like to keep everything in ASM instead of having to use an outside scheduling system for pickups (we are not contracted with Animal Control, and these would just be rescue transfers).

@robinrt: 2022-03-17 10:04:03
Sorry, there has to be an animal. There's no validation on overlap though, so you could create an "unknown" non-shelter animal (this keeps it out of your figures) and use that for all transports where you don't have an animal yet? It should be straightforward to go back and switch the transport record to the real animal after you've created it as well.


Adding non-shelter animal with online forms “Create Animal”

@adoptamutt: 2022-03-11 03:55:38
Is it possible to specify animal type and non-shelter when adding a new animal through online forms?

@robinrt: 2022-03-11 09:21:53
It isn't possible to specify non-shelter at all with an online form. Seems like a bit of an oversight as there are probably plenty of reasons why you would want to. I'll put it on the list.


Report SQL Query Builder Not Working

@schelleffar: 2022-03-11 03:08:00
Hi, I am using Sheltermanager.com and can't create new reports, as the Query Builders is not working. I click on it, and it no longer opens, it was fine yesterday as I built a new report using it, now when I click on the little icon, nothing opens at all. I have tried it in Chrome, Edge and FireFox and the same issue arises. HELP !!!!! I need to build a new report for the Management Committee.

@robinrt: 2022-03-11 09:22:45
Hi, really sorry about that. The code editor dependency was updated yesterday as a fix for some RTL issues with customers. It looks like it broke the query builder and we didn't notice. I've applied a fix now so it should be working again today.

@schelleffar: 2022-03-13 07:35:00
:-) Thanks I posted this before I emailed support. Thanks for your help


Waiting list

@emily2367: 2022-03-08 13:17:32
Every time we add a priority rating on an animal on the waiting list (Urgent, high, medium, low and lowest) the next time we look at the list they've all changed to 'high'. How do I stop this from happening?

@robinrt: 2022-03-08 13:54:47
Hi, check what your "urgency update period in days" is set to under Settings->Options->Waiting List.

@emily2367: 2022-03-08 14:57:33
Thank you!


Webpage page ideas

@brandon_fierro: 2022-03-01 14:51:44
Hello all . I am looking to update our web page and was wondering if anybody had any that looks good that i can use for ideas. Our link is https://service.sheltermanager.com/asmservice?account=hz1129&method=html_adoptable_animals&template=reptar


Trying to add "Adoption Coordinator" name to a report

@safcc: 2022-03-01 02:11:57
Hello everyone, Y'all were so amazing and quick last time and here I am again, stuck! This time I'm having a hardtime figuring out what the field "Adoption Coordinator" is named so I can add it to my pre-existing report. I've tried a.AdoptionCoordinator, a.AdoptionCoordinatorName, a.CoordinatorName with the corresponding name in the HTML and each of those has failed to call. Anyone know?

@adoptamutt: 2022-03-01 02:36:25
It is animal.adoptioncoordinatorID, so you need to use something like “LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID” to link to the owner table. Then you can pull “ownername”

@safcc: 2022-03-01 02:52:31
Wowee this is quite a bit more confusing than the last one you helped me with! I don't know what inner and outer joins are, but I tried to mirror what was already in the report after trying with the syntax you provided. I'm so sorry I'm just not getting it! So right now here's what I have not working spitting out "missing FROM-clause entry for table "animal" LINE 27: LEFT OUTER JOIN owner cw ON cw.animal.adoptioncoordinatorID ... ^" but the other similar "left outer join" bits don't error out. SELECT a.AnimalName, a.DateOfBirth, s.SpeciesName, atp.AnimalType, a.BreedName, e.ReasonName, o.OwnerName, a.DateBroughtIn, m.MovementDate, a.NeuteredDate, a.IdentichipNumber, oo.OwnerName AS OriginalOwner, a.reasonforentry, cw.animal.adoptioncoordinatorID, CASE WHEN a.DeceasedDate Is Not Null AND PutToSleep = 0 AND IsDOA = 0 THEN 'Died' WHEN a.DeceasedDate Is Not Null AND IsDOA = 1 THEN 'DOA' WHEN a.DeceasedDate Is Not Null AND PutToSleep = 1 THEN 'Euthanasia' WHEN a.ActiveMovementDate Is Not Null THEN (SELECT MovementType FROM lksmovementtype WHERE ID = a.ActiveMovementTyp e) ELSE 'On Shelter' END AS OutcomeName, CASE WHEN a.DeceasedDate Is Not Null THEN a.DeceasedDate WHEN a.ActiveMovementDate Is Not Null THEN a.ActiveMovementDate ELSE Null END AS OutcomeDate, CASE WHEN a.DeceasedDate Is Not Null THEN (SELECT ReasonName FROM deathreason WHERE ID = a.PTSReasonID) WHEN a.ActiveMovementDate Is Not Null THEN o.OwnerName ELSE '' END AS OutcomeQualifier, age(DateBroughtIn, DateOfBirth)::varchar AS AgeAtIntake, CASE WHEN a.DeceasedDate Is Not Null THEN age(DeceasedDate, DateOfBirth)::varchar WHEN a.ActiveMovementDate Is Not Null THEN age(ActiveMovementDate, DateOfBirth)::varchar ELSE '' END AS AgeAtOutcome FROM animal a INNER JOIN species s ON a.SpeciesID = s.ID INNER JOIN animaltype atp ON a.AnimalTypeID = atp.ID LEFT OUTER JOIN adoption m ON m.ID = a.ActiveMovementID LEFT OUTER JOIN owner o ON m.OwnerID = o.ID LEFT OUTER JOIN owner oo ON a.OriginalOwnerID = oo.ID LEFT OUTER JOIN owner cw ON cw.animal.adoptioncoordinatorID = cw.ID WHERE a.DateBroughtIn >= '$ASK DATE Enter from date$' AND a.DateBroughtIn <= '$ASK DATE Enter to date$ 23:59:59' AND NonShelterAnimal = 0 ORDER BY a.DateBroughtIn

@robinrt: 2022-03-01 09:08:10
change cw.animal.adoptioncoordinatorid to a.adoptioncoordinatorid in your join - the animal table has been aliased in your query as just "a" instead. ``` LEFT OUTER JOIN owner cw ON a.adoptioncoordinatorID = cw.ID ``` You can then use: ``` cw.OwnerName AS AdoptionCoordinatorName ``` in your select statement to alias ownername from the join as AdoptionCoordinatorName, which you can then get at in your HTML. You have to alias it because you've already got o.OwnerName in your select statement for the adopter and column names have to be unique in the output.

@safcc: 2022-03-05 00:17:52
I appreciate you both! I did a lot of reading on sql basics again so I could conceptualize the joins. What you've shared makes more sense now and with that I was able to get it working.


Automatically email report to owner email

@ketalabama: 2022-02-28 17:13:08
Hi. I know that for a report we can specify email addresses for that report. But is there a way to send an email to the animal's adoptive owner when a report criteria is met? For example, we want to follow up with adopters post adoption to be sure that certain follow up care has been provided. If that flag is not checked in the system we have a report that generates those owners. Would love to see if there is a way for owneremails for those animals to automatically receive a reminder.

@ketalabama: 2022-02-28 18:13:05
Never mind! I found the answer in some other questions on the forum


Entries by month chart

@jimdunne: 2022-02-28 12:41:12
Does anyone have a report that produces a chart of entries per month, like the attached image, that they could let me have please? [Screenshot 2022-02-28 123930](//muut.com/u/sheltermanager/s1/:sheltermanager:kNTF:screenshot20220228123930.jpg.jpg)


Handling shelter animal incidents

@waldenhumane: 2022-02-27 19:35:43
I was wondering if anyone had a better way to handle incidents hat happen with animals in the shelter I see you can create a log of incidents such as bites and you can add info into the text box. I was hoping to be able to log incidents, but be able to have specific information included. That be attached to the animals record and also be able to print them out to have a hard copy on file. Has anyone done something like this? Create an online form or something like that?

@adoptamutt: 2022-02-27 21:08:07
You could do an online form or create a Document. Either one could be stored in the Media Tab.

@robinrt: 2022-02-28 11:21:48
if it's not a lot of data, you could store it under the log tab with a custom log type


Scheduling Surgery

@drjarred: 2022-02-23 05:26:24
Hello, I am trying to figure out a way that we can schedule surgery in house for animals we have in the shelter. I have read about using clinic calendar and making "appointments" for surgery, but then it hard to tell what the appointment is for without clicking on the name (we also use this for foster appointments and adoption follow ups so its gets confusing since you can't see the comments or animals location). I also read about putting it in medical regimens but then it gets lost in the list of medications that we use for the day (what we current use the medical regimen for). My goal is simply list the animals we have scheduled for surgery so that the entire shelter can tell this and avoid using an outside calendar like we currently do, since not everyone can see this. Any advice or reasonable place to put them where it appears on some calendar without getting lost in other non surgical treatments/procedures? Dr Jarred

@adoptamutt: 2022-02-23 13:54:19
You could enter them under Medical Regiments and then create a Report to email staff each morning of the upcoming procedures.


Adding logo to Forms

@tinadickinson: 2022-02-21 15:39:23
After creating an online form how do you add your logo. None of the online forms have logos but the examples ad demos look more form like with logos

@robinrt: 2022-02-22 13:53:17
Upload your logo to the section under Settings->Reports->Extra Images. This will give you an "absolute URL" that you can copy to the clipboard. You can then put it in some HTML in the global header for online forms, editable under ASM->Edit Online Forms->Edit Header/Footer Putting something like this at the bottom of the header should do it. It will add your logo to the top right corner of forms. ``` <img src="ABSOLUTEURL" width="150px" align="right"> ```


Importing pdf forms

@tinadickinson: 2022-02-21 12:51:57
I know you can import animal info in a csv file. If you have non animal forms is there any way to import them please?

@robinrt: 2022-02-22 13:51:06
Sorry, there isn't. Export scanned forms into CSV files is on the development list currently.


Unable to log into SM

@hsdc: 2022-02-17 17:16:30
We are unable to log into SM. We are in the middle of doing adoptions and are kicked out when we try to run reports. Any idea why? This also is happening when trying to log in on a phone.


Cannot open shelter manager

@hsdc: 2022-02-17 17:12:29
I am unable to open shelter manager at all. I log in and it just goes back to the log in screen. I also tried on my phone and it does the same thing. We are in the middle of an adoption and I cannot access anything. We have never had this happen


Daily Medication Report Issue

@seniordogs: 2022-02-16 15:43:50
I can't print the daily medication report for today. I can see yesterdays and tomorrows, but somehow I did something to remove today's. How can I reset?

@robinrt: 2022-02-16 15:49:23
What is the name of the report are you running and from where? Is it just that you don't have any medications for today? Are they there under Medical->Medical Book?

@seniordogs: 2022-02-16 15:52:58
I was going through the process so I could make a training cheat sheet. I think I clicked Give and could have run a report, but I just wanted screen shots. When I went back in, and choose today, nothing shows up when I go into the Medical Book. There are plenty of meds to be given!

@seniordogs: 2022-02-16 15:54:04
It's the Daily Medica Report under the Medical tab.

@seniordogs: 2022-02-16 15:54:43
When I go under Medical Book to highlight all the dogs and their meds, nothing is there.

@robinrt: 2022-02-16 16:02:52
If you change the dropdown at the top right of medical book from "Due Today" to "Given Today", do they appear?

@seniordogs: 2022-02-16 16:09:21
Yes!! Thank you so much. I am so new at this.

@seniordogs: 2022-02-16 16:13:32
I can uncheck the dogs, but its still greyed out. If I choose Give and try to go to reports to run the daily medical report, it has no data.

@seniordogs: 2022-02-16 16:13:49
Sorry, Daily Medication Report

@seniordogs: 2022-02-16 16:15:01
I need to know how to undo it saying the meds were already given today.

@seniordogs: 2022-02-16 17:27:10
Is there a way I can change so it doesn't think we gave the medications today. Although I can click given today, everything is greyed out, and I can't print a report.

@robinrt: 2022-02-17 09:29:16
There's an "Undo" button on the toolbar of the medical book. You can select the given treatments with the tickbox to the left of them in the list, then click Undo to remove the given date.


AC Calls

@lica2440: 2022-02-15 14:10:41
Is there any way to clone animal control calls, or can that feature be added? We have many welfare situations that need repeated rechecks, and I keep having to re make the entire call each time i drive by on a recheck. I know there is a section for followup, but there is only three followup slots and i wasnt sure how those play into the report so we just make a new call each time.

@robinrt: 2022-02-15 14:13:13
I don't think there is, but that's a good suggestion - I'll put it on our development list.


Backup from hosted ASM and restore on a local VM

@andrea111h: 2022-02-14 21:56:13
Hello! I'm evaluating ASM3 but I can't find out if my preferred workflow is supported or not. I'd like to: 1) Use the hosted version to avoid worrying about uptime and upgrades; 2) Install ASM3 on a local virtual machine too, as a backup; 3) Periodically (e.g. weekly) extract a full dump of data from the hosted version on the local one. Is it possible to easily dump both the full SQL data and also images and other uploaded files and restore them?

@robinrt: 2022-02-15 09:39:42
It is easily possible to dump the full SQL data and restore it into a backup database every week. Images and uploaded files not so much. Once you get into gigabytes of hosted files, it would be an easy denial of service attack on us to keep requesting them. We use hosted storage at the backend for media and it costs us in bandwidth charges. We will pull a zip of stored files on request that you can load into your database, but there can be a charge for doing so depending on the sizes involved. Some of our customers do this, but they just take the media backup once per year.

@andrea111h: 2022-02-15 21:53:06
Ok, I understand. I was thinking about a dump accessible only to the data owner and maybe just once every week to avoid such problems. I'll see if an SQL only backup is enough for the shelter. Thank you!

@vbvbrj: 2022-02-20 09:34:18
Robin. May be you could offer an API to use with rsync to syncronize files to local storage. So it will be an incremental backup of files.

@robinrt: 2022-02-22 13:55:06
It's a possibility, although it still relies on the client not being abusive. Another option might be to allow users to set up their own S3 or S3-compatible hosting arrangement with a provider for us to use, similar to how you can with your own SMTP server if you wish. That way you'd be in full control of your media and the storage/bandwidth charges.

@andrea111h: 2022-03-06 14:35:55
Ok, but a paying customer DOSsing the company hosting their services is something I've never heard of. And if I wanted to DOS someone I would request N x 100.000 times a small file instead of N times a large file. Maybe a 1 download per week (or month) limit would solve the issue? Eventually for a small monthly fee to pay for bandwidth.


Receipt numbers

@leannec: 2022-02-11 05:56:55
Is it possible to edit the Receipt numbers field in the payments section? We normally have our own receipt numbers and would like to be able to key those in manually, or import them from a .csv file when importing our donations. But I can't see how to do this.

@robinrt: 2022-02-11 14:24:09
Sorry, it isn't, they're system generated. I think we did plan to allow that originally, so I'll check our development backlog for that.

@leannec: 2022-02-11 21:15:13
Thanks. That would be great if we could as they are pretty useless without that. At the moment if we were to use that we would have to generate the receipts, save them and edit the documents. I haven't looked at how hard that would be. That would also mean saving another record offline somewhere, which does seem a bit silly.


Multiple "site"'s for accounts.

@vbvbrj: 2022-02-10 17:56:46
Can you add an option that an account can be assigned to multiple sites. And therefore as a consequence, an animal should have the "site" option. (This can be added with lookup additional options).

@robinrt: 2022-02-10 18:06:04
Hi, when you say an account can be assigned to sites.. what are you referring to? Rather than assigning a site to animals directly, animals inherit the site of their assigned internal location.

@vbvbrj: 2022-02-11 09:01:10
Thank you for answer. The Internal Location to Site correlation is what make the animal be on Site's. The first part of question is that a vet doctor can practice on two sites (for example) and the doctor should view and access animals of both sites. Another doctor will practice on two sites too, but both vet doctors have one site in common, the second sites differ. I.e. Veterinary 1 works on Site 1 and Site 2, Veterinary 2 works on Site 1 and Site 3. The veterinaries should view only corresponding animals to the sites.

@vbvbrj: 2022-02-11 09:05:06
Another question with Internal Location relation to site is transferring animal to a foster. After transferring animal to a foster, the concept of Internal Location does not relate anymore, and the veterinary can not view or access animal's data

@vbvbrj: 2022-02-11 10:10:15
The comment preciding this one is not relevant. I've verified and the veterinary assigned to site can view animals which last location was same site.

@robinrt: 2022-02-11 14:23:34
If you don't assign your vet's user account a specific site they can see animals from any site.

@vbvbrj: 2022-02-14 06:40:23
Yes, it is true. But the vet should not see all site's. Only specified.


Publishing photos to Petlink

@ken2950: 2022-02-05 06:22:08
Is there a way for the pet photo in ASM to be automatically published to Petlink along with their chip information?

@robinrt: 2022-02-05 09:03:26
There isn't. As far as I'm aware, PetLink don't have a way of accepting photos as part of their import spec.


Adding additional fields in Animal/vaccinations.

@vbvbrj: 2022-02-03 09:03:40
Can there be added additional fields for input, like: vaccine name, dosaje administered, hour administered?

@robinrt: 2022-02-03 10:56:26
No, additional fields are not available for satellite records like vaccinations. This is something on our roadmap for the future though.

@vbvbrj: 2022-02-03 13:45:11
Thank you. Waiting for future releases.


Upload to media other types of files.

@vbvbrj: 2022-02-03 09:01:02
Can the software be changed so in media we can upload other files besides html, pdf and jpg? Text files, video files, other type of images.

@vbvbrj: 2022-02-03 09:01:44
Also the upload button can be programmed to accept multiple files at once? From mobile drag and drop is not available.

@robinrt: 2022-02-03 10:58:10
PNG files can also be uploaded. Their alpha layer is removed and they are converted to JPG. There shouldn't be a need for text files - the log is available and more efficient (and searchable) for text. Video files are not uploadable. They require a lot of bandwidth and storage. There is no need when you can use YouTube or other video services and add them as a link on the media tab.

@vbvbrj: 2022-02-03 13:47:25
For self hosting ASM there we don't have problem with storage and bandwidth on in-country traffic. Could it be added to configuration to select which media types can be uploaded? Or a checkbox to allow any file to be uploaded.


"Length of stay" report to show only time at shelter?

@jrich1: 2022-02-02 17:51:15
Hi all, has anyone created a custom report that shows only the time that animals were physically at the shelter (and then uses those figures to calculate the average length of stay)? The standard reports seem to use "daysonshelter" database field which incorporates time spent in foster, trial adoption periods etc. and that skews the numbers (e.g. dog came in 10/21 of last year, went into trial adoption on 10/26, but their length of stay is currently reported as 104 days instead of 6).

@robinrt: 2022-02-02 18:23:47
You'd have to calculate it yourself based on your requirements. DaysOnShelter only contains the most recent stay (including time on foster), where TotalDaysOnShelter is all stays combined. I haven't checked this, but if the "Treat foster animals as shelter inventory" option is off, I think foster time is not counted in that field. However, you probably don't want to turn that option off as it will stop your fosters appearing in on shelter searches or shelter view etc.

@jrich1: 2022-02-03 14:57:25
Do all the movements for an animal get recorded in the database somewhere? I see the ones related to the active movement in the animal table, but is there another table that holds animal IDs/movement types/timestamps that could be used to add up periods when the animal was physically at the shelter? (Related question, but is there more thorough database documentation somewhere than what's included in the 45u documentation online? That one only mentions a few tables with descriptions of their fields)

@adoptamutt: 2022-02-05 14:31:58
The 'adoption' table holds the movements. If you want to see all the tables, you can go to the SQL Interface box and hit Ctrl_Space. Then you can see all fields by typing actualtablename.Ctrl_Space.

@robinrt: 2022-02-05 14:35:22
there's also some info here in the manual https://sheltermanager.com/repo/asm3_help/databasetables.html


Online forms and person fields

@vsauder: 2022-01-28 17:37:11
We have noticed that when creating a person through the online field that it will use an existing person if the phone numbers are the same. In our area phone numbers switch frequently, is there a way to adjust how ASM chooses to create a new person vs attaching to an existing?

@robinrt: 2022-01-28 17:41:55
There isn't I'm afraid. It only attaches to an existing person if the cell phone number is the same. I would have thought it highly unusual for this to be an issue unless someone was deliberately entering the same number for multiple people? Are you seeing this happen a lot?

@vsauder: 2022-01-28 18:11:23
Not too much, but enough that it can be frustrating. We have a fairly large population of people that change cell numbers frequently. Since many people have only Cell numbers we had also defaulted into utilizing the"home phone" number as a primary number. This likely lead to alternate numbers of contact being used in the "Cell field". For Animal control calls and adoptions many people give friends and family as contacts. Knowing that it is the Cell field will definitely help us take steps to prevent this or at lease zero into the reason when it occurs.

@adoptamutt: 2022-01-28 18:51:55
The Quality Control Report in the repository will report when an online form is attached to a prior person record. If you don't want to tackle the QC report, here is the SQL. You can have it email you in the morning and then you can look at the Audit Trail section of the Person record to correct anything that was updated incorrectly. --- SELECT DISTINCT o.ownername as name, o.ownercode as code, current_date -1 AS issuedate, '<font color = "Red">Online Form Attached to Prior Person Record. Compare the data in the First and Last Name fields with the data on the NEW online form. When ASM finds an phone match, it ONLY updates the address, email, and phone info. Alerts Only Once.</font>' AS issue FROM owner o INNER JOIN media m ON m.linkid = o.ID WHERE m.medianotes IN ('Cat Adoption Application', 'Dog Adoption Application','Getting Help - Cat', 'Getting Help - Dog','SNIP Application','Foster Application','Volunteer Application') and m.linktypeid = 3 and date_trunc('day', m.date) = current_date -1 AND cast(o.CREATEDDATE AS DATE) < cast(m.date AS DATE) ---


Last name, first name order for Foster Book

@lialang: 2022-01-27 17:54:25
How can we have the foster book display the fosters by last name, first name instead of the default first name, last name? When the department of agriculture comes to audit us every year, they look at our fosters by last name, and ASM does not match this format.

@adoptamutt: 2022-01-27 22:38:26
Go to Settings > Options > Display > When displaying person names … But keep in mind, this changes it throughout the system. The change would take place over night unless you manually trigger that batch process.


PaymentAmount / PaymentNet Wordkey gives Gross Amount

@bajadogslapaz: 2022-01-25 06:55:28
Trying to create a receipt and the PaymentAmount/PaymentNet wordkeys are both resulting in the gross amount not the next (Gross - fees) -- am I doing something wrong? Just as I posted this I noticed the PaymentTotal Wordkey isn't working either.

@robinrt: 2022-01-25 11:13:46
The PaymentTotal wordkey only works if you are generating your template from the payment book or a payment tab of a person/animal. I can't see anything wrong with the code for PaymentNet/Amount and they seem to be correctly using the calculated amount of gross - fee - tax. If you're a sheltermanager.com user, send your account number and details of the payment record to help@sheltermanager.com and I'll take a look.

@bajadogslapaz: 2022-01-25 16:29:36
I think I see the problem with the PaymentAmount keyword. My CSV file from PayPal had negative signs in that field - so obviously subtracting a negative added it back in. Thanks!


Error when giving medication

@cheryl22: 2022-01-24 14:19:29
Is it possible to completely undo a given medication and remove the record of administering? Either because the item was deducted from the wrong stock, or the incorrect amount was input. If it is not possible to undo is there a way to correct these errors?

@robinrt: 2022-01-24 14:25:27
Stock levels can be edited manually under Financial->Stock. There isn't a way to "ungive" a treatment, but you can use the Give button to give it again and choose a different date. There's also a button on the toolbar to change the required date and you can always delete that treatment altogether if you want.


Trying to call variable "ReasonForEntry" in report

@safcc: 2022-01-22 23:34:27
Hello, I'm trying to modify the report "Intakes by Date with Ages and Outcomes" to include the varchar text field "ReasonForEntry" so that the "Entry" column displays the drop down field for reason AND the text field, so: "$REASONNAME : $ReasonForEntry". I can't seem to figure out how to make the call to pull that text field though, can anyone advise on that I need to enter? Our board is requesting additional documentation on 'where' our intakes are coming from with more information than the "ReasonName" dropdown fields can provide. Thank you!!

@adoptamutt: 2022-01-23 01:38:53
Add a comma to the last select item. Then add “a.reasonforentry” as the last select item. Then add $reasonforentry to your html.

@safcc: 2022-01-23 02:08:16
Wow, it really was that simple :( Thank you so much! I knew I should have paid more attention to SQL DB in college!


Synching outlook to asm calendar?

@audraf: 2022-01-21 20:34:45
Is this something that is possible?


Days since movement.

@mmover: 2022-01-21 15:13:28
Is there a way to target only animals who have a certain movement type (in to foster) and track the days since that movement occurred? Effectively tracking days in foster. Thank you.


Help with install on ubunta

@fpta21: 2022-01-21 07:47:21
Finished installing asm3 on ubunta but up with Unable to connect Firefox can’t establish a connection to the server at localhost:5000. The site could be temporarily unavailable or too busy. Try again in a few moments. If you are unable to load any pages, check your computer’s network connection. If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web. Then when u do to http://localhost/asm3/database It comes up with Create your new ASM database Please select your locale: and after u create it comes up with internal server error

@sicknessquick: 2022-01-22 17:48:37
how can I contact you? I had the same error, I may be able to help

@fpta21: 2022-01-23 10:03:11
email me at aabaconsultants@gmail.com

@sebro52: 2022-04-04 18:08:19
Hello, I installed the software a few years ago with no problem but I had moved to hosting here and today when I wanted to reinstall it on my server I had the same problem and I can't manage to find the problem. Can someone help me. thank you in advance. sebrounet@gmail.com


Installing Unix free version of ASM3

@casey123: 2022-01-20 19:45:12
Is there an installer for the open source version of ASM for UNIX? I am trying to figure out how to install it onto my UNIX server but have not been successful. I was able to create the database and download the asm files but can't figure out what changes I have to make to the config file.


Forms won't stay gone

@mdeprima1964: 2022-01-12 05:21:59
My incoming forms (usually adoption applications) keep reappearing. I've deleted them, I've used the delete when processed... They go away and when I come back in they're back. I've had the problem to a lesser extent before so I'm always careful to leave the screen via some actual function, not just close the screen. I've got about 11 out there right now haunting me.


FTP file name for Rescue Groups

@mdeprima1964: 2022-01-12 05:18:18
I'm trying to auto upload data to rescue groups rather than double key into Petfinder. Honestly, going back and forth between the ASM manual and the Rescue Groups manual (which is overwhelming) is difficult. I'm close, but I'm unable to determine what the FTP file name coming out of asm is.

@mdeprima1964: 2022-01-14 00:42:07
It's unlike you guys not to reply. I am publishing records to Rescue Groups, but nothing is showing up on their side. I really need to confirm the name of the .csv file that is being exported. I searched the manual and found nothing.

@adoptamutt: 2022-01-14 23:45:54
I believe it is pets.csv.


Unable to create documents

@titnono: 2022-01-11 22:33:01
Hello, I updated ASM (from commit f402def on 2021-11-18 to commit 60fceea on 2022-01-06), and since then the "Document" button (in Animal record, or in Media tab) remains grayed out. I updated to the last commit e5f909a but the problem remains. Template editing still works. An idea?

@titnono: 2022-01-12 04:11:42
Oh, I read the changelog and found the solution (commit 9bbb200, # 364). It is now necessary to set templates to "show". Maybe the DB update should set the display to "everywhere" by default? Thanks

@robinrt: 2022-01-12 09:35:17
It does, but I can see how it's broken on MySQL because we accidentally used a reserved word in MySQL (SHOW). I'll add a fix for future users.


Creating and editing reports

@dejandohuella: 2022-01-10 20:10:38
Hello. I am in the reports page (Settings > Reports), and when I click the New Report button, or the name of an existing report to, I presume, edit it, nothing happens. The page doesn't try to load anything, I don't get any error messages, just nothing. I can use the delete, browse sheltermanager.com, edit header/footer and extra images buttons. I can't use the New Report or Clone buttons. Is there something I'm doing wrong or I'm not understanding? Or is there some problem with my installation?

@vbvbrj: 2022-01-11 07:13:58
The error is in the console --- schema.js:1 Failed to load resource: the server responded with a status of 404 (File not found) common_widgets.js?b=01051825:1538 Uncaught ReferenceError: schema is not defined at common_widgets.js?b=01051825:1538 common_widgets.js?b=01051825:1599 Uncaught TypeError: Cannot read properties of null (reading 'setValue') at V.<computed>.<computed>.value (common_widgets.js?b=01051825:1599) at V.<computed>.<computed>.a.<computed> [as value] (jquery-ui.min.js:6) at HTMLTextAreaElement.<anonymous> (jquery-ui.min.js:6) at Function.each (jquery.min.js:2) at S.fn.init.each (jquery.min.js:2) at S.fn.init.V.fn.<computed> [as sqleditor] (jquery-ui.min.js:6) at Object.<anonymous> (common_tableform.js?b=01051825:1339) at Function.each (jquery.min.js:2) at Object.fields_default (common_tableform.js?b=01051825:1323) at Object.dialog_show_add (common_tableform.js?b=01051825:702) value @ common_widgets.js?b=01051825:1599 a.<computed> @ jquery-ui.min.js:6 (anonymous) @ jquery-ui.min.js:6 each @ jquery.min.js:2 each @ jquery.min.js:2 V.fn.<computed> @ jquery-ui.min.js:6 (anonymous) @ common_tableform.js?b=01051825:1339 each @ jquery.min.js:2 fields_default @ common_tableform.js?b=01051825:1323 dialog_show_add @ common_tableform.js?b=01051825:702 click @ reports.js?b=01051825:298 dispatch @ jquery.min.js:2 v.handle @ jquery.min.js:2 ---

@dejandohuella: 2022-01-11 21:03:30
Hi vbvbrj. Are you having the same error, or have you had it in the past? Do you have any clue about how to fix it? In Chrome's console, when I click "New report", this is what I get: Uncaught TypeError: Cannot read properties of null (reading 'setValue') at V.<computed>.<computed>.value (common_widgets.js?b=01051825:1599:29) at V.<computed>.<computed>.a.<computed> [as value] (jquery-ui.min.js:6:1115) at HTMLTextAreaElement.<anonymous> (jquery-ui.min.js:6:2126) at Function.each (jquery.min.js:2:3003) at S.fn.init.each (jquery.min.js:2:1481) at S.fn.init.V.fn.<computed> [as sqleditor] (jquery-ui.min.js:6:1944) at Object.<anonymous> (common_tableform.js?b=01051825:1338:68) at Function.each (jquery.min.js:2:3003) at Object.fields_default (common_tableform.js?b=01051825:1322:11) at Object.dialog_show_add (common_tableform.js?b=01051825:701:23)

@vbvbrj: 2022-01-12 15:39:34
I have a fresh install of asm3. I started using this application two weeks ago.


Ability to customize ASM

@katcentre: 2022-01-09 23:46:50
I volunteer with a dog shelter that is considering using ASM. We haven't yet decided if the hosted or open source version is best for us. For both versions, can we customize the menus and any other features (for example, adding “returned animal to street” under Out in the Move tab)? Is there a free trial period of the hosted version?

@adoptamutt: 2022-01-14 23:50:45
The hosted version is so easy because all your upgrades and backups are handled automatically. I'm hosted and I know that on hosted, you can not add something like that to the Menu. You would add a Movement and select "Released to Wild".

@schelleffar: 2022-01-18 03:13:43
Hi, We use the hosted version of SM and it's very good, as we get to focus 100% on the animals and not the tech side. You can edit drop down lists, create any forms, documents templates, email templates, we use it for all email communication with foster carers and potential adopters. As we are 100% home based animal rescue (meaning all animals are at home with foster carers) they use the mobile app to record worm and flea treatments and upload photos that we use to auto publish to the Per Rescue site. You can add new fields to pretty much anywhere in the system and have that data fed in by online forms or manual entry. I have built a range of custom reports, their SQL report building function is so easy to use, so we build reports to suit our needs. So there is a lot of flexibility with the hosting system, but it does have limitation on menu items. For your "return animal to street" I would simply use the TNR option in the movement tab.

@adoptamutt: 2022-01-20 19:12:49
We also have a good Facebook users’ group called ASM Rocks.


Costs in animal view vs clinic invoices on animal tab

@vbvbrj: 2022-01-09 12:53:56
Could someone explain why Clinic Invoices and payment on Clinic tab of Animal view is not counted in Balance when viewing that Balance in Costs tab of Animal view? Is there a way to move Donations (in Payment tab of Animal view) go thru Bank::Current and payed Vaccinations, Transport, Treatment, Tests extract from Bank::Current?

@robinrt: 2022-01-20 16:05:44
The clinic was intended for billing members of the public who bring animals into the shelter for medical care. It therefore doesn't count towards the cost of shelter animals.


Suggestion: Use jquery autocomplete module in place of select tag.

@vbvbrj: 2022-01-07 17:25:15
Using autocomplete would allow search by arbitrary term in long list (for example Breed) and filter the list to only those that have the term in the text. This will also allow a multiline option to be used to fit long options in the box.

@robinrt: 2022-01-07 17:48:15
We used to do this a long time ago. It is horrible on mobile, and causes lots of problems when the autocomplete appears near a viewport boundary. Most browsers allow you to type a search when a select tag has the focus, even though you can't see it happening it will choose the match in the list.

@vbvbrj: 2022-01-07 19:52:50
I've tried the interface on mobile and found it unhandy to do any complex options. And "autocomplete" of select tag does matching from first character only. Could it be an option to switch between select and jquery autocomplete?


No "sheltermanager3" service installed when building from source.

@vbvbrj: 2022-01-07 17:20:17
I use bundled makedeb.sh to install asm3 in docker environment. After finishing there is no init.d or systemd service installed, therefor the line: --- CMD service sheltermanager3 start && tail -f /var/log/sheltermanager3.log --- in https://github.com/bobintetley/asm3/blob/master/scripts/docker/Dockerfile has no effect. As there is no such service.

@robinrt: 2022-01-07 17:48:40
The dockerfile is old. We don't run a separate service, the package deploys a config file for apache.

@vbvbrj: 2022-01-07 19:55:04
Should I use: --- python3 code.js --- or use apache is a better aproach?

@robinrt: 2022-01-08 09:34:36
Apache is better, but you can run it directly with the embedded webserver for testing.


Allow multiple site address in same instance

@vbvbrj: 2022-01-07 17:10:30
Is there a way to allow accessing same asm3 instance via different fqdn names? For ex.: shelter.com adoption.org example.asm3.site And all links should be to same fqdn as used for accesing the site.

@robinrt: 2022-01-07 17:48:52
Use apache vhosts.

@vbvbrj: 2022-01-07 19:49:57
Will vhosts interfere with configs: base_url and service_url from /etc/asm3.conf ?

@robinrt: 2022-01-08 09:35:20
Yes, you would have to use mod_wsgi in Apache to run a separate ASM process for each vhost.

@vbvbrj: 2022-01-08 12:51:59
using separate processes for each vhost with same DB will make inconsistency of DB records. My goal is to run one asm with one DB but with multiple external fqdn names.

@robinrt: 2022-01-09 08:43:34
You can still use the same DB for your processes. I can't see how there would be inconsistency as ASM can use multiple processes over a single DB - we certainly do in production for performance.

@vbvbrj: 2022-01-09 12:45:29
thank you


Change currency symbol independently of local or disable showing currency symbol

@vbvbrj: 2022-01-07 16:55:17
A suggestion to allow changing currency for money to custom independently of system interface language. User can opt for showing interface in desired language, but all currency should show same currency used in the country of software use.


Remove 'nowrap' style in tables.

@vbvbrj: 2022-01-07 16:50:01
I have a suggestion. Please remove the hard coded 'nowrap' style for span which enclose titles in tables listing Vaccinations, Tests, Recipts. I use long descriptive names in titles in two languages. Example of such a table is at http://site/animal_vaccination?id=1 : TABLE#tableform.asm-table TBODY TD.ui-widget-content.asm-completerow SPAN Also, when adding here a new record the dropdown menu Type also has 'nowrap' so the menu expands far right out of the popup box. Can it also make long lines break so it fits in the popup box? I've found a solution: In https://github.com/bobintetley/asm3/blob/master/src/static/js/common_tableform.js line 252 I do this: --- if (ic == 0 && formatter === undefined) { var linktext = tableform.format_string(vr, vr[vc.field]); if (table.truncatelink) { linktext = html.truncate(html.decode(linktext), table.truncatelink); } if (linktext == "") { linktext = _("(blank)"); } var style = ( linktext.length > 30 ) ? " style=\"white-space: normal\" " : ""; t.push("<span style=\"white-space: nowrap\">"); t.push("<input ty pe=\"checkbox\" data-id=\"" + rowid + "\" title=\"" + html.title(_("Select")) + "\" />"); t.push("<a href=\"#\" class=\"link-edit\" data-id=\"" + rowid + "\"" + style + ">" + linktext + "</a>"); t.push("</span>"); } --- The minimun length that I check to disable nowrap I've set 30 chars as per personal. May be there is a better solution.


SOPs in ASM

@drjarred: 2022-01-05 23:35:13
Hello, Is there anyway to upload documents (like SOPs) into ASM that are affiliated with the organization itself and not an animal or person? Dr Jarred

@robinrt: 2022-01-06 08:26:35
You can upload general documents under ASM->Document Repository

@drjarred: 2022-01-06 18:30:46
Thank you!


Internal server error when creating the database

@sicknessquick: 2022-01-05 17:46:17
Hello. I'm trying to set up a new instance of asm3 on an online hosting after doing several tests on . I've tried both Debian (11 and 10) and Ubuntu (20.04). I install Apache, MariaDB, PHP and PHPMyAdmin and then ASM3. Then when I access the app with my browser, it redirects me to the database creation page. After clicking Create Database it runs for a bit until showing an internal server error. Checking the database with phpmyadmin shows the last table created is stockusagetype, with all of them being empty. [Phpmyadmin](//muut.com/u/sheltermanager/s2/:sheltermanager:1GMP:phpmyadmin.png.jpg) This only happens on instances in my hosting service. I've previously made several tests on local virtual machines in my computer and it didn't happen. Just to see what would happen, I exported the full database from one of those working virtual machines and imported it on my online instance. I could access asm3, but it would again show an internal server error when trying to create a new animal, or when trying to access the config page... Can anyone help me find the cause and maybe fix it? I'm not the most experienced guy with this kind of thing, and it's making me crazy. Thanks in advance.

@robinrt: 2022-01-05 17:50:25
What is in your apache logs? Check /var/log/apache/error.log and the /var/log/syslog

@sicknessquick: 2022-01-05 18:00:14
here's what the log shows: https://pastebin.com/kqgBHPcf

@sicknessquick: 2022-01-05 18:08:14
that was the error.log, and here is the syslog: https://pastebin.com/yCLFbaps

@robinrt: 2022-01-05 18:27:18
Hi, thanks for reporting. It looks like you're running the latest code from github - it appears we've got a bug and we've used a MySQL reserved word (SHOW) as a column name. It's preventing your database from being created. I've applied a fix to git now, if you pull the updates (or clone again) it should be fixed. This has snuck through because we don't really use or test with MySQL. We use SQLite in development and PostgreSQL in production.

@sicknessquick: 2022-01-05 18:41:40
Thanks a lot, I'll try again and confirm if it works

@sicknessquick: 2022-01-05 20:30:26
it works indeed, thank you for fixing it so quickly :)

@fpta21: 2022-01-21 10:02:38
Hey mate, email have a few questions for you! :) doing the same on same ssystem. Need help!


Linking documents/medical records from Media tab

@drjarred: 2022-01-04 20:51:24
Hi there, We currently use the media tab for all of our medical records (I either upload documents from outside hospitals or my own computer - like labwork) or when I create a new document from the animal profile its made into a document under the media tab. This was the system in place when I got here when the shelter only used paper records and scanned in everything after. So progress! But this obviously proves difficult when viewing and printing medical records for adopters since they are all in different documents. Is there a way to link media documents? Scan in more than one thing to a date? A more efficient way to do medical records in general? Dr Jarred

@robinrt: 2022-01-05 10:08:29
There isn't any other way to link media documents I'm afraid. Assuming that all the data has been keyed into the relevant tabs (medical, test, vaccination, logs), you could use the "Print Animal Record (for adopters)" report, which gives them all of the info and full medical history less anything sensitive like the original surrenderer info.

@drjarred: 2022-01-05 22:51:03
Alas. Thank you!


Vaccine Schedule

@drjarred: 2022-01-04 20:48:59
Hey guys, I feel like there is a way to do this but I cannot seem to easily figure it out. How can we set up an automatic scheduling with the vaccines to where two weeks after giving a certain type of vaccine it automatically populates two weeks later for the booster? Is this a thing? Also - this may prove to be too detailed but is there a possible way to link this an animals age so that the boosters keep popping up while an animal is under a certain age (for kittens and puppies)? For instance, in my old shelter the vaccines automatically populated two weeks later for animals over the age of 20 weeks, and for animals under the age of 20 weeks it would continue to populate until they were over 20 weeks. Is there anything in ASM that might serve this purpose? In private practice we had a different software that accomplished the same goal where we entered the vaccine as #1/#2/#3 and then it would populate two weeks from there for the booster since they needed to have vaccines up until 20 weeks. Would this method be more appropriate in ASM? Thank you! Dr Jarred

@robinrt: 2022-01-05 10:09:47
You can set a repeat period on the vaccination type (Settings->Lookup Data->Vaccination Types). The system will prompt you to reschedule for this period when you use the "Give" button on the vaccination tab or vaccination book. You can use template animals for kittens and puppies to pre-create the vaccinations they need. See https://sheltermanager.com/repo/asm3_help/animals.html#template-animals

@drjarred: 2022-01-05 22:50:49
This is perfect, thank you!


Changing the name of Trap Loans

@leannec: 2022-01-03 01:30:50

@leannec: 2022-01-03 01:31:31
Is it possible to change the name of Trap Loans? We would like to call it Equipment Loans which fits in more with what we use it for.

@robinrt: 2022-01-03 08:45:59
It is called Equipment Loans and has been for about 6 months on sheltermanager.com, are you self-hosting an older version? The new release (45) will be out in the next few weeks.

@leannec: 2022-01-03 12:26:36
Not that I know of... I notice it says Equipment loans at the top of the page when I go in there. But the QuickLinks still says Trap Loans. How can I change that?

@robinrt: 2022-01-03 12:59:37
ah, you can't - it's part of the translations. I'll mark that for fixing, thanks.


Background on incoming forms - question

@bajadogslapaz: 2021-12-31 05:28:53
Good evening, I created a new Adoption Application and I put a background image in it to make it a little interesting. But I notice that the image also displays in the incoming form. Is there a way to somehow turn off the background when the user hits submit so the forms we store in the media tab don't have the background? Thanks for any suggestions.

@robinrt: 2021-12-31 09:34:00
I've added a fix for this, background-image directives should be stripped in future.

@bajadogslapaz: 2021-12-31 16:30:42
Awesome!!! Thank you -- you are FAST!!


Redirect to parent page of website from embedded form

@bajadogslapaz: 2021-12-30 02:50:11
Hello everyone. I am using and iframe to embed some of our ASM forms into our website. The only thing, is that the redirect URL after the submit comes up in the iframe instead of the parent page. Is there any way to get the redirect to go to the parent vs. inside the iframe? Thanks for any help - I'm sure someone has handled this before. Charlene

@robinrt: 2021-12-30 08:53:26
If you have control over the page that is redirected to, you can make it break out of the frame with a line of javascript. https://stackoverflow.com/questions/6657198/how-do-you-break-out-of-frames-without-breaking-the-browsers-back-button

@bajadogslapaz: 2021-12-30 15:46:25
The parent page is our website, so yes we have control over that. The other is Sheltermanager where our form is. On the form it asks what page to redirect the user to after they click submit. I'm not sure where I would put that line of javascript.

@robinrt: 2021-12-30 16:03:57
It goes in the head section of the web page that you are redirecting to. The line detects that it is in an iframe and breaks out of it by setting itself to be the top level page.

@bajadogslapaz: 2021-12-30 16:22:45
Got it! Thanks and it worked!


Removing animals from foster in medical book and follow up appointments

@drjarred: 2021-12-30 00:25:39
Hey guys, Is there a way to remove animals from the medical book and medical calendar that are in foster? It seems that when we change an animal's status to "adopted" that they get automatically removed from the medical book but not for fosters. Is there a way to do this? Dr Jarred

@robinrt: 2021-12-30 08:51:49
There is, but it may not be appropriate for you. It's by turning off "Treat foster animals as shelter inventory" under Settings->Options->Movements. This will also take your foster animals out of shelter view, so you may not want to do this.

@drjarred: 2021-12-30 18:45:22
Would we still be able to run a report on them? They just won't show automatically in shelter view? Our foster person does not really "use" ASM (she has her own system in place). What else might this affect?

@robinrt: 2021-12-31 09:19:16
They'll still show up under Move->Foster Book. Aside from shelter view and any current inventory reports, I can't think of anywhere else affected off the top of my head.

@drjarred: 2022-01-03 23:24:12
That makes sense - would we still be able to schedule future appointments for them in the clinic calendar still?

@robinrt: 2022-01-04 09:39:11
Yes, that should still be ok.


Employee/Doctor Schedule in Clinic Calendar

@drjarred: 2021-12-29 22:59:46
Hey guys, I am wondering if there is a way to mark something in the clinic calendar without it being linked to a particular animal? For instance, I want to mark the veterinarian availability in the clinic calendar so foster/adoption team can know when to schedule appointments with me. Is there a way to do this? I seem to be only be able to add things specific to an animal under clinic calendar. Any of the other tabs under medical calendar might work for this also? Anyway to just add in block time? Thanks! Dr Jarred

@robinrt: 2021-12-30 08:51:05
Not on the clinic calendar, but you could use the staff rota screen to indicate hours you are working ?


Timeline

@lcross: 2021-12-08 22:36:44
Is there a way to restrict access to the timeline. We do not want certain people/users from seeing the timeline. We took it off the home page but it still shows up under the ASM tab. Wanting to remove that option if possible.

@robinrt: 2021-12-30 08:50:01
There isn't, I'll put this on our list to add in future.


Animal Control Calls Dropping

@bkrodle: 2021-12-03 19:40:55
We've noticed over the last couple of days that we have animal control calls for service dropping into the time line and disappearing from the incomplete or undispatched area of the home screen. My officer's have missed a couple of calls due to this issue.

@robinrt: 2021-12-04 10:25:55
Hi, there's certainly nothing in the application that should be randomly completing incidents. Have you had a look at the audit trail on those incidents to see who changed them and when? If you're using sheltermanager.com, email us at help@sheltermanager.com with your account number and some of the incidents in question so we can have a look into it for you.

@bkrodle: 2021-12-06 16:17:39
I think it's just a refresh issue. I've only caught it once. I viewed an incomplete call, then it disappeared when I backed out of the page. Then it came back when I refreshed. One of the officers said it happened to him a couple of times on his IPAD, but I'm not sure he refreshed the page. Looks to be working now. If I can catch it again, I'll send you the info. THANKS!


Screen view has changed overnight

@lynnep: 2021-12-03 09:34:51
When I logged in this morning, my screen view had changed back to the default light and there is no option to turn it back to the colours I had. Also all the payment amounts are being shown in $ instead of £. Has something gone wrong?

@robinrt: 2021-12-03 09:38:19
The old themes have been retired, see https://www.facebook.com/sheltermanager/posts/311343900999173?notif_id=1638443347875181¬if_t=feedback_reaction_generic&ref=notif Did you change your locale under Change User Settings? That would explain the £ becoming $

@lynnep: 2021-12-03 09:41:32
I changed it to English (gb) on my user id to see if it made a difference, but it didn't

@lynnep: 2021-12-03 09:44:30
ok, I've just changed it to Use System and it has gone back to £ again. Sorry to bother you.

@robinrt: 2021-12-03 09:53:43
No bother, glad it's sorted :)


Retailer Location when Publishing

@schelleffar: 2021-11-30 23:50:45
Hi, I am using Sheltermanager.com and when I set an animal movement to retailer, and publish it to Pet Rescue it shows the Shelter Manager default location not the retailer location. The Retailer is flagged as a retailer and even if I use the "Move an animal to a Retailer" it still does not show the retailers suburb in the published version on Pet Rescue. IF I change the movement type to Foster and select the retailer from the person list it works. Have we set the retailer incorrectly? Thank you in advance.

@robinrt: 2021-12-01 09:44:44
Hi, you aren't doing anything wrong. The publisher code is only checking if there is a foster. This is a trivial fix and you've caught me doing the morning deployment, so it should be fixed by the time you read this!


shelter inventory at date

@lenawinningham: 2021-11-22 18:17:29
When i run the report "shelter inventory at date" it does not give me accurate results. I even tried pulling the report for yesterday's date, because we havent had any movements since then, and it is completely inaccurate, and missing about 20 animals. But its not clear who or why, its random, not like all fosters or anything. When i pull a report for earlier this year, i know it is at least 60 animals less than what we really had in our care. What am i missing?

@adoptamutt: 2021-11-28 04:27:13
First thing I would do would be to delete and then re-add the report to make sure I had the latest version. Anything special or similar about those 20 missing animals?


Docker image?

@jaylyerly: 2021-11-20 17:21:02
Is there a docker image available for ASM3? I've poked around a bit on hub.docker.com, but nothing popped up. We're migrating our installation to a new hosting provider and I was hoping just to drop in a docker container. Thanks for the info!

@robinrt: 2021-11-20 17:51:55
I think we have a script for building a docker image in the source tree (in /scripts/docker), but we don't ship an image.

@jaylyerly: 2021-11-23 19:10:04
Thanks for the pointer!


Any wildlife rescues using ASM3 ...?

@pearsos: 2021-11-18 11:46:54
Hi, noob here. I'm helping implement ASM3 for the wildlife rescue I volunteer at. I'm wondering if there's anyone else in a wildlife rescue who has already been through this and would be willing to share their undoubtedly sage-like wisdom of their experience. Thanks in advance.

@jimdunne: 2021-11-18 17:54:08
We are a hedgehog rescue and have been using ASM for a few years, started off self hosting then changed to the on-line version 2 years ago. We deal with around 650 - 700 hedgehogs per year.


Changes in Media to Change Person Record

@mhs_jeff: 2021-11-16 12:32:49
Hey Everyone, I'm pretty sure I know the answer to this, but, is there anyway that a change to media could trigger a change to a person record. For example if a box was filled in, in a document attached to that person's record could it populate an additional field in their person record? Thanks Jeff

@robinrt: 2021-11-16 16:23:12
The answer is no - unless that document was created by an online form. Processing an online form for a person can set an additional field - just name your online form field additionalFIELD where FIELD is the name of your additional field from Settings->Additional Fields.

@mhs_jeff: 2021-11-16 17:44:46
that's what I thought, thank you!!


Show If in Online Forms

@mhs_jeff: 2021-11-16 12:31:09
Hey Everyone, I've been using the Show If controls in the online fields successfully for a while, however. I have come across a situation where I would like to only show if another input is NOT EQUAL to a value. I haven't been able to figure this out. I have tried <> and != and neither have worked. Any help or suggestions would be greatly appreciated. Thanks Jeff

@robinrt: 2021-11-16 16:22:09
Just ! will do it. Eg field!value

@mhs_jeff: 2021-11-16 17:44:54
Thank you!!

@mhs_jeff: 2021-11-16 18:41:28
I guess follow up question, is there a way to put an AND statement in the show if? What language / syntax does this field use?

@mhs_jeff: 2021-11-16 19:20:46
I figured out the AND operator, now trying to figure out the Or operator. Sorry for the all the questions.

@robinrt: 2021-11-16 19:26:29
The complete docs are here: https://sheltermanager.com/repo/asm3_help/onlineform.html#show-if-syntax There isn't an OR operator - it's designed to be a simple tool for non-programmers to use!

@mhs_jeff: 2021-11-16 19:27:20
Ok thank you, I found the docs. Appreciate your time and quick responses as always!


Html publish?

@arrowhead: 2021-11-08 22:26:33
So now that you "retired" the old html publisher our adoptable animals haven't uploaded or updated in almost a month and there isn't a manual publish option. How exactly do you set up an "API" to publish our animals? How do we get our animals into our website now?

@robinrt: 2021-11-09 09:50:19
It's just another URL. There's info in the "integrating your website" section of the manual, but I've emailed instructions for your account.


Emails - Multiple CC's

@schelleffar: 2021-11-01 01:57:22
Hi, I am using Sheltermanager.com and I have setup email templates etc, but I want to be able to send to multiple cc's. I have setup some of the main emails in Options, and they are all showing correctly on the CC drop down list, but I can't add more than one to the CC field. I have tried using a comma to separate, but when I go to select another email address, it just replaces the current one. EXAMPLE: We have a team looking after a certain animal, and we want to CC the foster carer, the vet, and some of the team members, so we go to the animals and click Email, it pulls the correct email address, be we can't add more than one CC. Can you please instruct me how to do this. Thanks :-)

@robinrt: 2021-11-09 09:52:05
It's the fault of the on screen widget. It's an autocomplete so choosing an entry replaces everything in the box. You can manually type a comma followed by another email address and keep going for as many addresses as you like, but you can't use the autocomplete. I'll file this as a bug.

@schelleffar: 2021-11-30 23:21:18
Thank you so much, being able to add multiple emails address without having to type them all is really needed. I appreciate your help.


IsAdopter

@mhs_jeff: 2021-10-31 19:06:54
Hey Everyone, Maybe silly question. How is the IsAdopter column populated in the Owner Table? I can't find anything about it in the Manual. I assumed that is was changed from 0 to 1 when an adoption movement occured that included that owner, but I have several examples where this didn't occur. I'd like to use this field for searches and filtering data but I want to make sure I fully understand it first and know how and why it gets changed. Thanks Jeff

@robinrt: 2021-11-09 09:52:58
It's checked by the system whenever you make a change to a movement. All movements are checked for that person and if it has at least one that is an unretured adoption, the flag is set. If there are no unreturned adoptions, the flag is cleared.

@mhs_jeff: 2021-11-16 12:19:52
Interesting, ok. Thanks! I will have to dive in to those that are cleared to see if they returned.


Forbidden

@cindie: 2021-10-30 17:51:27
I can log in OK but after that, when ever I try to click on anything, it says forbidden and won't let me go any further

@robinrt: 2021-10-31 09:03:36
Sounds like whoever created your user account hasn't granted it any permissions.


Animal Media - PNGs or tags?

@lisazorn: 2021-10-24 00:31:44
Hi - Is it possible to upload png images for animals? I'd like to in order to have images with transparent backgrounds, but it looks like ASM converts pngs to jpgs. If I am (hopefully) able to upload a png, could I tag it or figure out how to access the png specifically? I am hoping to do an integration with our website where I cycle through these types of photos on the front page which means needing to be able to figure out how to access them. (My understanding is the way to do this now is using the sequence id via https://sheltermanager.com/repo/asm3_help/service.html#animal-image) Thank you! -Lisa

@robinrt: 2021-10-24 09:14:59
Sorry, there isn't really an easy way as (like you saw) PNGs are converted to JPEG during import. It would be complicated, but in your website you could render the images to a canvas and then convert a colour within the image (typically #fff) to transparent in javascript. The other way is to preprocess the images you want with a script, download them and convert white to alpha and then serve those on your website.


Custom report help

@nigglesnush: 2021-10-11 09:57:09
Is it possible to pay for a customised report to be created? I think the SQL might be beyond me, and I just need one report.

@robinrt: 2021-10-12 09:56:19
it is, email us at help@sheltermanager.com with your requirements and account number if you have one with us. There's also a friendly report builder tool you can use to make reports without the need for SQL - https://youtube.com/watch?v=6ryMDZbIXA0


Online Form HUGE on mobile

@schelleffar: 2021-10-11 03:55:52
Hi, I am using Sheltermanager.com and when I look at the online forms either on my mobile or via developer tools in the browser, the form text is huge. I have tested on Android Note 9 and iPhone and Tablets. How do we make these responsive? This should be automatically built in, if not can you please provide the relevant code to make them responsive on any device. I think it would be massively beneficial if you provided some templates or sample CSS styles to format the forms in the help documents. We are a rescue run 100% by volunteers, not IT specialists. EXAMPLE: We have a declaration with a Yes/No option to select, but because there is so much text in the declaration, and the form width is narrow it makes it difficult to read, and on mobile you have to scroll forever. Thank you in advance.

@robinrt: 2021-10-11 09:49:47
Hi, it sounds like you've hit a common issue of making the text for a checkbox far too long. This causes mobile scrolling issues and many other layout problems due to the browser trying to make the table cell too big. If you have a checkbox field where the text is something like "Yes, I agree to this very long piece of text agreeing something etc." then put that text in a raw markup type field above the checkbox and then just make the checkbox label text something short like "I agree". This should clear up the layout issues. The forms are already responsive, the fields will grow to 100% with stacked labels on portrait mobiles and it sounds like that's what you are seeing? If you continue to have issues, email us at help@sheltermanager.com with your account number and the form that's causing problems.

@schelleffar: 2021-10-11 23:31:33
Thank you so much for replying :-) I also found the global header code for mobile and reduced the text size which made a big difference, I will have a play with the Raw Mark-up type field, I was not aware I could do that, so I truly appreciate your help.

@schelleffar: 2021-10-11 23:35:11
That worked perfectly - THANK YOU :-)


Online Form Submit URL Issue

@schelleffar: 2021-10-11 03:13:27
Hi, I am using Sheltermanager.com and when I embed a SM online form in our website using an iFrame, when we click submit on the form the redirect url shows the web page inside the iFrame, not as a normal page. Am I doing something wrong?

@robinrt: 2021-10-11 09:46:10
You aren't doing anything wrong, that's how iframes work. If you have control of the webpage that you are redirecting to, you can use some javascript to break out of the iframe: https://css-tricks.com/snippets/javascript/break-out-of-iframe/

@schelleffar: 2021-10-12 00:02:19
Thanks :-)


Upgrading from very old (33201) to latest ASM

@mattatmickaboo: 2021-10-07 03:06:22
Hi Robin! My shelter has gone a long time without updates (stability is great!) and are now trying to upgrade from very old ASM (DB version 33201) to the latest ASM after moving to Ubuntu 20.04 I've gotten sheltermanager 3.44 installed and attempting to log in, but it doesn't seem to be running dbupdate.py to try to upgrade the DB and, consequently, fails to find fields (like il.SiteID) when I log in and crashes. Is there a way to manually invoke dbupdate.py to force through all the DB updates that need to be made? Alternately, if this is a huge lift, do you do consulting and what's your hourly rate? ;)

@mattatmickaboo: 2021-10-07 03:12:25
Here's some debug info: 021-10-06 19:11:24 DEBUG asm_pr users.update_session user matt has locale override of en_GB set, switching. 2021-10-06 19:11:25 INFO asm_pr users.login matt logged in 2021-10-06 19:11:26 DEBUG asm_pr utils.get_asm_news Retrieved ASM news, got 3284 bytes 2021-10-06 19:11:26 CRITICAL asm_pr Database.query (1054, "Unknown column 'il.SiteID' in 'field list'") File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 561, in query s.execute(sql, params) File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 209, in execute res = self._query(query) File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 315, in _query db.query(q) File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 239, in query _mysql.connection.query(self, query) OperationalError: (1054, "Unknown column 'il.SiteID' in 'field list'") 2021-10-06 19:11:26 CRITICAL asm_pr Database.query failing sql: SELECT a.*, at.AnimalType AS AnimalTypeName, ba1.Ani malName AS BondedAnimal1Name, ba1.ShelterCode AS BondedAnimal1Code, ba1.Archived AS BondedAnimal1Archived, ba2.AnimalName AS BondedAnimal2Name, ba2.ShelterCode AS BondedAnimal2Code, ba2.Archived AS BondedAnimal2Archived, bc.BaseColour AS BaseColourName, bc.AdoptAPetColour, sp.SpeciesName AS SpeciesName, sp.PetFinderSpecies, bd.BreedName AS BreedName1, bd2.BreedName AS BreedName2, bd.PetFinderBreed, bd2.PetFinderBreed AS PetFinderBreed2, ct.CoatType AS CoatTypeName, sx.Sex AS SexName, sz.Size AS SizeName, o.OwnerName AS OwnerName, ov.OwnerName AS OwnersVetName, ov.OwnerAddress AS OwnersVetAddress, ov.OwnerTown AS OwnersVetTown, ov.OwnerCounty AS OwnersVetCounty, ov.OwnerPostcode AS OwnersVetPostcode, ov.WorkTelephone AS OwnersVetWorkTelephone, ov.EmailAddress AS OwnersVetEmailAddress, ov.MembershipNumber AS OwnersVetLicenceNumber, cv.OwnerName AS CurrentVetName, cv.OwnerForeNames AS CurrentVetForeNames, cv.Ow

@robinrt: 2021-10-07 09:26:55
il.SiteID was in update 33908. All of the database updates are repeatable (ie. they don't break anything if they run again), so you if you run this query and go to the ASM home page, it should re-attempt all database updates to get you upto date. ``` DELETE FROM configuration WHERE itemname='DBV'; ``` Email me, help@sheltermanager.com if you get stuck :)


Hidden field and location in online form

@lisazorn: 2021-10-05 06:41:38
Hi - we're creating a form for people who want to board with us, and we'll use it to create a new animal in ASM. I would like it to automatically population the internal location with a specific value (SaveABunny: Potential Client)... so basically if I could make a hidden field with a set value, that would work. Is that possible? Also, is internal location a field I can populate from the online form? Thank you! -Lisa

@robinrt: 2021-10-07 09:28:04
Sorry, you can't populate internal location from an online form. Animals created from forms will get the default location from Settings->Options->Defaults.


Remove Default Options

@cheryl114: 2021-10-03 22:52:06
Hi Is there a way to remove Default options? As a multi-species animal rescue center the default really doesn't work for us.

@robinrt: 2021-10-04 10:16:08
Yes. You can edit all the lookups under Settings->Lookup Data. You can also choose the defaults under Settings->Options->Defaults


SAC CSV

@chsstacey: 2021-09-29 23:14:50
Our csv export does not work with the new Shelter Animals Count matrix. Has anyone had luck with the new data report?

@robinrt: 2021-09-30 08:07:59
The version in the repository called shelteranimalscount monthly export 2021 should be working. If it isn't, what are the error messages you are getting from them?


Email Audit Trial Question

@schelleffar: 2021-09-29 03:33:24
Hi, We have setup the emails to be sent to the foster carers when medications are due. But we need to see a audit record on the emails that have gone out. Where in the system can I see that the system generated email have gone out. We are using sheltermanager.com Thanks in advance

@robinrt: 2021-09-29 09:36:39
Install the report "Audit Trail: Sent Emails by Date". The fosterer emails should be included on that report.

@schelleffar: 2021-10-11 03:02:56
Thank you for the reply, that report has all the email content, I am just looking for a report to show that system emails to Foster carers were actually sent out. Is there a basic report showing this. EXAMPLE: We have clinic and medical treatment for our rescue animals and we have set reminder emails to the Foster carer, but do not know if they have gone out.

@schelleffar: 2021-10-11 03:10:58
All good, I can just go to the section for System and it shows they went out - thanks :-)


Publishing Template - Foster Flag

@megw341: 2021-09-25 01:11:03
I'm trying to add a page on our website for animals that are flagged for "Needs Foster". I added the coding for the iframe and it shows up but the animals with "Needs Foster" flag will not show up. I used other flags like "Needs Rabies" or "On Meds" and those work. I have no idea what I'm doing wrong. Cache time says 30 minutes....it's been 3 hours.

@megw341: 2021-09-26 16:04:48
After about 6 hrs the animals flagged for foster showed up on the website so it's working. Is there a faster way to get them to feed to the site?

@robinrt: 2021-09-29 09:38:57
The server side cache time is 30 minutes, but your browser can hold onto it for longer. If you press CTRL+R it will force your browser to reload the page.

@adoptamutt: 2022-03-01 16:55:23
What did your filter look like? I'm not having success with my scripting for ADDTIONALFLAGS 'like' (my additional flag is 'Ignore'). I have: --- <script> asm3_adoptable_filters = "sex agegroup"; asm3_adoptable_iframe = true; asm3_adoptable_iframe_fixed = true; function asm3_adoptable_filter(a, index, arr) { return a.ADDITIONALFLAGS.match("Ignore") && a.WEBSITEIMAGECOUNT > 0; } </script> ---

@robinrt: 2022-03-01 17:18:31
Hi Karen, I think this user will be use the html-flagged-animals service call rather than using an adoptable animal filter (html-flagged-animals will return shelter animals who aren't adoptable too). In your code, the match method returns an array containing the matched strings - you're treating it as a boolean, so it being non-null will return true every time. Test the return value of match for >0 instead to check for nonzero matches. ``` return a.ADDITIONALFLAGS.match("Ignore") > 0 && a.WEBSITEIMAGECOUNT > 0; ``` Performance probably doesn't matter on something so trivial, but the normal approach would be to use indexOf to do a substring test rather than using the regular expression engine. indexOf returns -1 if the test string is not present. ``` return a.ADDITIONALFLAGS.indexOf("Ignore") != -1 && a.WEBSITEIMAGECOUNT > 0; ```


is there a way to scan microchips into ASM instead of entering manually?

@lialang: 2021-09-18 22:06:24

@robinrt: 2021-09-19 08:03:35
I think there are some types of scanners that will behaves as a USB keyboard, so that when you scan, they type the number you just scanned. They would work. Some will store the scanned numbers in a file that you access via USB storage and copy/paste. Looking around on Amazon, it's not obvious what features the scanners have and they vary wildly in price.

@bkrodle: 2021-09-21 14:54:16
We have a bluetooth HERO scanner that will scan the microchip into whatever field our cursor is in. It will even scan to the desktop screen.


Document Template PDF Format

@schelleffar: 2021-09-16 08:36:01
I have created a few document templates, and when I view them as PDF's the fonts change so does the font size - but it is in random places, not all text, only sections. The formatting is not coming over. I have the PDF set at A4 (<!-- pdf papersize a4 -->) But the page size is not the issue it is font, I have it set as Arial, and then it randomly changes back to San Serif in the template, but in PDF, it does not show what is displaying in the editor.

@schelleffar: 2021-09-16 08:50:38
PS: I am using sheltermanager.com

@robinrt: 2021-09-19 07:55:58
Hi, this will be where your text elements are inheriting the default font. The display stylesheet when editing uses sans-serif, but the PDF engine uses serif. You can fix it by reapplying font styling to those elements in the editor.

@schelleffar: 2021-09-20 00:12:13
I already selected the text and re-applied the Arial font in the document template editor, but when viewing as a PDF it still shows the old font (Serif). I did think maybe it's because I copied and pasted the text from an original PDF, so I didn't have to re-type everything, could that be the issue?


Word Key problem

@jimdunne: 2021-09-15 12:46:13
I have created some new documents and am having trouble with word keys. The majority of the document populates correctly from the relevant keys, but some do not work. The one's giving problems are test keys <<TestResult>> and <<TestComments>>, and Log keys <<LogName>> <<LogDate>> and <<LogComments>>. All my additional keys are working, as are medical, but I cannot seem to get these others working. Any Ideas?

@jimdunne: 2021-09-15 13:31:21
Screenshots of source document and output document. Test info not carrying over. I have similar with log fields. [Screenshot 2021-09-15 132926](//muut.com/u/sheltermanager/s1/:sheltermanager:y5w4:screenshot20210915132926.jpg.jpg) [Screenshot 2021-09-15 132755](//muut.com/u/sheltermanager/s1/:sheltermanager:SKOv:screenshot20210915132755.jpg.jpg)

@adoptamutt: 2021-09-16 21:20:33
On the Tests, it looks like you are missing the test name. For example, I have a test called "Heartworm" so I use <<TestGivenRecentHeartworm>> and <<TestResultRecentHeartworm>>

@robinrt: 2021-09-19 07:56:30
You can also use an index, eg: LogName1 for the oldest and LogNameLast1 for the newest.

@jimdunne: 2021-09-19 10:37:01
I fixed it with <<TestResultMicroscopy>> etc which now populates the document - thanks!


Foster highlighted in green

@mdeprima1964: 2021-09-06 20:43:24
I have 1 foster, that is always highlighted in green when I look at the shelter view? Why? What does this mean? [Screenshot_20210906-144058](//muut.com/u/sheltermanager/s3/:sheltermanager:Ohdz:screenshot_20210906144058.png.jpg)

@robinrt: 2021-09-07 08:54:16
It means they have space available. They've been assigned a capacity of 3 and have 1 animal hence 1/3. You can set the capacity under the Type slider of the fosterer's person record.


Custom Form Error

@mdeprima1964: 2021-09-03 00:02:31

@mdeprima1964: 2021-09-03 00:08:23
Sorry, signed in and it submitted... Anyway, I've created a custom foster application form. When someone tries to submit, an error is thrown as attached ("us17b sheltermanager.com says" "email not valid" - which email? I've deleted and readded the email field to the form, I've deleted and readded the email input into the form and the one directing where copies of the application go. None have helped. [Screenshot_20210902-180113](//muut.com/u/sheltermanager/s3/:sheltermanager:6jun:screenshot_20210902180113.png.jpg) [Screenshot_20210902-180054](//muut.com/u/sheltermanager/s3/:sheltermanager:i6xl:screenshot_20210902180054.png.jpg)

@robinrt: 2021-09-03 10:20:24
Have you got another field in your form of type email, maybe one that is being hidden by a showif rule?

@mdeprima1964: 2021-09-06 20:43:37
Found it!


Photo uploader issue

@sjras: 2021-08-31 19:21:50
Our medical team just got in touch to lmk they started getting an error message this morning when adding photos to new pets. They use it commonly and until now haven't had a problem. Didn't know if this was a wider issue or maybe just us. [Screenshot_20210831-141814_Textra](//muut.com/u/sheltermanager/s3/:sheltermanager:hd5w:screenshot_20210831141814_textra.jpg.jpg)

@robinrt: 2021-09-01 13:42:31
It certainly looks environmental. Your connection seems to be dropping will the image is being uploaded. Is this happening on all devices? Does it happen if you use mobile data rather than wifi?


Calendar Option?

@hilarybrogers: 2021-08-27 17:32:13
Is there any sort of calendar option in ASM? We are looking for something that would show us when animals have their surgery dates, when they are coming into the shelter from foster care, when they have booster appointments, when medications are due, etc. I'm still very new to ASM but in poking around, I didn't see anything like this off the bat, and wanted to check before recreating it in a different system (like Google calendars) since all the information we would want on it is already contained within ASM. Thanks!

@robinrt: 2021-08-28 09:07:35
Hi yes, there's a calendar view. I think it's included on the quicklinks bar by default, but it can also be accessed in multiple places, eg: Medical->Medical Calendar, ASM->Diary->Diary Calendar. It has filter boxes at the top to control which items will be shown on the calendar, such as diary reminders, medical treatments and vaccinations, etc.


Fosterer (Space Available)

@hilarybrogers: 2021-08-26 00:16:56
I see one Foster that is showing that she is currently fostering 3 out of 8 available spaces, but she is the only one. How do I update the number of 'spaces' available by foster for our shelter? Or maybe there is a report that is easier to run? I'm trying to get a single view of the fosterers and who currently has animals and who has space to take in new ones. It seems like the functionality is there, I'm just not seeing how to utilize it. Thanks!

@robinrt: 2021-08-26 09:13:45
It's the "Foster Capacity" field under the "Type" slider of the fosterer's person record.

@hilarybrogers: 2021-08-26 18:49:42
Perfect! Thank you! This is exactly what we need. :)


RescueGroup Export

@bfreides: 2021-08-13 03:53:31
what are the matching fields that export to RescueGroups? The below list are the fields based on their import - what are the ShelterManager fields that match up with those? "externalID", "status", "internalID", "rescueID", "name", "type", "priBreed", "secBreed", "mix", "sex", "okwithdogs", "okwithcats", "okwithkids", "declawed", "housebroken", "age", "specialNeeds", "altered", "size", "uptodate", "color", "pattern", "coatLength", "courtesy", "dsc", "found", "foundDate", "foundZipcode", "photo1", "photo2", "photo3", "photo4", "videoUrl"

@robinrt: 2021-08-13 10:21:16
The code is here and starts at line 133: https://github.com/bobintetley/asm3/blob/master/src/asm3/publishers/rescuegroups.py

@bfreides: 2021-08-13 18:40:35
Thanks. few more questions: 1) how often does the file get created? this it a manual or automatic process? 2) can I process a file without it going to RescueGroups? I want to review the file to make sure I understand what is going on. 3) I don't see a video passing in the code, only 4 pics? am I correct?

@robinrt: 2021-08-14 09:32:29
1. It's manual when you run it from the publishing menu and automatic too. The interval is configured in the publishing options screen (all publishers tab). 2. I'm afraid not, but you can review the exact file sent in the publishing logs. 3. Correct, rescuegroups don't allow video URLs as part of their import spec so we can't send them.


Diet Keys

@audraf: 2021-08-11 22:46:25
Hey all, I'm trying to add the diet to the info we send home with fosters. I've tried pretty much every diet key in the handbook and none of them work. Thoughts on what I might be doing wrong?

@robinrt: 2021-08-12 10:18:11
The most common mistake is not saying which diet record you want, eg using something like <<DietName>> is wrong. You need to be using something like <<DietNameLast1>> to access the most recent diet on file.

@audraf: 2021-08-12 16:53:47
Great thanks! I had tried it with recent but las one works

@audraf: 2021-11-12 19:52:59
Bumping this up with a similar question about medication, what would be the proper key for that? Thanks


Images not showing up in email

@audraf: 2021-08-10 18:36:55
Hi all, when sending out emails though the mail/membership option, the photos have been coming up as broken links. I'm using the source from ASM, when I use the photo icon or add it as HTML, it still not coming through in email. Any ideas?

@robinrt: 2021-08-11 09:16:08
Many email clients hide images from unknown senders by default as images used to be used by spammers to figure out if your email was active. There should be an option somewhere to show the images. Also, pasted images (data-uris) will not work in emails as these are stripped by most email providers, they have to be done via URLs/extra images. https://youtube.com/watch?v=T-Tfnxc_PTU

@audraf: 2021-08-11 19:13:16
Thanks. So even if the image already lives in ASM, it needs to be uploaded again this way?


Exposing multiple videos for one animal

@lisazorn: 2021-08-10 03:42:47
I found that I can attach a URL for a video for an animal, but it looks like there's a limit of just one. We have some rabbits who have a number of wonderful videos that have been published (on facebook); is there a recommended way to do this?

@robinrt: 2021-08-10 09:35:35
I'm afraid there isn't, this has been on our list for a while so I'll bump up the priority. The only workaround for now is to put your video URLs in one or more additional fields so that they can be accessed in your publishing template. If you know a bit about coding you could put the video tokens in a comma separated list in a single additional field and then use javascript to split them into an array and generate the URLs and link tags on the fly in your template.

@lisazorn: 2021-08-10 20:18:53
Got it! Will do that! Thanks for the suggestion!


Vaccination Book vs Calendar View

@ketalabama: 2021-08-09 14:31:20
I'm curious at the logic difference behind the Vaccination Book vs the Calendar View. In Calendar view I see all the FVRCP and/or Rabies shots that are due in a given time slice (based off of expiration date). But when I go to the Vaccination Book and ask to see all due in the current day, or week, month etc it does not return any. Seems the two are using a different query or logic. In playing around with it the Vaccination Book expects there to be a near blank entry for the vaccination for an animal with the Required Date only (which matches the expiration date of the previously given vaccination). Then it shows up in Vaccination Book. But the Calendar View works off of the expiration date. Since we don't create a Required date entry until the expired vaccination is given (just has never been our practice) we really can't use the Vaccination Book which would be helpful. It would be nice if both were in sync. Is there a reason i'm missing that they use different logic?

@robinrt: 2021-08-09 15:49:59
The calendar is supposed to show both - vaccinations with a required but no given date, and vaccinations that have expired. Checking a test database that seems to be the case and I'm getting both? The expiry date is supposed to be a last resort, if you are scheduling future vaccinations you should always use a record that has a required but no given date. The expiry date is typically set for vaccinations given a year or more apart and means "I didn't expect this animal to still be here by the time this vacc wears off and it needs it again".

@ketalabama: 2021-08-10 13:50:04
Thanks for the response. The expiry date is important for us as we have many kittens who are in foster care that may be here longer than for their first shot. Furthermore as part of our adoption fee we cover all 3 shots so even if adopted at 8 weeks they come back to us for their boosters. I don't have an issue with the calendar view (other than I would love a more printable list format). I just wish the Vaccination Book showed based on expiry date as well since that is a much more useful format for us with the volume of kittens we have. We've been doing it so long without creating the blank "Required by" entry that i don't see it being an easy or useful change for us just to get the book to display correctly unfortunately.

@robinrt: 2021-08-10 17:39:57
The Vaccination Book can show based on expiry date - just choose "Expired" from the dropdown at the top right of the screen.


Formatting documents in Media

@leannec: 2021-08-07 02:37:41
I am trying to change the formatting of the standard document in the Media tab. I would like to create a document which has Arial 11pt, and single spaced lines, but it keeps reverting to sans-serif 8pt and double spacing. I can't work out how to change it. Can someone help please?

@robinrt: 2021-08-07 08:56:25
Hi you should be able to just select the font and change it. You can get single spaced lines by pressing SHIFT+ENTER instead of just enter. Are you saving the document after you've finished with CTRL+S or the save icon at the top left of the toolbar? If you are, and you're using sheltermanager.com please email us at help@sheltermanger.com with your account number and the particular document you're trying to edit so we can take a look.

@leannec: 2021-08-07 12:17:11
Thanks for that. I think the issue is I am trying to copy and paste text from a Word document. This text was from a pdf document. If I copy the text straight from the pdf, it is fine, but if I copy from the Word document, the formatting changes. I will fiddle with the document, maybe I need to save it as a different format first.


Altering - " Not available for adoption" message

@bfreides: 2021-08-07 02:23:48
[Untitled](//muut.com/u/sheltermanager/s2/:sheltermanager:LwCt:untitled.jpeg.jpg) what manages the red highlight " Not available for adoption" box. can the logic or info in this box be changed? or info added to the box like FIV/L Positive? Thanks

@robinrt: 2021-08-07 08:54:43
The box and text can't be edited, but the rules governing it are under Publishing->Set Publishing Options->Animal Selection.

@bfreides: 2021-08-07 22:07:45
thanks is there a field that I can pull and put on a report "Available for Adoption" / "Not Available for Adoption"?

@robinrt: 2021-08-08 08:29:20
Not for a report, the status is calculated on the fly and not stored anywhere. I think we do have a task on our development list to do something about that. The existing reports test the IsNotAvailableForAdoption field, which is whether or not the flag has been manually set to say the animal is not adoptable. You can view animals by their status in Shelter View (pick Status from the dropdown at the top right). You can also add the virtual field "Adoptable" to your find animal results screen under Settings->Options->Find Animal/Person. This column shows the reason the animal is not adoptable.


Animals without a test

@jimdunne: 2021-08-06 23:19:35
How would I edit the 'Animals with positive test result' report so that it showed shelter animals without a test of any type please.

@robinrt: 2021-08-07 08:54:12
There's an existing report available called "Animals without a test of type"

@jimdunne: 2021-08-07 13:39:02
Thanks! Found it, it's under Auditing whereas the other report is in medical where I was looking.


What's the best way to change options for species to add non-standard species?

@caltechnetworks: 2021-08-06 12:12:41
I can't find the setting to be able to change the species within the ASM instance. Would this be something that is changed within the SQL Database?

@robinrt: 2021-08-06 12:25:34
It's under Settings->Lookup Data (or System->Lookup Data for old ASM2 desktop software).

@caltechnetworks: 2021-08-06 12:26:05
Wonderful!


Location on Report

@bfreides: 2021-08-06 06:52:31
$VAR from DATE Enter from date$ $VAR to DATE Enter to date$ SELECT ShelterCode, AnimalName, DateBroughtIn, species.SpeciesName, animal.TimeOnShelter, animal.DaysOnShelter, animal.id, animaltype.AnimalType AS theType, animal.BreedName, entryreason.ReasonName, oo.OwnerName AS OOName, oo.OwnerAddress AS OOAddress, oo.OwnerTown AS OOTown, oo.OwnerCounty AS OOCounty, oo.OwnerPostcode AS OOPostcode, oo.EmailAddress AS OOEmail, (SELECT LocationName FROM internallocation) AS aLocation FROM animal INNER JOIN animaltype ON animaltype.ID = animal.AnimalTypeID INNER JOIN species ON species.ID = animal.SpeciesID INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID LEFT OUTER JOIN owner oo ON animal.OriginalOwnerID = oo.ID WHERE DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$ 23:59:59' ORDER BY DateBroughtIn desc, AnimalName ************************************************* 1) trying to pull location for this report but it is correct - the HTML call is <td>$aLocation</td> 2) is there some guide that tells me the database names and fields? thank you

@robinrt: 2021-08-06 11:33:39
Your subquery is selecting every record in internallocation instead of the one linked to the animal. It should be (SELECT LocationName FROM internallocation WHERE ID=ShelterLocation) AS aLocation Or, you could just use the column animal.DisplayLocation instead which contains either the internal location or info on the active movement/death if the animal is fostered or no longer on shelter. Pressing CTRL+SPACE will autocomplete table and columns for you in the report editor. There's info in the manual on the main tables here: https://sheltermanager.com/repo/asm3_help/databasetables.html


Unable to Get Base Install of ASM to Allow Login

@caltechnetworks: 2021-07-31 14:50:34
So Ive created a base installation of ASM3 into my ubuntu 20.04 server instance, using a MYSQL instance on the same server as the webserver where sheltermanager deb was installed. I try to login and I get a redirect to local host 5000 and get an error with the device. I get error server unable to connect when im at the login screen. When i create the database i leave it for 30 minutes and I don't get any acknowledgement that it completes. I used the following to create the database --- mysql -u root -p *logged in" CREATE DATABASE asm3; CREATE USER 'asm3'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON *.* TO 'asm3'@'localhost' WITH GRANT OPTION; --- Am I missing something in my config of the DB server or am I missing something in the Web Server? In the /etc/asm3.conf file I added the following: --- asm3_dbtype = MYSQL asm3_dbhost = localhost asm3_dbport = 3306 asm3_dbusername = asm3 asm3_dbpassword = PASSWORD asm3_dbname = asm3 ---

@robinrt: 2021-08-01 12:00:41
your setup looks right to me. Does your username and pass work with the command line client? eg: ``` mysql -u asm3 -pPASSWORD -h localhost -D asm3 ```

@caltechnetworks: 2021-08-06 01:30:56
@robinrt, yes that does connect and it gets me into the CLI for MySQL. I thought it could be an issue with ubuntu's firewall-cmd but I disabled it and still no change.

@robinrt: 2021-08-06 11:30:11
What's the error message in the syslog when trying to connect? There might be clues there.

@caltechnetworks: 2021-08-06 12:25:52
Im working on pulling the logs now.


Adding Image to Report

@bfreides: 2021-07-28 03:45:16
new to SM - want to add animal image to Shelter Inventory at Date

@robinrt: 2021-07-28 08:35:45
Have a look at a report that already has images, such as Shelter Inventory with Pictures., you should be able to copy the line in the HTML section with {IMAGE.ID} in it. It will look like this: ``` <td><a href="{IMAGE.$ANIMALID}"><img border="0" src="{IMAGE.$ANIMALID}" width="75" height="50" /></a></td> ```

@bfreides: 2021-07-30 04:56:51
[Untitled](//muut.com/u/sheltermanager/s2/:sheltermanager:eHcf:untitled.jpeg.jpg) thought about that it returns a broken link.

@robinrt: 2021-07-30 09:12:25
Make sure you have a column called AnimalID in your query that contains animal.ID. Or if you've just included ID in the results change the HTML to IMAGE.$ID instead

@bfreides: 2021-07-31 02:58:21
im close - top half works not but the bottom does not [Untitled](//muut.com/u/sheltermanager/s1/:sheltermanager:Dun5:untitled.jpeg.jpg) I know the issue is the relationship between file CASE WHEN EXISTS(SELECT ID FROM adoption WHERE AnimalID = animal.ID AND MovementType = 2 AND MovementDate <= '$@thedate$' AND (ReturnDate Is Null OR ReturnDate > '$@thedate$'))

@robinrt: 2021-07-31 09:44:11
That isn't selecting the field value though. I'd guess that the problem is that you're selecting adoption.AnimalID which requires a successful join to the movement table. It won't be present for animals without an active movement. Use {IMAGE.$ID} instead in your HTML and include animal.ID (or a.ID if the table is aliased) in your SELECT statement - that way the animal ID will always be present.

@bfreides: 2021-08-06 06:47:14
got it.


Filtering payments by date

@deb_sacr: 2021-07-26 17:37:27
Hi all, Is there a way to filter payments on a person record by date (ie: 01/07/2020 - 30/06/2021) to be able to capture & select an entire financial year of donations?

@robinrt: 2021-07-27 08:36:48
Not on the person record itself. There's a report you can install called "Payment Breakdown by Person" that accepts a date range and produces itemised lists with totals for each person.


Import of csv not matching on person data

@deb_sacr: 2021-07-13 17:39:12
I'm trying to import a csv UTF-8 with the following field names: DONATIONPAYMENT DONATIONTYPE DONATIONDATE DONATIONAMOUNT DONATIONCOMMENTS PERSONFIRSTNAME PERSONLASTNAME Data is mapping to the correct fields, however the donors are pre-existing in the database and it is not picking up the match even though I'm ticking "Merge duplicate records", and is creating a new person record for each and every donation line. This is a copy/paste of the template I used last year for this task. Is anyone able to spot what I'm doing that's breaking the import?

@robinrt: 2021-07-14 09:16:01
The system cannot deduplicate person records with just the first and last name. You need to supply either PERSONEMAIL or PERSONCELLPHONE since these contain unique values for deduplication. Or, you can supply PERSONADDRESS where the triplet of first name, last name and first line of address will be used.

@deb_sacr: 2021-07-14 13:37:06
Thank you, I will go and try that now!

@deb_sacr: 2021-07-23 15:49:32
Thank you, that fixed the problem. I've updated my import template to not repeat the problem in the future. Is there any way of being able to dedupe on import using the unique person ID?

@robinrt: 2021-07-23 16:41:47
not right now, but that's a good suggestion for the future. I think there's an unrelated import job to do so I'll put a note on that


Online form issue

@sjras: 2021-07-13 03:07:10
Our office just let me know that they're having an issue with the online forms that people are submitting. The issue they're seeing is if someone fills out a form which asks for their address. The field is currently set to text, and that used to work. Since update that allowed us to require the 2 letter format for state abbreviations it comes in correctly if someone uses that format, but comes in blank if they type out the name of the state, misspell or use periods in the abbreviations. I just went into the settings of the field and there doesn't seem to be a way to change this without making it a look up field and us typing in all 50 states (we routinely adopt to local states, but we also DO adopt to states further away, especially when it's an animal with specific needs or more rare breeds.) I'm guessing this would also affect all forms, and we have a lot of them (since they make life SO much easier - thanks for giving us that option btw!) lol Just wondering if there's a work around for this or if I should get busy typing, copying & pasting 😄.

@robinrt: 2021-07-13 08:45:03
As you said, the only workaround is to make your state field a lookup containing the states. The values for the lookup would be: AL|AK|AZ|AR|AS|CA|CO|CT|DC|DE|FL|FM|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA| ME|MH|MD|MA|MI|MN|MS|MO|MP|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH| OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY (remove line breaks when you copy and paste) I'd maybe add your state code at the front so it's the first option since I guess that's where most of your form fillers will be?

@sjras: 2021-07-15 01:51:56
Thanks for always replying so quickly! And thanks for saving me the typing - I'd have been happy to do it, just wanted to make sure we needed to do it. Thanks again! 🙂


How to know if an email has bounced?

@ketalabama: 2021-07-12 13:52:03
Hi. We are exploring different ways to leverage the email functionality within ASM. For example, after processing an adoption being able to select a template of things to know for new adopter and sending to their provided email. But we all know sometimes email addresses have typos etc. I've done a few tests to see how we are notified if that happens. But i'm not seeing it come in a bounceback to the "from" email inbox or on the animal log. Appreciate any feedback on this topic. Thanks!

@robinrt: 2021-07-12 13:57:28
Hi, if you're using hosted SM with us, bounced emails will be forwarded to the bounce address. You can configure what that address is under https://sheltermanager.com/my/ with your master username and password.


Hide dropdown boxes on website interface when there are no dogs available

@iming: 2021-07-12 02:10:58
Hello, Just wondering whether there is a way to hide those dropdown boxes (i.e. Species, Age & Sex) on the website when we have no dogs available for adoption? Currently, it shows those 3 dropdown boxes and then blank underneath. I would like to show a message like "Sorry no dogs available for adoption at this moment. Please check back later". Once again, thank you for your help on this matter. Iming

@robinrt: 2021-07-12 14:08:03
You could do it with javascript. Teaching programming is outside the scope of our support, but here is an example that will hide the filter dropdowns and show your message if there are no animals: ``` <script> setTimeout(function() { if (document.getElementsByClassName("asm3-adoptable-item").length==0) { document.getElementById("asm3-adoptable-filters").style.display = "none"; document.getElementById("asm3-adoptable-list").innerHTML = "Sorry no dogs available for adoption at this moment. Please check back later"; } }, 1000); </script> ```


Broken rabbit view

@lisazorn: 2021-07-08 18:37:46
Hi ASM! I was testing website integration and put an iframe in the description of this animal and it's broken their view (so I can't fix): https://us15b.sheltermanager.com/animal?id=495 Would you mind fixing? How should I handle this in the future? (my shelter is nl2089) thanks!

@robinrt: 2021-07-09 09:13:22
Fixed now. Very interesting that it allowed you to do that and break things! I'll raise an issue to investigate that.

@lisazorn: 2021-07-10 21:19:16
Thank you!!

@lisazorn: 2021-07-31 23:16:51
Hi again - shoot, I did it for this bunny as well: https://us15b.sheltermanager.com/animal?id=423 (sorry!!) Do you think it's possible to strip the html from description when you render the shelter manager page for the animal?

@robinrt: 2021-08-01 11:58:23
What's happening is that any entities are being encoded when stored in the database, but the front end is decoding them before putting them in the box. We do this mainly for foreign languages where unicode code points are being used. I've fixed your rabbit now. Out of interest, why are you putting iframes and HTML content in a description field? Those things would be better added to any templates you are using to output animal pages.

@lisazorn: 2021-08-03 02:59:53
It's because our social media manager posts lots of content (mainly videos) to facebook so in the past, we have embedded the facebook videos to the rabbit description. It seems like we should upload the video directly to shelter manager instead...

@lisazorn: 2021-08-03 03:05:59
Aaah and now i see i can't upload video media to shelter manager. Hmm... What's the recommended way to share video content?

@lisazorn: 2021-08-10 03:41:39
Argh I'm sorry - one more from another volunteer: https://us15b.sheltermanager.com/animal?id=495

@robinrt: 2021-08-10 09:17:18
Ok, here is the query to fix these yourself at Settings->SQL Interface: ``` UPDATE animal SET AnimalComments = '' WHERE ID = X ``` Substitute X for the animal's ID number - it's in the address bar when you view it, eg: animal?id=1234

@lisazorn: 2021-08-10 20:17:33
Got it, thank you!!


Animal age

@lica2440: 2021-07-05 18:06:12
When I used to look at a kittens profile, it would show the age in weeks, (ex. "aged 16 weeks") but is now showing it in months instead. (ex. showing a 13 week old kitten as "aged 2 months") How can I fix this so it shows the age in weeks again?

@robinrt: 2021-07-09 09:10:14
The change has already been reverted. If you are still seeing this on some animals, run Settings->Trigger Batch Processes->Recalculate Animal Ages.


Incoming form edit

@jimdunne: 2021-06-30 12:30:03
Is it possible to edit the data on an incoming form? I inadvertently put the wrong title on the lastname field so cannot use the 'create person' function.

@robinrt: 2021-07-02 09:27:50
Not without modifying the database directly with queries. You could also create the person record manually and use Attach->Person.


Search box at top of page change?

@a_sarah: 2021-06-29 20:51:20
I add alternate name spellings, FKAs, AKAs, common site info, special notes in the "hidden comments" field. It seems that the "Search" box at the top of the page is no longer looking at this field. This is very inconvenient. Has anyone else had this problem? Is there a way to search this field now?

@robinrt: 2021-07-02 09:29:19
The advanced find animal screen allows searching hidden comments.


User Guide

@janine_awspe: 2021-06-29 07:36:47
I have downloaded the Setup Manual and was wondering if you also have a User Guide for ASM3. Something a first time user or someone not too familiar with the programme can make use of.


Merge Owner fields

@janine_awspe: 2021-06-24 08:07:55
How do I merge Owners's details? We have many owners with the same details but every time they are put into the system a new record is created. I'd like to merge all the same Owners into one record.

@robinrt: 2021-06-24 09:09:52
There's a merge button on the person toolbar. Start from the person who has the most info on file, click merge, choose a duplicate and it will merge any records (eg: medial, movements, etc) from the selected record to the open one. It will not merge the details - you have to do that by hand if one of your duplicates has extra values not present in your chosen survivor record.


Payments

@mdeprima1964: 2021-06-23 08:38:54
I really need more documentation on how payments work. Maybe it's really intuitive and I missed the boat? I have the adoption fee set for every cat, but sometimes when I create my contract document adoptiondonation contains the fee, sometimes it's 0.00. I don't know how to create a payment due when I change a reservation to an adoption, or when I just do an adoption movement. Then how do I fulfill it? If this is all in the manual, please just point me to the section. But when I go to the payments section, I don't see any of this detail. Thanks

@robinrt: 2021-06-23 09:35:59
Editing movements under the movement tab will not change payment data. If you use the workflow screen at Move->Adopt an animal, this will prompt to create a payment record for the amount of the adoption fee on the animal. It will also automatically turn a reservation into an adoption if one is present for the same person you are processing the adoption for. By default, payments on the Move->Adopt an animal screen are marked received, but you can change that to due with the option under Settings->Options->Movements. You can also choose to show both due and received dates with the option under Settings->Options->Accounts If I'm understanding the fulfil question and you mean marking the payment received, you can do that from the payment tab of the animal or person, or from the Financial->Payment Book screen (there's a filter for due payments).


Listing Vaccinations on a Document

@mdeprima1964: 2021-06-23 08:33:20
I'm trying to list all the FVRP's given to a kitten on a medical document. If I use <<VaccinationGivenRecentFVRCP>> I get the most recent FVRCP. I've tried the following to get a list of vaccinations with no luck... <<VaccinationGivenLastFVRCP1>> (and 2 and 3) <<VaccinationGivenLast1FVRCP>> I didn't really think this would work <<VaccinationGivenRecentFVRCP1>> What the heck is the construct?

@robinrt: 2021-06-23 09:29:48
Short answer is that you can't. You can only access the first and last of any vaccination by type. In this case, VaccinationGivenFVRCP for the first and VaccinationGivenRecentFVRCP for the last. Not sure if it's useful for what you're doing, but there's a token <<AnimalVaccinations>> that will just output a table of all vaccinations given to the animal.

@mdeprima1964: 2021-07-02 05:05:32
My struggle is trying to separate rabies from fvrcp. Thank you!


insert space in string output for cage cards

@ibesky: 2021-06-21 16:10:56
I'm trying to add some custom flags that I put in via additional fields into our cage cards. I got the flags to show up on the cage card (used the cage card with QR code as a template), but I'd like to put a space (or a carriage return) in between each flag if it is at all possible. My syntax for adding is (* at beginning of row designates added code to original report) (SELECT NAME FROM lksyesno WHERE ID = animal.HasActiveReserve) AS reserved, *(SELECT Value FROM additional WHERE LinkID=animal.ID AND AdditionalFieldID=20) AS af_20, *(SELECT Value FROM additional WHERE LinkID=animal.ID AND AdditionalFieldID=18) AS af_18, *(SELECT Value FROM additional WHERE LinkID=animal.ID AND AdditionalFieldID=19) AS af_19, animal.breedname, I get an output like this: [Screenshot_49](//muut.com/u/sheltermanager/s1/:sheltermanager:N8nW:screenshot_49.png.jpg) Output HTML: <tr> <td colspan="1"><font size="5">Color Level:</br>$AF_18</td> <td colspan="1"><font size="5">Flags:</br>$AF_20</td> <td colspan="2"><font size="5">NOTICE:</br>$AF_19</td> </tr> Any help to fix the formatting would be appreciated.

@robinrt: 2021-06-21 17:22:59
You could edit the query line for AF20 to substitute spaces next to the commas as below. Note that any modifications made manually to the query will be lost if you use the query builder. ``` (SELECT REPLACE(Value, ',', ', ') FROM additional WHERE LinkID=animal.ID AND AdditionalFieldID=20) AS af20, ```


Process of migrating ASM2 to ASM3

@janine_awspe: 2021-06-17 08:47:01
Hi there! Can you please give me a run down of the process to get our unhosted ASM2 migrated to a hosted ASM3? What's the procedure to follow and what files etc do we need to provide and when? We have some edits to make to the current data (kennels/owner info etc). When do we do this?

@robinrt: 2021-06-21 17:21:10
Hi, the first step is to sign up for an account, then send the files over to us at help@sheltermanager.com for import. Info on which files we need can be found here: https://sheltermanager.com/site/en_faq_asm2.html


HTML and CSS in animal description

@srupe05: 2021-06-12 21:51:32
Is there a way to use html and/or css coding in the animal description so it appears on the website. Specifically using the animalview html template. When adding to the animal comments, the output is not very readable with an abundance of information. Would like to break it up with paragraphs, line breaks and add links to outside websites for more information.

@robinrt: 2021-06-13 08:42:41
Use $$DESCRIPTIONBR$$ in your template to turn line breaks into <br> tags. It is not possible to put links in the animal description as it is XSS protected. You can put links in the animalview template.


Keeping history and Backup/restore

@scordeau: 2021-06-11 15:46:06
Hi Robin, We have a vet that helps us and she uses ASM to log the medical treatments of our animals. We have ASM online. Here in Quebec, Canada, the medical files need to be conserved 5 years after the animal quits the shelter. Do all the datas are conserved, always, no matter the date we've entered it ? What's the better way to conserve ASM data for this long since now ? And how to restore an older db to another database if we need to? Thanks in advance for your response :). Stéphanie Cordeau

@robinrt: 2021-06-13 08:47:10
Yes, data is kept indefinitely unless you delete it. If the reasons for removing data were related to personal data, then there are options under Settings->Options->Data Protection to anonymise personal data after a number of years. We prefer to anonymise rather than removing because removing would prevent you being able to run historic figures and stats. I can understand it with personal data, but why would you need to remove animal data after 5 years? When you say older db, could you clarify what you mean? We keep 6 weekly rotated backups off-site and can restore your database back to a point upto 6 weeks ago.


QR on passport

@audraf: 2021-06-09 19:45:45
We have a form made in ASM I'd like to add a QR code of that form to our animal passports (so another ASM form). What's the best way to do that?

@robinrt: 2021-06-10 12:13:00
You'd have to use an img with a URL to the google charts API to generate the QR for the form link. https://developers.google.com/chart/infographics/docs/qr_codes

@audraf: 2021-06-10 21:58:30
Ok, I really do not understand what this means.

@audraf: 2021-07-08 18:09:26
Is there anyone who can help with this?

@robinrt: 2021-07-09 09:18:50
Follow the developers link above, it shows you how to construct an image URL to a QR code. You need to replace the Hello World in their example with the target URL to your form. Once you have that you can put an img tag in a raw markup type field on the form you want the QR code to appear. Eg: ``` <img src="https://chart.googleapis.com/chart?cht=qr&chs=150x150&chl=Hello+world" /> ``` That will output the QR code image in your first form.


Forms report between two dates

@do724172: 2021-06-03 20:32:31
Does anyone have a report to pull incoming forms between two dates? Is this even possible?

@robinrt: 2021-06-04 09:36:43
You can use the "Incoming forms queue" report to get at incoming forms themselves. If you mean forms once they've been attached to records, there's a report called "View forms/documents attached between two dates"


Additional fields in document template

@jimdunne: 2021-05-31 12:35:54
I have created a new document that will print animal details with medical history to take with an animal when it goes to the vet. I would like to include some of our additional fields relating to condition on entry. I have a sub-report that prints the info on report; SELECT af.FieldLabel, CASE WHEN af.FieldType = 8 THEN (SELECT AnimalName || ' - ' || ShelterCode FROM animal WHERE ID = a.Value::int) WHEN af.FieldType = 9 THEN (SELECT OwnerName || ', ' || OwnerAddress FROM owner WHERE ID = a.Value::int) ELSE a.Value END AS Value FROM additional a INNER JOIN additionalfield af ON a.AdditionalFieldID = af.ID WHERE a.LinkType IN (0, 2, 3, 4, 5, 6) AND a.LinkID = $PARENTKEY$ which produces the info below; [Screenshot 2021-05-31 122726](//muut.com/u/sheltermanager/s1/:sheltermanager:HLTB:screenshot20210531122726.png.jpg) I cannot find any keywords that relate to this info. How can I add this info to a document template please?

@robinrt: 2021-06-04 09:38:16
You can just put your additional field name in the document template. Eg: <<MyFieldName>>


Show animal age instead of age group on the website

@iming: 2021-05-30 14:05:37
When you show animal ready for adoption on the website, how do you show the age (like 1y 11m) instead of the age group on the summary list (before you click an animal to get more information)? I feel the age showing in the backend is more useful than age group.

@robinrt: 2021-06-04 09:39:31
Hide the age group and use the "extra content" feature to show the age: https://sheltermanager.com/repo/asm3_help/service.html#extra-content a.ANIMALAGE will give the age in years/months.


Ages of Pets Not Being Published to Rescue Groups Website

@vikib: 2021-05-23 16:53:51
We use the Rescue Groups toolkit to publish our animals on our website. However, the age in years and months shows as blank. If you would like to see, www.dixiepaws.org/adoptable-pets. Our account is vb0822. Thank you for your help.

@robinrt: 2021-05-23 17:08:15
Hi, unless it's changed, the RescueGroups import spec doesn't allow us to send them a date of birth. Instead, we can only send a PetFinder style age group (Baby, Young, Adult or Senior)

@vikib: 2021-05-23 17:15:44
OK, thank you for the info.

@vikib: 2021-05-23 18:42:36
I just found out from Rescue Groups that there is a birthdate field.


wordkey question

@sjras: 2021-05-20 19:37:22
We're importing records from our vaccine clinics and ran in to a question. All of the pets are non-shelter and we have all of the animal wordkeys set to go. We hit the owner information and didn't know whether they should be listed as original owner or current owner or just person in order to be imported as the pet's owner in the import. We'll try testing with one of each to check it out if we're ready before there's any input, but figured we'd ask to see if anyone else has already invented this wheel 😄 THANKS!!

@sjras: 2021-05-21 01:00:16
Answered it ourselves - it's original owner in case anyone else ever needs the answer 🙂


TemplateType Internal server error

@factor: 2021-05-19 17:25:07
I have ASM3 deb package, Debian 10, MariaDB 10.5. All installed well no install issues I can see. The stock system works well. I am new as in only using for 2 days. I am logged in a User aka The superuser. I am creating a TemplateType animal. I try to follow this: http://myserver/asm3/static/pages/manual/animals.html#template-animals I named the animal "TemplateType", choose non shelter check box, Set the Type field to SC (Stray Cat), added on Vaccine FVRCP When I add new animal I get internal server error. I creates the animal but without template tests etc. [Screen Shot 2021-05-19 at 11](//muut.com/u/sheltermanager/s3/:sheltermanager:xDpf:screenshot20210519at11.19.06.png.jpg) [Screen Shot 2021-05-19 at 11](//muut.com/u/sheltermanager/s3/:sheltermanager:6yET:screenshot20210519at11.17.13.png.jpg) [Screen Shot 2021-05-19 at 11](//muut.com/u/sheltermanager/s1/:sheltermanager:aA3W:screenshot20210519at11.18.01.png.jpg) Thoughts? If add with type without template works as normal.

@factor: 2021-05-19 19:51:16
Ok in looking at syslog I find. CRITICAL sm_db Database.execute (1292, "Incorrect datetime value: '`2021-05-19 13:47:29`' for column `sm_db`.`animalvaccination`.`DateRequired` at row 1") File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 296, in execute#012 s.execute(sql, params) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 250, in execute#012 self.errorhandler(self, exc, value) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler#012 raise errorvalue File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 247, in execute#012 res = self._query(query) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 411, in _query#012 rowcount = self._do_query(q) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 374, in _do_query#012 db.query(q) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 292, in query#012 _mysql.connection.query(self, query) _mysql_exceptions.OperationalError: (1292, "Incorrect datetime value: '`2021-05-19 13:47:29` May 19 13:47:51 atlas CRITICAL sm_db Database.execute failing sql: INSERT INTO animalvaccination (AnimalID,VaccinationID,DateRequired,DateOfVaccination,DateExpires,Adm inisteringVetID,BatchNumber,Manufacturer,Cost,Comments,CreatedBy,LastChangedBy,CreatedDate,LastChangedDate,RecordVersion,ID) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) [23, 9, '`2021-05-19 13:47:29`', None, None, 0, '', '', 0, '', 'bdacus01', 'bdacus01', datetime.datetime(2021, 5, 19, 8, 47, 51, 827041), datetime.datetime(2021, 5, 19, 8, 47, 51, 827200), 84751, 7]

@factor: 2021-05-19 20:14:14
I checked "date" and timedatectl I see in the asm3.conf # The timezone offset to use before one has been configured # in the database (+/- server clock offset, NOT UTC) timezone = 0 Do I set this to America/Chicago? OR -6 OR leave it as 0 . The comments are very clear.

@factor: 2021-05-19 20:19:55
Sorry, The comments are not very clear.

@robinrt: 2021-05-20 08:48:16
I don't think the error is related to your timezone. That's a MySQL error and it's showing the DateRequired column is being rejected due to an invalid value. '2021-05-19 13:47:29' is a valid datetime value, I don't understand why this is happening.

@factor: 2021-05-20 15:40:39
Right it seems to be related to the Insert. I did find something about Day light savings time. on 1292, "Incorrect datetime value: I find https://www.tutorialspoint.com/how-to-fix-the-incorrect-datetime-value-while-inserting-in-a-mysql-table https://mariadb.com/docs/reference/mdb/data-types/DATETIME/ https://jira.mariadb.org/browse/MDEV-13358 https://bobcares.com/blog/mysql-error-1292/ https://stackoverflow.com/questions/35602939/mysql-1292-incorrect-datetime-value https://dba.stackexchange.com/questions/282890/warning-1292-incorrect-datetime-error-when-using-date-add Not sure if these help.

@factor: 2021-05-20 15:56:48
this to https://www.xspdf.com/resolution/50960049.html Mariadb invalid datetime format SQLSTATE[22007]: Invalid datetime format: 1292 , cnf and verify mysql variables for this question. MariaDB [(none)]> select @@​GLOBAL. In MariaDB 10.1.2 a new temporal format was introduced from MySQL 5.6 that alters how the TIME, DATETIME and TIMESTAMP columns operate at lower levels. These changes allow these temporal data types to have fractional parts and negative values. You can disable this feature using the mysql56_temporal_format system variable. DATETIME, SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2008-​03-30 02:56:12' for column 'created_at' at row 1 (S. QL: insert Invalid datetime format: 1292 Incorrect datetime value: '2011-03-27 02:47:26' Log In. Powered by a free Atlassian Jira open source license for MariaDB Corporation Ab. [MDEV-10068] Invalid datetime format: 1292 , SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime. The reason for this by default MariaDB's sql mode has NO_ZERO_DATE MariaDB starting with 10.3.2. Optiona lly, the locale can be explicitly specified as the third DATE_FORMAT() argument. Doing so makes the function independent from the session settings, and the three argument version of DATE_FORMAT() can be used in virtual indexed and persistent generated-columns:


Getting strange error when trying to add a new person

@rementis: 2021-05-18 01:10:25
From asm.log file: 2021-05-17 16:55:33 INFO asm users.login rementis logged in 2021-05-17 16:55:33 DEBUG asm code.person_new add person 2021-05-17 16:55:55 CRITICAL asm Database.query (1305, 'FUNCTION asm.REGEXP_REPLACE does not exist') File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 561, in query s.execute(sql, params) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 250, in execute self.errorhandler(self, exc, value) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler raise errorvalue File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 247, in execute res = self._query(query) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 411, in _query rowcount = self._do_query(q) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 374, in _do_query db.query(q) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 292, in query _mysql.connection.query(self, query) _mysql_exceptions.Oper ationalError: (1305, 'FUNCTION asm.REGEXP_REPLACE does not exist') 2021-05-17 16:55:55 CRITICAL asm Database.query failing sql: SELECT o.*, o.ID AS PersonID, ho.OwnerName AS HomeCheckedByName, ho.HomeTelephone AS HomeCheckedByHomeTelephone, ho.MobileTelephone AS HomeCheckedByMobileTelephone, ho.EmailAddress AS HomeCheckedByEmail, lfa.ID AS LatestFosterID, lfa.AnimalName AS LatestFosterName, lfa.ShelterCode AS LatestFosterShelterCode, lma.ID AS LatestMoveAnimalID, lma.AnimalName AS LatestMoveAnimalName, lma.ShelterCode AS LatestMoveShelterCode, lmat.MovementType AS LatestMoveTypeName, j.JurisdictionName, web.ID AS WebsiteMediaID, web.MediaName AS WebsiteMediaName, web.Date AS WebsiteMediaDate, web.MediaNotes AS WebsiteMediaNotes, doc.MediaName AS DocMediaName, doc.Date AS DocMediaDate, (SELECT MatchSummary FROM ownerlookingfor olf WHERE olf.OwnerID = o.ID GROUP BY MatchSummary) AS LookingForSummary FROM owner o LEFT OUTER JOIN owner ho ON ho.ID = o.HomeCheckedBy LEFT OUTER JOIN adoption lf ON lf.ID = (SELECT MAX(ID) FROM adoption slf WHERE slf.OwnerID = o.ID AND slf.MovementType = 2 AN

@robinrt: 2021-05-18 09:13:09
Your version of MySQL does not support REGEXP_REPLACE which is needed for search (specifically phone numbers). It was added in MySQL 8


Robust Manual

@mdeprima1964: 2021-05-09 03:30:20
Is there another, more detailed manual available other than the one you see directly from the drop down next to your name in Shelter Manager?

@robinrt: 2021-05-09 08:55:03
No, that's the manual and the only one available. Is there something you were looking for more info on?

@factor: 2021-05-19 20:27:44
My suggestions would be. A system requirements page CPU RAM Storage Preferred OS > the one you dev on. DB server versions A full install guide for both Source and DEB install. Full documentation of asm3.conf

@bkrodle: 2021-05-20 14:29:14
If you pay their very small hosting fee then you won't need all that information. We use the program on windows and ipad, through the app and desktop version. We use it with Safari, Chrome, IE7, and Edge. I haven't tried others but I'm sure they will work too. Our old 8 plus years computers ran it and our news ones do too with no performance issues. I understand not everyone can buy the hosting but for us it was the best and easiest option., We just paid the fee, recieved an email with login iformation and got right to work. The documents were a little challenging at first, but once we read through the manual and figured out the word keys we needed we adapted almost every existing document to produce the information we wanted. Reporting is easy too, I don't do SQL, but the existing reports have everything I need.

@factor: 2021-05-20 15:22:55
"If you pay their very small hosting fee then you won't need all that information." I am testing the system. It's available as open source . It should be fully documented. The best way to further a system is community involvement. To be involved we have to fully understand the application developers intentions. Full documentation is the key to that. "easiest option" I totally get it. If you are not a Tech person or dont have an IT department. Its the best way. I was just adding suggestion since the OP hasn't come back yet.

@mdeprima1964: 2021-05-24 15:52:40
Nothing specific right now, but I run into things that aren't in the manual or that I need more detail on. I'll just come here ;-)

@bkrodle: 2021-05-24 15:55:50
There is also ASM Rocks! on Facebook. Lots of good questions being answered there too.


Incoming forms not deleting

@mdeprima1964: 2021-05-09 03:27:22
My incoming applications are not being deleted after I process them. The result is that I process them twice, end up with 1 person record, but the same application attached twice. I have to delete them manually after I process them. This used to work for me.

@robinrt: 2021-05-09 08:56:00
Have you got the option on to delete forms when you leave the screen? The option is under Settings->Options->Online Forms. If you do, make sure you leave the screen by navigating to another SM screen, such as home by clicking on the icon at the top left or pressing CTRL+H

@mdeprima1964: 2021-05-24 15:49:53
I do have the option set. I'll be more careful when I exit the page and see if that helps.


Incoming Phone Number Formatting

@mdeprima1964: 2021-05-09 03:24:05
The phone numbers on my incoming applications are not being formatted on the person record. They're being displayed as a string of 10 numbers. How can I invoke the new formatting for incoming records?

@robinrt: 2021-05-09 08:57:40
I'm afraid you can't. The fix would be for us to have a phone number field type that applied the formatting within the form so that the person entering the number can make sure there are no problems.

@mdeprima1964: 2021-05-24 15:51:14
Is there anything I can do that will trigger the formatting? Like add a space to the phone number and the delete it? It would still be shorter than reformatting by hand.

@robinrt: 2021-05-24 17:24:15
The trigger is the blur event, so opening the record and clicking in and out of the phone field will format it.


Day of week on report

@cemerick: 2021-05-06 03:30:37
I would like to get the day of the week from a date. I’ve tried a couple of things and I can only get the day part of the date, so 3 for 03 May, for example. I would like to get Mo day or MON or something.

@robinrt: 2021-05-06 09:11:15
Assuming you're on sheltermanager.com with PostgreSQL, just use TO_CHAR. Eg: ``` TO_CHAR(datecolumn, 'dy') ```

@cemerick: 2021-05-06 13:47:21
The one thing I didn’t try. Thank you!


Audit records

@lynnep: 2021-05-01 19:29:17
Are audit records deleted after a certain period? Is there any way to select how long they should be kept?

@robinrt: 2021-05-03 10:27:12
They are deleted after 6 months to save space. It is not configurable.


Form attachments

@jimdunne: 2021-04-30 12:52:11
Is it possible for the person completing an incoming form to add an attachment?

@robinrt: 2021-05-03 10:26:54
No. They can only upload one or more images.


Creating an animal profile for shelter entry in the future.

@parrotbob: 2021-04-26 21:40:54
I am wondering if there is a way to enter information on animals that are to be surrendered, but haven't arrived to the shelter yet. We are trying to improve on our surrender management process and, since the animals will be migrating into shelter manager when they get here, it would make sense to start the data entry process as early as possible. The problem I'm seeing is that the dates available to me (like date entering the shelter) will not allow for dates in the future. I have created a "person flag" called "surrendering party" which helps to identify the people who will surrender. Of course I can create the animal profile and I can create a "location" pool which essentially bundles all the animals yet to be received into one "place," My problem is that I either need to leave the date entering the facility blank or try to get a date that is somewhere in the future. That seems to be my primary roadblock in making this work. Any ideas on how to make this work?

@robinrt: 2021-04-27 08:56:25
Hi, the system allows intake dates to be set upto 30 days in the future. How far ahead are you wanting to enter dates?


Transport Wordkeys

@jensfissenebert: 2021-04-23 09:15:38
Hi Robin, I can't find any Wordkeys for the transport field. Are they available?

@robinrt: 2021-04-24 16:32:00
https://sheltermanager.com/repo/asm3_help/wordkeys.html#transport-keys

@jensfissenebert: 2021-04-25 13:17:03
Thanks for the link. Haven't seen as we still run the older version I believe. Many thanks again and also a word of appreciation for your effort and time to the replies on the forum and an amazing program!


Multiple Animals per Document / All Animals per Owner

@jensfissenebert: 2021-04-22 15:28:20
Hi Robin, Is there a way to create a document for an owner with all animals he owns? For example issuing Travel Certificates per owner instead of creating one document per animal?

@robinrt: 2021-04-24 16:33:05
That's a good question. I can't think of a way to do that. Are the animals linked via movements or as non-shelter animals with links to the owner?

@jensfissenebert: 2021-04-25 13:14:43
Thanks a lot for your reply. They are linked as non shelter animals to the owner. Only other option I can think off would be tu run a report "Animals per Owner" but I am not sure if that would be possible either?

@robinrt: 2021-04-26 09:57:45
It would be easily possible with a report. You could use the $ASK PERSON$ criteria to choose the person and join to the animal table via animal.OriginalOwnerID. Group by owner for the header and output a $$BODY section for each animal. Doing this would require some knowledge of SQL and HTML.


Online form deleted by error

@scordeau: 2021-04-22 01:01:46
Is there a way to retrieve an online form/or the media related to it that has been deleted by error? The form has not been linked with nothing before deletion. I see the ID of the media that has been deleted in the auditing report Audit trail : deletions by date, with certain technical information about the media and onlineform, but nothing to help me retrieve the information I need. A new user error, he has not deleted the good one, and now we are missing the information of the owner, no way to contact the person... Thank you for your help.

@robinrt: 2021-04-22 09:43:27
Hi, email help@sheltermanager.com with your account number and we'll get it restored for you.


Foster medical email

@audraf: 2021-04-14 20:51:00
I'm interested in using this, is there an example of what the email looks like?

@galia: 2021-04-14 21:27:46
Hi, Sorry it is in French this is the email I got from ASM 3 foster family email I hope it gives you the idea Tim ==================================================================== Bonjour, Ceci est un e-mail automatique du logiciel de gestion des animaux de l'Association Galia. Vous recevez ce courriel parce qu'un animal dont vous avez chez vous peut nécessiter des vaccinations ou une autre intervention médicale. Veuillez vérifier dans le carnet de santé et nous signaler si le traitement est déjà effectué ou si vous avez besoin d'un bon vétérinaire pour effectuer ses soins. Merci à vous ________________________________________ Placé en famille d'accueil à Tim Hetherington depuis 09/01/2021 BESSY - D2021025 Femelle Labrador/Griffon Chien âgé de 7 années 1 mois. Placé en famille d'accueil à Tim Hetherington depuis 03/03/2021 ATTENTION : Cet animal a plus de 6 mois et n'a pas été castré/stérilisé Articles médicaux à venir 26/03/2021: 2em-Rappel 1 1/1

@audraf: 2021-04-14 23:33:23
Is it possible to edit?


Financial Report pulling only certain PaymentTypes.

@mmover: 2021-04-12 20:45:11
Is there a way that I can run a report that will only pull payments made within a date range to a certain DonationType (account) ? I've found the ID numbers I want to pull (210, 211, 212) but I can't seem to get the SQL to work. Here is what I have: 1 $VAR from DATE Enter from date$ 2 $VAR to DATE Enter to date$ 3 4 SELECT 5 ownerdonation.Date, 6 owner.OwnerName, 7 donationtype.DonationName, 8 Donation AS amt, 9 donationpayment.PaymentName 10 FROM ownerdonation 11 INNER JOIN owner ON ownerdonation.OwnerID = owner.ID 12 INNER JOIN donationpayment ON donationpayment.ID = ownerdonation.DonationPaymentID 13 INNER JOIN donationtype ON donationtype.ID = ownerdonation.DonationTypeID 14 WHERE ownerdonation.Date BETWEEN '$@from$' AND '$@to$' 15 ORDER BY donationtype.DonationName, ownerdonation.Date I thought adding between line 14 and 15 something like: AND ownerdonation.DonationTypeID = (210, 211, 212) But it gives me this: operator does not exist: integer = record LINE 15: AND ownerdonation.DonationTypeID = (210, 211, 212) ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. I feel like the answer is right in front of my eyes and I just can't see it. I blame it on a Monday.

@robinrt: 2021-04-13 09:19:14
You're supplying a list of values instead of an expression. Use an IN clause instead: ``` AND ownerdonation.DonationTypeID IN (210, 211, 212) ```

@mmover: 2021-04-13 14:26:13
Thank you so much!


WordKey for Foster Carer

@willowtree: 2021-04-12 07:44:47
Is there a wordkey to use in documents for the person who looked after the animal before it was adopted?

@robinrt: 2021-04-12 09:55:11
There isn't. You can only access the active foster carer info until the animal is adopted, then <<CurrentOwner*>> and <<Owner*>> become the adopter.


Online form to create animal - ReasonForEntry field

@scordeau: 2021-04-10 08:24:07
Hi, I want to ask the person who is bringing us an animal, for what reason. We uses the field ReasonForEntry from the Animal table when creating manually an animal, but I cannot feed this field via an online form. Why? Thank you :)

@scordeau: 2021-04-10 08:26:22
We want the person to explain, we don't want them to chose an EntryReason from the system.

@robinrt: 2021-04-10 10:22:31
It's just not on the list of supported fields. It's a good suggestion though, so I'll put it on our development list to add.

@robinrt: 2021-04-10 15:41:47
if you're using sheltermanager.com I added it with this morning's update. If you have a field named "reason" in your online form, it will be applied to the reason for entry field when creating animals from the form.

@scordeau: 2021-04-15 05:01:18
It works, thank you very much!


Sex By default

@scordeau: 2021-04-10 04:30:25
When creating animals via online forms, the by default sex value of the created animals is "Female". The sex field is not listed in the fields we can sets a by default value. Also, when I try to set a value to the sex field via the online form, it doesn't work. I think that the best way to resolve this problem is to set a by default value to the sex field ? Can you check this? Thanx!

@robinrt: 2021-04-10 10:20:36
You can have a field named "sex" in your online form. Make sure that you name it in lower case - "Sex" won't work.

@scordeau: 2021-04-10 15:23:34
Thanks, I will try this

@scordeau: 2021-04-15 05:09:17
Ok, i've retried and it's not working. If I enter other value than Female or Male, not working. We are in Quebec city in Canada so I use french canadian language, maybe a transaltion problem ? In table lksex, I have 3 values : ID null = "Femelle" (Female in english), ID 1 = "Mâle" (Male in english), and ID 2 = "Non sexé" ("Sex not define" or something like that in english). So, a lot of our animals entered via online forms needs to use the value of the ID 2 "Non sexé". Not working. Male works. Female too. But not the other value. I tried to change the value in the table to test, not working niether Any idea ? Thank you!

@scordeau: 2021-04-22 01:02:50
Need help with this, is there another way, a better way to contact ASM to help me debug this ? Thanks!

@sjras: 2021-04-22 04:07:49
We have the option of Male, Female and Unknown in our online forms and they've been working for as long as I can remember, so maybe Unknown would get you up and running?

@scordeau: 2021-04-23 21:38:47
I will try this :)


Website Integration for Animal Database

@lisazorn: 2021-04-08 21:21:36
Hello! We have a Drupal website which has a rabbit database for our shelter (http://www.saveabunny.org/rabbits/new). Since we've started using ASM, we find ourselves with two rabbit databases now, and so I'm exploring getting rid of the one on Drupal and switching to using ASM's animal database instead. I created a view of all the rabbits (http://www.saveabunny.org/content/shelter-manager-view) that uses animal-view-adoptable-js (I know it's underscores not dashes, but underscores causes this forum to render in italics) and looks similar to our old version, so my next step is to get the individual rabbit pages to look the way we'd like. ASM rabbit page for Bunny Doon: https://us15b.sheltermanager.com/service?account=nl2089&method=animal_view&animalid=404 Existing rabbit page for Bunny Doon: http://www.saveabunny.org/rabbit/bunny-doon I can think of two options for this: 1) Make the ASM rabbit page look like our existing rabbit page by adding the header, footer, etc elements to the HTML Publishing Template animalview. Pros: Easy enough to do, the current ASM multi -rabbit view already links to this Cons: The URL isn't as friendly compared to our version. Plus, I would need to keep the menus/header/footer etc in sync 2) Make the ASM multi-rabbit view link to a generic SaveABunny rabbit page, with the rabbit name (not used) and animalid as arguments. The SaveABunny page would then have php which would make a call to json_adoptable_animal using the animalid, and then render the rabbit as desired. Pros: The implementation straightforward with the possible exception that I'm not sure how to make the ASM multi-rabbit view link to our pages instead of ASM's animalview; is this doable? Cons: The URL is not predictable here either (without knowing the animalid). This could be a lot of API calls to ASM; is this ok? What do you recommend? (Also open to other options!) Thank you! -Lisa

@robinrt: 2021-04-09 09:07:31
You can have the page open the animal's page in a popup/iframe instead of navigating away so the user never sees the sheltermanager URL. Set asm3-adoptable-iframe = true in your JS. Documentation is here: https://sheltermanager.com/repo/asm3_help/service.html#popup-iframe

@lisazorn: 2021-04-09 19:35:31
Ah interesting, thank you for pointing that out! I think we still want to be able to direct link to an individual rabbit on our site though, for facebook or social media posts; what do you recommend for that?

@robinrt: 2021-04-09 20:29:47
I guess you could rewrite the URLs? Use a javascript delegate event to capture click events to the thumbnails and links we inject in your page and then read the href property of the clicked anchor, extract the animal id and go somewhere else.


Document Template - can I embed scripts or logic?

@lisazorn: 2021-04-08 20:56:37
Hi - I have a Cage Card document template (SAB_Cage_Card.html; our account is nl2089) and I'd like to add some logic to make some attributes more visible to help shelter staff see them. For example, if the diet includes an entry for No Greens, rather than just saying so in text, we'd like to have a graphic that makes it much faster/easier to spot. Is there a way to do this? Thank you!

@robinrt: 2021-04-09 09:05:01
You could use CSS. If you go to Tools->Source, you can put a style tag in your document to choose how to display certain elements. Use the token for your diet as the class attribute of the element to display, then add the appropriate CSS to your style tag to display an image or change the colour, etc.

@lisazorn: 2021-04-12 21:34:26
Thank you, that worked well!


Online forms in web page

@jimdunne: 2021-04-07 18:38:31
Is it possible to embed online forms in our website please, and if so, how is it done?

@adoptamutt: 2021-04-07 20:21:12
Yes. After you create the form, just insert the form URL into your website. Just look under the "Form URL" column in Online Forms for the specific URL.


online forms

@vsauder: 2021-03-30 18:46:22
I am working to put together an online form to allow individuals to register their animals that are microchipped with our shelter. This would allow animal control officers to scan and return to the owners more efficiently. I would like to use the create animal function. Is there a way to set the default type as a non-shelter animal without this being shown to the individual filling out the form?


Date on online forms

@margagomis: 2021-03-27 19:11:13
Hi, I would like to add today's date on an online form but not by choosing the date with a field. I've added a raw field to put html but I can't figure out how get today's date. Thanks!

@margagomis: 2021-03-27 19:19:06
I think maybe it's not necessary because when the document is created there's the formreceived field. Thanks anyway!


Online docs 'show if'

@jimdunne: 2021-03-27 17:00:47
I am trying to add a couple of fields that show if the previous answer is yes - e.g. do you have any allergies - if answered yes, a text box should show to allow details to be added. I have set the 'show if' field to 'allergies=yes' but this does not work. Am I trying to use this field to do something its not meant for, or am I doing it wrong?

@adoptamutt: 2021-03-27 18:38:43
Try =Yes

@jimdunne: 2021-03-28 13:05:00
That worked - thanks!


Document template size issue as PDF

@jzo22: 2021-03-25 19:48:27
When I save a document as PDF, it's squished down (top/left) as though the paper size is smaller. Not sure if there is a setting somewhere that changed or what is happening. Anyone have tips?

@robinrt: 2021-03-26 10:19:08
It's the upgraded version of wkhtmltopdf. You can make it behave the way it used to by going to Settings->Options->Documents and setting PDF zoom to 125%


Online form VS additional field linked to animal found -detail not working

@scordeau: 2021-03-22 02:46:17
Hi, I'm trying to link a field on our online form, to a additional field linked to animal found -details and it's not working. The additional field works fine when manualy creating animal found. Can you help please ? Thank you.

@robinrt: 2021-03-22 09:58:05
The online forms only currently support additional fields for animals and people. They could easily be extended to support lost/found and waiting list too, so I'll put this on our development list.

@scordeau: 2021-03-22 15:01:02
Robinrt thanks for your response. I want to implement an online form to link a people AND an animal at the same time, that's why I'm passing by found animal. Because when I have a online form with both datas (people and animals), I can add an animal, and add a contact, but both are not linked. The contact that came with the animal, we want to know who has "rescued" this animal. Maybe you can tell me another way to add an animal WITH the contact information that appears into our online form ? Have a great day.

@robinrt: 2021-03-22 16:12:01
Hi, I guess this is for a surrender? The expected way is to create a waiting list record from the form and then turn that waiting list into an animal when the animal comes to the shelter. If you have a "reserveanimalname" field in a form (of type adoptable animal) as well as person data, you can create a reservation between the person in the form and the animal. This is more useful for adoption applications.


Hide information

@sodr: 2021-03-21 03:42:16
Is there anyway that you can hide foster carers personal information so other carers cant access it

@robinrt: 2021-03-21 09:04:16
1. Give your fosterers the "Volunteer" flag 2. Make sure that the role you used to grant permissions to your foster carers does not have the permission to view volunteer records. 3. Enable location filters under Settings->Options->Display 4. Give your foster carer user accounts the "My Fosters" location filter so the only animals they are allowed to see are ones in their care.

@sodr: 2021-03-22 03:51:06
thanks .wiil give it a try


Report/Documents Question

@souldog: 2021-03-18 23:27:16
Hi, Our organization is having some struggles with reports as we are all quite inept with SQL. Until Now, we have been able to successfully use the reports and documents that already exist in Shelter Manager. We are trying to provide our fosters with a printout of information on the animals they will be fostering. Ideally we would like to provide them with a printout containing the name, description of the animal(s) (color, breed, sex), vaccination due dates, and medical treatments due all on one sheet of paper. Any help or ideas on how to proceed would be greatly appreciated! Thank you!!

@margagomis: 2021-03-20 06:41:09
Hi, there's a template called "animal_information.html" with all the details that you require. I hope it helps!

@adoptamutt: 2021-03-21 16:22:01
Have you joined the ASM Rocks! Facebook group? We share documents, reports, best practices, etc. Might be helpful to you.


Alerts

@tristana: 2021-03-18 06:05:51
Is their a way to set the alerts local. We have 27 shelters and it will be more effective ( I suspect) if each shelter only see their own animals alerts.

@robinrt: 2021-03-18 10:34:05
Hi, sorry, it isn't at the moment but I will raise this for development.


Media tabs not working

@do724172: 2021-03-17 18:18:44
No one at our org can access the media tabs. When we click, it only loads the top menu buttons and the rest of the page is blank. Any help or input would be appreciated.

@audraf: 2021-03-17 18:31:22
Same problem here

@do724172: 2021-03-17 18:32:51
Oh no. Relieved it's not a mistake on our end.

@homewardcat: 2021-03-17 18:37:15
Same here.

@crazycatladyahs: 2021-03-17 18:58:59
Same. We have been contacting them since 9am Eastern. And noone has responded. Called and emailed several times. We rely on our media to promote our dogs. Keep records of intakes. Make composites to send to rescues. Super frustrating.

@audraf: 2021-03-17 19:28:33
It seems to be working now.


Understanding data behind the report - Annual Figures (by type)

@ketalabama: 2021-03-15 07:03:38
In looking at the construction of this report it relies off of the table animalfiguresannual. I cannot find any information on how the data in this table is derived. I can't find a subtable or explanation. The figures that it is generating don't seem to always match the pure data if looking at ins and outs. Because of that it is hard to tell what might be a total overall (like for intakes) vs a subtotal of intakes (like shelter births). Is there any where I can find how this table is populated and/or a detailed explanation of the above report? Thanks

@robinrt: 2021-03-15 10:26:26
It's the same headings as In/Out. Discrepancies can usually be explained by the fact that it is generated as part of the overnight batch, so if you go back and edit data in a previous month, you have to update the table. You can do this by going to Settings->Trigger Batch Processes->Recalculate annual animal figures and selecting the year to calculate for.


Import custom flag

@mketcham: 2021-03-14 20:44:26
Is it possible to import custom flags through csv, or only the builtins? I created a custom flag "Ear Tip" to attach to cats that have ear tips, including our TNR cats. When I try to import it in a csv, the system doesn't recognize it.

@robinrt: 2021-03-15 10:25:08
Yes, as long as you created your flag under Settings->Lookup Data first, you can specify it in the ANIMALFLAGS or PERSONFLAGS column depending on whether the flag is for an animal or person.

@mketcham: 2021-03-18 00:36:30
This doesn't seem to be working for me. Here is a snapshot of cats that were given the flags two different ways. The 20B-TNR043 and 20B-TNR044 were manually flagged with the "Ear tip" flag. 20B-TNR045 and 046 is what happened when I tried to import the flag under ANIMALFLAGS. [Screenshot 2021-03-17 183547](//muut.com/u/sheltermanager/s1/:sheltermanager:8D1L:screenshot20210317183547.png.jpg)


Adding pup to existing litter

@sarahless: 2021-03-09 13:37:32
I seemed to have missed a pup when I created a litter and can't find how to add him in. If I check the littermates, I can't add there and when I click the litter name I don't see an option. Do I need to delete it and create it again?

@tristana: 2021-03-13 13:53:22
If you have the litter number from one of the litter mates you can add it directly in the pup: [Add animal to litter](//muut.com/u/sheltermanager/s2/:sheltermanager:Cat7:addanimaltolitter.png.jpg)


Litter

@tristana: 2021-03-08 07:09:26
What is meant by expiration date on litter

@tristana: 2021-03-08 07:46:49
Why Im asking is because earlier version litters was removed after 6 month. This has luckily been change i ASM3. But why is the field still availible? Can it be useful for something?

@robinrt: 2021-03-08 09:29:19
It's the date that the litter is no longer active. It occurs either after all the animals in it have left the shelter, or they are older than 6 months. When the expiry date is reacher, that litter stops being counted in the "number of litters" row of the monthly animal figures reports.

@tristana: 2021-03-08 10:41:06
I thought that was change. If illness or other important medical/ health issue with one from the litter is reported we should have the opportunity to contact the other owners. It would also be helpful to see the mother of the litter on her details, instead of writing it on the right side : [Skjermbilde 2021-03-08 kl](//muut.com/u/sheltermanager/s3/:sheltermanager:PgUo:skjermbilde20210308kl.11.34.15.png.jpg)


Adding a new animal from lost animal record

@jgochsner: 2021-03-07 16:49:42
Can we easily convert a lost animal to a shelter animal? Or do we have to add a new animal and manually enter all information from the lost animal record?

@robinrt: 2021-03-08 09:31:17
I'm afraid so, there isn't a path for that converting lost animals, only found animals.

@jgochsner: 2021-03-11 20:32:22
Thank you


Next test due date

@do724172: 2021-03-05 16:48:11
Would it be possible for a "schedule again" or "test again" date option when we administer a test to be added in the future? Similar to how we can set vaccines to auto schedule in the future.

@robinrt: 2021-03-08 09:31:39
Yes, this is on the development list to add.


44u 20201112+ SQL error?

@titnono: 2021-02-28 18:52:16
Hello, I'm trying to update my ASM 44u server, but the latest version that works is November 12, 2020 (https://github.com/bobintetley/asm3/tree/7dd62c9af86696f59544c6d05bdfafef0fec94dd). If I try to use a newer version, for example that of November 16, 2020 (https://github.com/bobintetley/asm3/tree/105abf8e15d4655a3b37d0a6a20faa98cd65d6f0) or newer, I get an "internal server error" after the authentication screen. From the logs, it looks like an SQL query error, but I cannot find where is the problem. Any idea? OS : Ubuntu 18.04.5 LTS MySQL : 5.7.33-0ubuntu0.18.04.1 Apache : 2.4.29 Python3 : 3.6.9 /var/log/apache2/error.log [Sun Feb 28 18:17:54.943445 2021] [wsgi:error] [pid 1877:tid 140032450955008] [client 10.0.0.3:56313] _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY MovementDate DESC, animal.ID LIMIT 10) UNION ALL (SELECT 'animal_movements' A' at line 1"), referer: http://myasmserver:5000/asm/login?target=main /var/log/asm3.lo g Feb 28 18:27:30 shelter CRITICAL ASM Database.query (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY MovementDate DESC, animal.ID LIMIT 10) UNION ALL (SELECT 'animal_movements' A' at line 1") File "/usr/lib/sheltermanager3/asm3/dbms/base.py", line 561, in query#012 s.execute(sql, params) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 250, in execute#012 self.errorhandler(self, exc, value) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler#012 raise errorvalue File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 247, in execute#012 res = self._query(query) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 411, in _query#012 rowcount = self._do_query(q) File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py", line 374, in _do_query#012 db.query(q) File "/usr/lib/python3/dist-packages/MySQLdb/connections.py", line 292, in query#012 _mysql.connection Feb 28 18:27:30 shelter CRITICAL ASM Database.query failing sql: SELECT * FROM ((SELECT 'animal' AS LinkTarget, 'ENTERED' AS Category, DateBroughtIn AS EventDate, ID, ShelterCode AS Text1, AnimalName AS Text2, '' AS Text3, LastChangedBy FROM animal WHERE NonShelterAnimal = 0 ORDER BY DateBroughtIn DESC, ID LIMIT 10) UNION ALL (SELECT 'animal' AS LinkTarget, 'MICROCHIP' AS Category, IdentichipDate AS EventDate, ID, ShelterCode AS Text1, AnimalName AS Text2, '' AS Text3, LastChangedBy FROM animal WHERE NonShelterAnimal = 0 AND IdentichipDate Is Not Null ORDER BY IdentichipDate DESC, ID LIMIT 10) UNION ALL (SELECT 'animal' AS LinkTarget, 'NEUTERED' AS Category, NeuteredDate AS EventDate, ID, ShelterCode AS Text1, AnimalName AS Text2, '' AS Text3, LastChangedBy FROM animal WHERE NonShelterAnimal = 0 AND NeuteredDate Is Not Null ORDER BY NeuteredDate DESC, ID LIMIT 10) UNION ALL (SELECT 'animal_movements' AS LinkTarget, 'RESERVED' AS Category, ReservationDate AS EventDate, animal.ID, ShelterCode AS Text1, AnimalName AS Text2, o

@titnono: 2021-03-01 14:48:46
Hello, I continued to work on my problem. I confirm that this one appeared with the feature "11/16/20 Include trial adoptions in timeline # 764" Specifically, in the animal.py file, the problem occurs in using the "WHERE [...] AND IsTrial =" conditions. The problem must comes from the structure of my database. In the configuration table, DatabaseVersion is 34112, whereas it should be 34408 with the November 11 version. However, there is no problem with my daily cron job. I tried to do "python3 cron.py maint_db_update", but nothing happens: the version remains the same, and nothing appears in the logs. Is it possible to export my data and re-import them into an up-to-date structure? I tried to do the following sequence: 1) python3 cron.py maint_db_dump> myfile 2) python3 cron.py maint_db_reinstall 3) ASM-> Parameters-> SQL-> Run Script (myfile) Unfortunately, after 15 minutes of waiting, I stopped, I do not see any data coming back to the database. Should I do it differently? Thank you!

@robinrt: 2021-03-04 12:17:20
I don't think this is you, the trial queries appear to be broken. I don't know why this didn't produce errors for us. Thanks for letting us know - I've committed a fix to the repository now.

@titnono: 2021-03-04 13:23:26
Hello, I just tried to update to the November 16 version, but patching the SQL queries, and the error went away. I will make an attempt to update to a newer version on another day. Thanks for the help.

@titnono: 2021-03-07 15:10:18
Hello, FYI, I've updated to the latest version (commit 3beb68a) today, and everything seems to run fine. Thank you!


Separating files from the mysql database

@ampien: 2021-02-28 18:08:50
I know with a new installation you can make the decision to edit your asm3.conf file and change this line dbfs_store = database to dbfs_store = file I have now run sheltermanager for the better part of 8 years and my database had grown to 2.1GB. I wish I had made the decision, back when I started, to separate the files and DB so that my remote backups does not take so long. Is there really no way to change my mind other than starting over? Regards Ampie (South Africa)

@robinrt: 2021-03-04 12:11:16
You can move them any time. First, set the dbfs store and filestorage folder values in asm3.conf: ``` dbfs_store = file dbfs_filestorage_folder = /home/ampien/asm_files ``` Then, use the cron script to switch storage mechanisms: ``` python3 cron.py maint_switch_dbfs_storage ``` It will take a while, but if you watch the logs you can see each file being moved. When it completes, you will no longer have files in the database and it should be a lot smaller. Obviously, take backups before you start this process in case of any errors.

@ampien: 2021-03-17 14:07:32
Many thanks Robin. This is a great tip.


Problems with Home Again Microchip Registration

@catniptam: 2021-02-25 22:40:02
After receiving one too many messages from an adopter that their microchip was not registered, I spent several hours doing an audit against a report generated for us by Home Again. One thing I think I pinned down is that registrations appear to have failed on the Home Again side when we had a Trial Adoption and a date was left in the "Trial ends on" field. There would be a publishing history for the chip that was not rejected. However, the chip was not registering on the Home Again side. Has anyb

@robinrt: 2021-02-28 09:03:12
Did HomeAgain return an error during the registration of that chip? You should be able to see in the publishing logs for the date of registration under Publishing->View Publishing Logs

@catniptam: 2021-02-28 14:15:33
No errors returned. I check the publishing logs regularly. From our end, it looks like the chip registered. We had no idea there were problems until we received more than one inquiry from an adopter.


Still stuck on ASM3_40

@ampien: 2021-02-24 20:45:36
I have to date been unable to successfully upgrade my ASM3_40 installation [Ubuntu 18LTS apache2-wsgi] to a later, let alone the latest version. Everything seemingly goes well during the upgrade, but when I try to log in after, it accepts the user creds and then throws me back to the login screen. I have even started a fresh install, and the same thing happens. I even suspected password complexity and made sure its really complex without success. When I then roll back to ASM3_40, everything works fine. I have tried running it as "<path>/python code.py 5000" also, but the same thing happens. I'm really stuck and I'm missing out on all the new features. Any ideas, please?

@robinrt: 2021-02-28 09:00:05
Login problems are usually an issue with session management. If you're using WSGI you'll need memcache installed. There will be an error message either at the console or in the apache error logs that would be helpful in identifying your problem.

@ampien: 2021-02-28 13:52:10
Thanks. I deleted the line containing 127.0.0.1:xxxx from my asm3.conf and its working now - managed to upgrade to 42 using code.py redirected with nginx.

@ampien: 2021-02-28 18:01:03
... # The host/port that memcached is running on if it is to be used. # If memcache is not available, an in memory dictionary will be # used instead. #memcached_server = 127.0.0.1:11211 - If I comment out this line it works perfectly.


Custom reports on treatments

@do724172: 2021-02-24 15:56:25
I'm trying to make a report that will show the following columns: Animal Name, Species, Shelter Location, Treatment Name, Dosage, Treatment Number, Total Treatments, Comments/Regimen Comments We also want to sort by location, treatment number and total treatments so the techs can start top to bottom instead of jumping around. Also, we can't find any treatment fields in the query builder. Are we looking in the wrong place?

@robinrt: 2021-02-28 09:02:09
No, the query builder hasn't had options for medical reports added to it yet. The report "Medical treatments between two dates" has most of those fields and you could modify it?


crop a photo in SM

@karent: 2021-02-22 16:20:45
I would like to utilize square images on our website, but the photos need to be manually resized. Is there a way to crop the photo once it has been uploaded to SM? Or does this need to be done prioir to being uploaded?

@robinrt: 2021-02-22 18:02:20
Sorry, there isn't a way to do this in SM and it currently has to be done prior to upload. It's definitely on our list for the future though.


Ability to edit Date Brought In

@iming: 2021-02-18 11:57:50
Is there anyway we can edit the Date Brought In for an animal? To speed up the process, we "Add an animal" ahead of time in preparation for the arrival. Unfortunately, sometime the arrival date gets postponed due to reason beyond our control (i.e. sudden COVID-19 lockdown, etc.). So it will be great that we can change the date, when required.

@robinrt: 2021-02-18 17:21:31
It's the option "Settings->Options->Animal Codes->Once assigned, codes cannot be changed" that causes this. If your code is based on the date brought in, it locks the date brought in field to prevent it changing the code. If you turn that option off, you will be able to change the date.


Error 500

@lynnep: 2021-02-14 14:45:49
Trying to create a new document for a person, this error is displayed. Happens on all documents/people now.

@robinrt: 2021-02-14 15:35:04
Hi, this should be fixed now. Many apologies.

@lynnep: 2021-02-14 16:35:45
No, its not fixed, still getting the error. I have logged out and back on, but Error 500. Can't create document or send emails

@robinrt: 2021-02-14 16:55:20
Sorry, I fixed the first instance but there was a second. It's definitely fixed now.

@lynnep: 2021-02-14 16:58:31
all ok now thanks


Adding a box to the test results

@josephpjoseph1: 2021-02-12 15:22:20
We've created various test names under the Test tabs for the most common tests we administer to our pets. However, once in a while, we do a test , say, thyroid, that we also want to record in SM. We created an Additional Field under New Test called Other. However, the current data entry options are limited to Required and Performed dates, Result (we created Normal and Abnormal), and comments we enter in the Comments box. We would like to add a data entry box that is searchable under Type where we could type in the test performed, e.g., thyroid. We have something similar in Medical where under New Regimen there is an Other profile with a Name box below that we use to record the regimen. How do I create a similar entry box in the Test tab for New Test?

@robinrt: 2021-02-12 15:29:09
It's the "Test Types" list under Settings->Lookup Data. You can also add to the "Test Results" list on that same screen. Additional fields cannot be added to the test tab. Did you add one to Health and Identification maybe?

@josephpjoseph1: 2021-02-15 16:13:47
Thanks. We created a new Test Type (Other) and new Test Results (Normal and Abnormal). I guess because we cannot add another field to Test we'll go with what we just created. Thanks. Joe


Is there a Physical exam document template out there? would anyone want to share

@mpost: 2021-02-07 22:59:35
I'm looking to add a simple template that our staff can use as a checklist for when they do intakes, rather than taking the time to design my owe, I was hoping someone may already have one to share. Thanks, Mike


Update PERSONFLAGS with Data Import

@mhs_jeff: 2021-02-07 15:20:53
Hey All! We are trying to clean up some of the inputs in our database including the PERSONFLAGS. I was hoping that we could mass clean them up in excel and then use the CSV import to update all of the PERSONFLAGS. While this seems to work for adding flags, it seems to leave all the old incorrect ones. For example if we had someone flagged with Volunteer_Applicant and I have the CSV PERSONFLAG input only be Volunteer it seems to leave the Volunteer_Applicant and add the Volunteer flag, any ideas would be really appreciated! Thanks Jeff

@robinrt: 2021-02-07 17:42:44
Sorry, import will only ever merge flags from your file with the existing ones. You can't use it to replace the flags of existing people.


WordPress integration issue

@iming: 2021-02-07 08:40:26
I'm having trouble integrating to my WordPress website. I have followed the help document and copied the Javascript code snipett as shown to the webpage required (including replacing ACCOUNT with my account number). However, I only get 3 dropdown boxes, namely "Any species", "Any age" and "Any sex". There is just a blank space underneath instead of showing animals available for adoption. I have one "dummy" animal record that shows "Available for adoption". Your help is much appreciated.

@robinrt: 2021-02-07 09:18:42
Hi, we're going to have to see the website to figure out what's going on. Email us at help@sheltermanager.com with the website URL and your account number so we can take a look.

@annauk1: 2021-03-19 17:51:53
I want to integrate this with a squarespace website - can anyone help me get started?


Adding Additional Field to Report

@easel-beth: 2021-02-04 00:13:26
I've been trying to add an additional field I created to track Cat Colonies to a report and can't get the SQL right. Any guidance would be appreciated. SELECT ShelterCode, AnimalName, NeuteredDate, NeuteredByVetID, AnimalTypeID, AnimalComments, x.Sex, af.Colonies FROM animal INNER JOIN lksex x ON x.ID = animal.Sex AND INNER JOIN additionalfield aff ON aff.ID = af.AdditionalFieldID WHERE Neutered = 1 AND NeuteredDate BETWEEN '$ASK DATE Enter from date$' AND '$ASK DATE Enter to date$' ORDER BY NeuteredDate

@adoptamutt: 2021-02-06 15:15:07
--- SELECT ShelterCode, AnimalName, NeuteredDate, NeuteredByVetID, AnimalTypeID, AnimalComments, x.Sex, (SELECT value from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = animal.ID AND additionalfield.fieldname = 'Colonies') AS MyColonies FROM animal INNER JOIN lksex x ON x.ID = animal.Sex AND WHERE Neutered = 1 AND NeuteredDate BETWEEN ‘$ASK DATE Enter from date$’ AND ‘$ASK DATE Enter to date$’ ORDER BY NeuteredDate ---

@easel-beth: 2021-02-08 22:51:50
Thank you for our help, but it still will not work, says there is a syntax error at where clause. Any thoughts on that? I'm sorry we don't have anyone who understands SQL well. I appreciate any help.

@robinrt: 2021-02-12 15:30:33
The query looks correct - if you include the full error and the query you are using it will give more information. It's probably that in copying and pasting, the apostrophes around $ASK DATE X$ have become smart quotes.

@easel-beth: 2021-02-16 03:10:24
This is the error I'm getting - syntax error at or near "WHERE" LINE 5: WHERE Neutered = 1 ^ I've tried deleted and added the quotes back and still getting the message.

@robinrt: 2021-02-17 10:26:35
There's an extra AND on the end of the line that starts with INNER JOIN - delete it so that line is just INNER JOIN lksex x ON x.ID = animal.Sex

@easel-beth: 2021-02-22 21:59:43
That fixed it. Thank you for your help


Print option for Calendar List View?

@ketalabama: 2021-02-03 13:54:58
I'm looking to see if there is an option I'm overlooking to print the list view of the Calendar? The list view is helpful as it allows you to easily see all animals on any given day and is not limited to the cell space on the actual calendar. If I use the browser Print option it is printing only what is immediately viewable on the page and does not include other records which may be out of view in the frame and accessed using the scroll bar. Thanks

@galia: 2021-02-06 18:10:12
Not as pretty, but if you select the info in the list then drag the mouse down down then right click the mouse and print from the menu ?

@ketalabama: 2021-02-19 11:13:48
Hey. Yeh that at least will get me the whole list. Thanks for the suggestion


Reporting on additional fields

@do724172: 2021-02-02 19:57:51
We've created an additional field that is multi-lookup but now we are wondering how to report on it. If we have 3 options (e.g. Safety Net|Grace Smith|Humane Law), how can we pull a report on only ones with Grace Smith? I see the field at the bottom of the report options but nothing that says FieldIsGraceSmith or anything. Thank You!

@adoptamutt: 2021-02-06 15:22:45
Does this work: --- SELECT sheltercode FROM animal WHERE (SELECT value from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = animal.ID AND additionalfield.fieldname = 'testfield') = '$ASK STRING Test Field Value$' ---


Vaccinations due vs. expiring in reports.

@homewardcat: 2021-02-01 20:14:28
I can get a report of vaccinations expiring in the next two weeks, and I can get a report of medical and tests due in the next two weeks. Can you tell me how to get all three in one report? When we enter vaccinations, we enter the date the next vaccine is due in the "Expires" box. It seems like that should be the due date, but it doesn't come up on "Medical, Vaccinations, and Tests Due" reports.

@robinrt: 2021-02-02 10:41:18
Hi, the due date is the "required" date. A vacc contains 3 dates, the date it was due to be given, the date it was actually given and the date it "wears off" and needs to be readministered. A due vacc is one that has a required date and no given date. You should start a new record for scheduled vaccines instead of using the expiry date. They will appear on the report you mentioned then.


Removing an email from payment renewal

@ccnicosia: 2021-01-29 17:23:56
I have to renew Shelter Manager but there’s an ex-employees email attached to the payment page & I CANNOT find an option to edit and replace with a current email! HELP PLEASE!

@robinrt: 2021-01-29 19:20:01
Hi, if you have the master password for the account, you can do it at https://sheltermanager.com/my/ If you don't, get in touch with us at help@sheltermanager.com with your account number to arrange an account transfer.


Newbie here: Can anyone help me to create a report template?

@beckyjm: 2021-01-27 18:24:57
Hi, I really need to get shelter manager to automatically generate a report with this set information and I don't know where to start! [Capture](//muut.com/u/sheltermanager/s2/:sheltermanager:0XVO:capture.jpg.jpg) Thanks

@robinrt: 2021-01-28 13:40:57
Have you had a look at the query builder tool? There's a video on using it here: https://youtube.com/watch?v=6ryMDZbIXA0


Expand Log Info

@dd2440: 2021-01-27 17:30:10
How do you expand the log field so you do not have to click on it to read the whole log?

@robinrt: 2021-01-28 13:39:50
There's an option under Settings->Options->Display->Show complete comments in table views


Creating a report for a lookup we added

@bmay1439: 2021-01-27 16:11:40
We added a lookup of Intake County because we need to track this info but I can't figure out how to create a report to find the info needed.

@robinrt: 2021-01-28 13:39:11
Which lookup did you add it to?


Dog License

@bkrodle: 2021-01-27 14:46:44
I've created a Dangerous Dog License so that we can issue and track dogs that we declare to be dangerous. I am trying to create a form that we can print and give to the owner with the dog's unique license number. I've used the code <<LicenseNumber>> in the form, but it keep returning a blank instead of inserting the number we have created on the license screen. Any ideas? I've searched through other documents and the wordkey appendix, but I can't find anything different.

@bkrodle: 2021-01-27 15:24:16
Ok, the license populates correctly under the Animal Control Tab, Licensing, but will not populate if we try to print it under the animal tab, or the owner tab.

@robinrt: 2021-01-28 13:38:34
That's the expected behaviour - you can only get at license tags when generating documents from the licensing screen.

@bkrodle: 2021-01-28 14:13:02
Thanks! Even though we've had the program for two years I'm still figuring out a few things.


Stock management

@lica2440: 2021-01-23 19:02:01
Is there a way to set an alert when you have so much left of a certain stock item? I read the section of the manual with no success in finding a way to set that. If not, will this be an option in the future?

@robinrt: 2021-01-24 10:03:24
There isn't, but that's a great suggestion for a feature we could add in future. I'll put that on our development list.


Formatting comment field in Foster Book view

@saveabunny: 2021-01-19 23:24:31
Is there a way to format the comment field in the Foster Book view so that information can appear stacked, such as a list? Currently it just appears as a paragraph, with one sentence/comment after another.

@robinrt: 2021-01-24 10:01:35
Sorry, there isn't.


Template animals and Holds

@lica2440: 2021-01-17 00:00:26
I am trying to make a template animal that automatically puts on a five day stray hold, but when i check the Non-Shelter box it doesnt show the hold box anymore. is there a way to set this?

@adoptamutt: 2021-01-17 14:46:39
Have you tried selecting the Hold box before selecting the non-shelter flag?

@lica2440: 2021-01-23 00:46:45
Yes i tried that, and it makes it so the hold box is checked but no date


Shelter Report

@mmover: 2021-01-16 22:22:19
Our kennel manager runs a slightly modified version of the In/Out by age at event report. There aren't any issues with it except one strange oddity. We had a cat that escaped it's foster home, in movements under the cat it was marked as escape. The cat was later found. It originally came in in November but escaped, was found, and adopted in December so it's understandable that it wouldn't show up under the normal 'In' heading. But in the report it is listed under the 'Animals Returned from Other' category (which makes sense because it is returning from having escaped) with the entry category as being ' Return-Surrender' despite the category being 'Stray-Brought to Shelter' when you actually navigate to the cat's record. I assume it's due to the escaped movement but when I click on the movement there's no option to change the entry category. My questions are: 1. Why did it change the entry category but only in the report instead of pulling the original entry category? 2. How did it determine which entry category to pick when it changed it? 3. Is there a way I can modi fy it to have it accurately reflect the situation by telling asm when an animal returns from being escaped to choose a different category? It's not the biggest of deals if there is no way to change it as this is the first time it's happened since I started working here. But I would like the report to accurately reflect information so that should it happen again we're not questioning why it showed up the way it did. Either way I'm more interested in solving the mystery of how it determined to show a different entry category. Thank you!

@robinrt: 2021-01-17 14:48:20
The return reason is hidden for movements that aren't adoption or reclaim. If you edit the escaped movement and change the movement type to adoption, you could set the return reason, then change it back to escaped again.


Additional Fields in Vaccination Screen

@mcxg46: 2021-01-16 13:04:41
Apologies if this has been asked elsewhere... Is it possible to add fields to the vaccination screen? I was hoping to add an additional field (quanitity) to the vaccination screen. But it doesn't appear as an option in the settings/additional fields/new type. Am I missing something?

@robinrt: 2021-01-16 14:11:50
It isn't possible. It is something we do plan to do, but it's a complicated feature and will not be done in the current release (due end of Jan).

@mcxg46: 2021-01-16 15:18:21
OK, no problem - thanks for replying so quickly.


Publishing of "Description"

@jaaustin: 2021-01-12 20:07:31
When publishing from ASM, our "description" just comes out as one run-on sentence, even if we have spaces in ASM. What can I do to correct that?

@robinrt: 2021-01-16 14:12:19
Use $$DescriptionBR$$ in your template instead. It changes the breaks to br tags.


Publishing Template

@jaaustin: 2021-01-12 20:04:41
I only have one template available and it doesn't include things I need, like multiple pictures. How do I get any new options?

@robinrt: 2021-01-16 14:12:44
Hi, I think you sent this an email and I reinstalled the defaults for you already.


Add flag for new animals

@lica2440: 2021-01-12 01:39:07
I created a flag for an animal not being added online, and i want to set it to where that flag is automatically set when i create a new animal as it is for the "not for adoption" flag. i have read through the manual and tried to create the "TemplateType" animal and it did not work.

@robinrt: 2021-01-12 09:52:10
How is the animal being added? You should be able to use TemplateType with the type field matching as you described, or there is an option under Settings->Options->Defaults->Mark new animals as not for adoption

@lica2440: 2021-01-12 13:56:53
I created an animal with the name templatetype as described in the manual and it would not work. i am trying to set it so that one of our custom flags is automatically set when i add any new animal to the system

@robinrt: 2021-01-12 14:09:29
Your template animal must have the name TemplateType (exact case), it must be flagged as non-shelter and the Type field must contain the same type as new animals records you wish it to apply to.

@lica2440: 2021-01-12 15:22:50
I think it is working now, thank you!


Medical : Foster families

@galia: 2021-01-12 00:20:08
I saw the update to the emailing system so that weekly emails only go out to foster families that have a current medical requirement, which I have implemented as a test, but is there a way to see what emails have been automatically sent? I found a report on sheltermanager.com but when I run it for the date period I get no results even though I know there are a number of fosterers that should have received the email (my self included as I did get a mail this morning) Thx

@robinrt: 2021-01-12 09:50:22
There isn't I'm afraid as that weekly fosterer email is not being audited. It should be, but it isn't. I'll put this on our development list to fix.

@galia: 2021-01-12 10:43:47
Thanks for the info, A suggestion someone made to me is to be able to Bcc or Bci a copy to an admin so we can see what has actually gone out

@galia: 2021-01-28 11:09:35
all has been working well as far as I can tell (it is not possible to see who has been sent a mail) until this week 🙁 a number of mails have come back to my forwarding account 'rejected' because the email address does not exsist, I have checked these addresses and they are correct and working through our normal email channels, the test dog I have in the system was reported to me as normal, so a bit of a bug perhaps, I will see what happens next week


Foster movements

@audraf: 2021-01-08 23:36:34
For the Movement Type 'FOSTERS', is there a way to activate "Statuses" for it -similar to Reservation Statuses. These would be customization in Lookup Data as well?


Scanning a signature into a field

@josephpjoseph1: 2021-01-08 15:17:55
I'd like to be able to scan a signature into a SM printout. I created a new field called Signature, but how do I load in a scan of a signature?

@robinrt: 2021-01-08 17:45:26
There are two ways to insert signatures into documents and there's info on doing that here: https://sheltermanager.com/repo/asm3_help/documents.html#electronic-signatures You can also add signature fields to online forms. If you have your signature as an image, you can easily add images to your document templates. See this video https://youtube.com/watch?v=T-Tfnxc_PTU

@josephpjoseph1: 2021-01-11 17:19:39
Perfect - thanks very much. I should have thought of it as inserting an image. I use the mobile interface for adoption signatures.


Code help

@sarahless: 2021-01-07 23:15:44
Trying to figure out what code would I add to the "Medical, Vaccination, and Tests due between two dates" to get the current fosters first and last name, email, phone, and home address?

@robinrt: 2021-01-08 08:15:58
That report is a set of 3 queries UNIONed together. You need to do two joins to get the fosterer info, one to the adoption table for the movement, then to the owner table for the person. It will need to be repeated in each of the queries. You also need to be careful as in a UNION every query must return the same number of columns in the same order. ``` LEFT OUTER JOIN adoption m ON m.ID = a.ActiveMovementID LEFT OUTER JOIN owner o ON o.ID = m.OwnerID ``` That will make the person fields available for access in your SELECT then, so you can choose OwnerForeNames, OwnerSurname, OwnerAddress, EmailAddress, HomeTelephone etc.


animal emblem?

@lialang: 2021-01-05 16:20:32
I would like to be able to have an animal emblem to show if the cat has been combo tested or not. There is not a check box to choose like there is for Rabies, unfixed, etc, and when I try to put my own emblem, there are no flags to choose from.

@robinrt: 2021-01-05 16:39:28
You can add your own flag - Settings->Lookup Data->Animal Flags. The system already has built in emblems for cats that are FIV+ or FLV+

@lialang: 2021-01-05 16:44:45
I know that there are flags for +, but I want a flag for not tested, like not vaccinated for Rabies. If I add an animal flag, where does it put it that I can check it?

@lialang: 2021-01-05 16:45:35
I was hoping to be able to go off the test tab instead of having to create a new flag.

@robinrt: 2021-01-05 17:07:07
At the moment, custom emblems can only be tied to the presence or absence of flags. The flags dropdown can be found on the right side of the animal details screen. I wonder if others might find this useful though, or something like it (perhaps shelter view modes or search filters).


Sites

@audraf: 2021-01-04 17:28:32
I see there is a new option for "sites" which is great because we have 2 locations. Can there be a separate calendar for each site or is there a way to differentiate animals from different sites?


Additional field sub query

@lynnep: 2021-01-03 16:44:23
I have an additional field "SponsoredBy" which has person type and linked to Animal details. I can retrieve the sponsor id, (SELECT ad.VALUE FROM additional ad INNER JOIN additionalfield af ON af.ID = ad.AdditionalFieldID WHERE ad.LinkID = a.ID AND af.FieldName = 'SponsoredBy') as SponsorID .... from animal a but when I try to link the SponsorId to the owner table to return the owner name, I just get errors. Help please as to how I should do this.


Exclude from Publishing...

@tomsey: 2021-01-02 19:54:42
For the life of me, I can't figure out how to exclude an animal from being published even though the animal meets all of the Publishing criteria... Is there a "Do Not Publish" box in the animal's profile? 🤔

@robinrt: 2021-01-03 08:58:16
Give it the "Not available for adoption" flag from the flags dropdown.


Pop-Up Window instead of New Tab When Clicking on a Pet to view on website

@kittenqueenlynn: 2020-12-31 06:17:51
Hi all! I'm currently revamping the website for the rescue I volunteer for. I successfully integrated SM to my site so it shows in real time when a pet is added / edited / removed, etc. HOWEVER! When you click on the pet's photo on the site, it opens the animal in a new tab instead of a pop-up window. Does anyone know where I go to edit that, and if so, what the code is to switch it from open in new tab to a pop-up window? Thanks in advance! ♥Kitten Queen Lynn

@robinrt: 2020-12-31 08:22:50
Hi, sure, that info is here: https://sheltermanager.com/repo/asm3_help/service.html#popup-iframe


Bulk attach a media file

@rspcacornwall: 2020-12-28 15:16:26
Hi - I am familiar with bulk log entries for multiple animals. Is there any way to bulk attach a media file (photo or PDF document) to multiple animals . Example - a group of 10 animals from one owner, with a document that pertains to the care of all 10. TIA

@robinrt: 2020-12-28 15:26:51
Sorry, I'm afraid there isn't. There is something on our development list to look at being able to link the same piece of media to multiple records in future though as this would be handy for things like adoption contracts that belong to both person and animal.


Add new animal from the waiting list

@iming: 2020-12-19 22:27:23
Dear all, I'm new to ASM and still learning various functions of this software. So forgive me on asking silly questions. Our small rescue group has more than 10 dogs waiting to come in. To streamline our workflow, I would like details to be entered to the waiting list by other individuals/organisations who currently has the animal. We can then use the waiting list to priortise moving in to us. I'm wondering whether it is possible to move-in a new animal straight from the waiting list ** without ** having to re-key in relevant details again. It just need a button like "Accepting / Move In (or similar)" and it will transfer details to the "Add a new animal" screen. We can then populate more details as required on that screen.

@robinrt: 2020-12-20 09:22:17
There's a "Create Animal" button on the toolbar when viewing a waiting list record. You can also create an online form to have other organisations give you info for animals, and use it to create a waiting list record from the incoming forms screen. See https://sheltermanager.com/repo/asm3_help/onlineform.html

@rspcacornwall: 2020-12-27 17:02:50
Hello - we use a general surrender form online on our website which other organisations can also use - it is cheaper to use online forms through ASM than on you web page. Here's how ours looks. https://rspcacornwall.org.uk/surrendering-an-animal/ . Just be careful that someone is checkingthe waiting list entry when they create it, and ensuring there isn't already a person on the database that you could just attach it to. We also found that including space for owners to attach a picture gets you some lovely photos of animals in their existing home which can be used for profile pics for ASM. Regards, Ian

@robinrt: 2020-12-27 17:07:54
Hi Ian, when you do Create->Waiting List, or Create->Person, the system will check that the person doesn't exist for you. If the person does exist, it will link the form to the existing person instead of creating a new one! It does this by looking at the email address or mobile phone number for a match, then the combination of first name, last name and first word of address.

@iming: 2021-02-07 06:37:32
Thank you all for your comments. My apology for not making this post a little clearer ... When you add animals to the waiting list, how do you check them in when they finally arrive at the shelter? "Add a new animal" means we are rekeying details that have previously entered when we place them on the waiting list.


Adding Regimen Start Time

@do724172: 2020-12-14 20:27:19
Is it possible to designate a start time for treatments? i.e. If we create a regimen to be given twice a day but we create it later in the day...they would only be given one treatment in the evening and then 2 tomorrow. When we do it now. It creates 2 automatically for the start date even though we're starting it in the evening.

@robinrt: 2020-12-15 09:05:31
Sorry, not at the moment. There is a task on our development list for putting times on treatments but the details haven't been worked out yet.


Update new RabiesTag field with old data.

@adoptamutt: 2020-12-13 00:13:10
These are the steps I took to update the new RabiesTag field with the old data from the RabiesTag field in the Health and Identification Section: (1) Go to Settings > Lookup data > Vaccination Types and write down the IDs for all your Rabies type vaccinations. (2) SQL works best IF you only have ONE completed Rabies vaccination record, so you need to run this SQL to see if you have any animals with TWO completed Rabies vaccination Records: "select sheltercode, rabiestag from animal awhere 1 < (SELECT COUNT(ID) FROM animalvaccination v WHERE v.animalid = a.ID AND v.vaccinationid in (8,9) AND DateOfVaccination Is Not Null)" NOTE: Replace the "8,9" with your Rabies ID number recorded in step 1. Now manually pull up these sheltercodes and modify the oldest Rabies record and enter "No tag" in the Rabies Tag field. (3) Find out how many records need to be updated: "select sheltercode, rabiestag from animal a where rabiestag <> '' AND 0 < (SELECT COUNT(ID) FROM animalvaccination v WHERE v.animalid = a.ID AND v.vaccinationid in (8,9) AND DateOfVaccination Is Not Null)" NOTE: Aga in, replace "8,9" with your Rabies IDs. (4) Run this SQL to do the update: "UPDATE animalvaccination SET RabiesTag = (SELECT RabiesTag FROM animal WHERE ID=animalvaccination.AnimalID) WHERE animalvaccination.VaccinationID IN (8,9) AND DateOfVaccination Is Not Null --AND animalid = 592 AND (RabiesTag = '' OR RabiesTag IS NULL) AND EXISTS(SELECT RabiesTag FROM animal WHERE ID=animalvaccination.AnimalID AND RabiesTag <> '')" If you have Forms designed in the Reports system, you want to add "animalvaccination.RabiesTag, CASE WHEN animalvaccination.RabiesTag <> '' THEN ' Tag' ELSE '' END AS RabiesTagFormat," to the select statement and then add "$RabiesTagFormat $RabiesTag" in the HTML to print the new Rabies Tag number on the form. If you have Documents and want to include the new Rabies Tag, you have to create a new column and add <<VaccinationRabiesTagLast1>> etc. At this point you can go into Settings > Options > Remove > and remove the old Rabies Tag field from the Health and Identification Section to avoid any confusion with the new field in the Vaccination record.

@robinrt: 2020-12-13 08:58:04
If you sandwich your code between three backticks ``` top and bottom, the forum will format them for you to make them easier to read and copy: ``` select sheltercode, rabiestag from animal awhere 1 < (SELECT COUNT(ID) FROM animalvaccination v WHERE v.animalid = a.ID AND v.vaccinationid in (8,9) AND DateOfVaccination Is Not Null) ``` ``` select sheltercode, rabiestag from animal a where rabiestag <> '' AND 0 < (SELECT COUNT(ID) FROM animalvaccination v WHERE v.animalid = a.ID AND v.vaccinationid in (8,9) AND DateOfVaccination Is Not Null) ``` ``` UPDATE animalvaccination SET RabiesTag = (SELECT RabiesTag FROM animal WHERE ID=animalvaccination.AnimalID) WHERE animalvaccination.VaccinationID IN (8,9) AND DateOfVaccination Is Not Null AND animalid = 592 AND (RabiesTag = '' OR RabiesTag IS NULL) AND EXISTS(SELECT RabiesTag FROM animal WHERE ID=animalvaccination.AnimalID AND RabiesTag <> '') ```

@adoptamutt: 2020-12-13 14:45:14
Users: The "AND animalid = 592" was just for testing purposes. You can comment that out with -- before running. Thank you, Rob, for the last SQL!


AM/PM/ Mid Day Treatments

@do724172: 2020-12-12 17:35:42
Can there be an option/field to designate this when animals get something once a day? I know we can use the comments section but it would help a lot in the future.


AM/PM/ Mid Day Treatments

@do724172: 2020-12-12 17:35:42
Can there be an option/field to designate this when animals get something once a day? I know we can use the comments section but it would help a lot in the future.


AM/PM/ Mid Day Treatments

@do724172: 2020-12-12 17:35:42
Can there be an option/field to designate this when animals get something once a day? I know we can use the comments section but it would help a lot in the future.


Flags

@evc1547: 2020-12-11 16:50:03
How do I make my own flag? I would like one that has 'Staff only' but not sure if this is possible. Also is there a way of getting the TLS on here? (Traffic light system)

@robinrt: 2020-12-11 17:05:30
Settings->Lookup Data, then choose "Animal Flags" or "Person Flags" from the dropdown at the top right depending on what kind of flag it is. You can choose an icon or emblem for animal flags under Settings->Options->Animal Emblems

@adoptamutt: 2020-12-12 17:44:14
evc1547: There is an "ASM Rocks!" Facebook group that users have created to share ideas with other ASM users, if you are interested.

@evc1547: 2020-12-13 10:58:33
Thank you!


Rabies Vaccine needed flag

@lialang: 2020-12-11 13:37:02
This seems to be a new feature I just saw this morning. Problem is it is not working properly as I am seeing cats that have a rabies vaccine being flagged as not having one.

@robinrt: 2020-12-11 13:40:05
It requires that you set the rabies tag field on the vaccination record.

@lialang: 2020-12-11 13:42:30
We do not use rabies tags?

@robinrt: 2020-12-11 13:51:33
Just put N/A in there so that the system has a value and will recognise it as a rabies jab. You can also choose which species you want to be alerted about under Settings->Options->Home page->Show an alert when animals of this species do not have a rabies vaccination

@lialang: 2020-12-11 14:26:51
ok, that took away the syringe on the individual animal when you are inside the record, but when you look at the home page for all animals in shelter, it still shows them all as needing rabies vaccines.

@robinrt: 2020-12-11 14:46:17
You can turn it off altogether - Settings->Options->Animal Emblems->Rabies not given

@lialang: 2020-12-11 15:10:25
I can do that, but then what is the use of having that functionality if it doesn't work.

@robinrt: 2020-12-11 15:29:45
In what way isn't it working? We support 25 languages, so looking for the word "Rabies" isn't very effective, also many people use the vaccination product name as the type and rabies vaccinations don't always necessarily contain the word rabies.

@robinrt: 2020-12-11 15:41:38
sorry, I think I understand - due to the amount of data the home page needs to access, it only updates itself every 5 minutes or so. You were probably seeing cached data and the animal you updated the rabies tag on will have disappeared from there shortly afterwards.

@lialang: 2021-01-05 16:18:55
you are correct, it did update now.


Mailing labels

@audraf: 2020-12-08 22:42:33
I'd like to pull all the people who have fostered this year to make address labels for them. I have everyone flagged as a foster, is there a way to set a date range for the year to show who's fostered this year? I guess it would also have to pull movement?

@adoptamutt: 2020-12-09 00:05:52
I think this would work: —- SELECT DISTINCT OwnerName, OwnerAddress, OwnerTown, OwnerCounty, OwnerPostcode, HomeTelephone, WorkTelephone, MobileTelephone, EmailAddress FROM animal INNER JOIN adoption ON adoption.AnimalID = animal.ID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 2 AND DeceasedDate Is Null AND (ReturnDate Is Null OR MovementDate >= '2020-01-01' AND MovementDate <= '2020-12-31') AND Excludefrombulkemail= 0 AND Isbanned != 1 ORDER BY OwnerName —-

@audraf: 2020-12-09 00:26:10
thank you I will try!

@adoptamutt: 2020-12-12 17:45:16
There is an “ASM Rocks!” Facebook group that users have created to share ideas with other ASM users, if you are interested.

@audraf: 2020-12-15 21:46:15
Great, I'll check it out.


QR code

@mdpost29: 2020-12-06 20:56:06
We would like to start using the qr code printed on the cage cards for our staff to pull up on an iPad but the code directs it to the browser desktop interface. Is there a way to have it directed to the app? How can we customize QR code? Thanks, Mike

@robinrt: 2020-12-07 08:41:18
Hi, I'm afraid the QR code target isn't customisable, there isn't a way to have the app respond to it, although we are looking at barcode and other scanning from within the app in future. If you're logged in on your mobile browser, it will show the record there.

@mdpost29: 2020-12-08 21:22:00
great thanks


Additional fields Q

@galia: 2020-11-29 10:13:14
Hi, Is there a setting somewhere to allow a new additional field to create an entry in the animals journal in the same way as the weight fields does when you update the info? thx Tim

@robinrt: 2020-11-29 13:28:41
No, sorry there isn't.


Staff Rota

@jimdunne: 2020-11-29 09:58:41
Is there any way to add 'Confirmed' and 'Unconfirmed' possibly with a coulour background, in the Staff Rota? This would enable us to add people in when making up a rota, and then to mark them as 'confirmed' when we know the person can cover the shift. We run with 30+ volunteers that cannot always commit to a certain day, and with the way things are with Covid, we have to keep chopping and changing.


Location 'Released to Wild' now says 'Transport'

@judyanjowski: 2020-11-26 00:18:53
If I select ‘TNR’ as the Movement Type, the ‘Location’ use to change to ‘Released to Wild’. Now it says ‘Transport’.

@robinrt: 2020-11-26 08:48:53
This looks like an old database update did not run as the TNR type replaced the redundant "Transport" movement type that was deleted years ago. I've fixed this in your sheltermanager account. For any open source users with the same issue, this query will correct it: ``` update lksmovementtype set movementtype = 'TNR' where id=13; ```


Ear Tipped Option

@sjras: 2020-11-25 21:02:03
Just wondering if adding the Ear Tipped area is possible that's available as a filter? Basically just like the declawed function? We've added additional fields for those that WE ear tip in our clinic, but that's mostly for nonshelter. We're starting to find that it would be handy to have a searchable/filterable ear tipped checkbox. Just a thought for future builds.

@robinrt: 2020-11-26 08:49:42
Hi, this could be easily added with an "Ear Tipped" animal flag. Flags can be shown in shelter view and searched for/filtered/etc.


Labels

@catlovercindi: 2020-11-18 19:20:13
Is there a way to print address labels for a mailong?

@adoptamutt: 2020-11-18 19:57:32
Mailong? To produce labels go to Mail, pick your report, and then “Produce a PDF of printable labels”


Shelter View - Location and Unit

@lynnep: 2020-11-16 09:43:52
If I select the shelter view by Location, or by Location and Type, the fostered dogs are shown, but if I select Location and Unit, the foster dogs are not displayed. Why is this?

@robinrt: 2020-11-16 14:28:54
Foster dogs can't have a unit, since they aren't in a shelter location.


Reports from incoming applications

@audraf: 2020-11-11 19:05:04
Hi there. We have our foster applications automatically load into ASM and create people flagged as fosters. On our application, we have a "how did you hear about us question". Is there a way to run a report to get this breakdown?

@adoptamutt: 2020-11-11 20:20:32
I think you would need to create an additional field on the person table and then included that field name on your foster application so that The new additional field is updated when you process the application. Then you can create a report off of that field.

@audraf: 2020-11-11 21:11:37
How do you create a report off of the custom field, that's the issue we're running into . Thanks.

@adoptamutt: 2020-11-11 22:34:39
How to include an additional field in your SQL is described in the Configuration section of the manual under “Additional Fields”.

@robinrt: 2020-11-12 12:19:35
The new query builder also makes this easy, because you can just choose your additional fields from the list and have it write the query for you. https://www.youtube.com/watch?v=6ryMDZbIXA0


Missing animal bios and adopted pets reappearing

@marin_helpshelter: 2020-10-30 18:15:38
Animals that have long been adopted and, for a time, been taken down from adoption websites are reappearing as available. Most of them have never been listed as courtesy animals, and we've double checked that their profiles were never edited after initially being marked as gone. We've had owners call and ask why their pets are shown on websites, and it's frustrating to continue having this issue. Additionally, random animals will be missing their biographies. There doesn't seem to be a reason for it - both old and new ones will have bios, while others do not. We're not sure how to correct either of these issues.

@robinrt: 2020-11-12 12:20:55
Hi, if you're a sheltermanager customer, please write us at help@sheltermanager.com and include your account number and some examples of animals where this has happened so we can take a look and figure it out.


Document Template from Report?

@alicebk: 2020-10-30 00:30:43
Is there a way to generate a document template from an existing custom report? Related question: Are there methods of creating document templates aside from using the tinymce editor?

@robinrt: 2020-10-30 10:50:14
No, document templates are completely unrelated to reports I'm afraid. You can also create your document templates in any word processor you like and copy and paste into TinyMCE (you can also export HTML from the word processor of your choice and copy/paste it into the Source window of TinyMCE for more accurate output).


Posting images in bulk email

@audraf: 2020-10-28 17:13:37
Hi all, I'm just starting to explore how to use the bulk email option. I would like to be able to insert photos into emails when calling for fosters. I get to this step (see image) and I'm not sure where to go from there. [Source](//muut.com/u/sheltermanager/s3/:sheltermanager:fGJh:source.jpg.jpg)

@adoptamutt: 2020-10-28 19:43:24
You might try to right_click on the image you want in the Media tab and select 'Copy Image Address' to get the source.

@audraf: 2020-10-29 20:20:00
Thanks!


Vaccination date next due missing in AnimalVaccinations table key

@hbcajonb: 2020-10-25 12:14:15
ref: https://sheltermanager.com/repo/asm3_help/wordkeys.html#table-keys Is it possible to add a "date next due" column to 'AnimalVaccinations' table? We would like the auto-generated table to include this column for our adopters and we like how this table has a dynamic number of rows.

@robinrt: 2020-10-27 08:27:36
It isn't a member of the record though, each vacc contains the date it is due and the date it was given. If there's a due vacc on the record, it should appear at the top of the table. I'll check, but that might be dependent on whether you have the option enabled for "Include incomplete medical records when generating document templates" under Settings->Options->Documents


Publishing option for "Available for Adoption" not working

@amybaron: 2020-10-24 05:55:05
Hello... we do not adopt out cats that are not desexed ... and we've always had the "Include non-neutered/spayed animals" set to NO ... and it has always worked, showing that intact animals are not available for adoption It does not seem to work any more... regardless of whether I set NO or YES, intact animals are listed as available for adoption. Thanks

@robinrt: 2020-10-24 09:35:13
Is this maybe a cache or update issue? If you go to Publishing->View Animals Matching Publishing Options, are those intact animals still appearing with Include non-neutered set to no? What service is being updated with adoptable animals? Is it your website, and if so through which mechanism? If you're using sheltermanger.com please drop us a note at help@sheltermanager.com with your account number so we can take a look.


Emailing Reports

@audraf: 2020-10-23 00:04:30
Hi I am trying to email a report daily to several users. Can you tell me how to add more than 1 email address? THanks

@adoptamutt: 2020-10-23 02:37:41
Separate them by a comma.

@audraf: 2020-10-23 17:17:20
does there need to be a space or just a comma?

@adoptamutt: 2020-10-23 17:50:46
I'm not sure it matters, but I add a space for readability.

@audraf: 2020-10-23 17:58:55
Thank you. It seem to work without the space.


Initial Set Up Help

@hsnc: 2020-10-16 21:42:30
When purchasing, is there help with the initial set up? Such as setting flags, etc.. Thanks!


HELP

@ddchs38024: 2020-10-12 21:14:25
I accidentally deleted all the dogs. Is there a way to undo the delete or recover information

@robinrt: 2020-10-12 21:47:34
Hi, are you a sheltermanager customer? If so, email us at help@sheltermanager.com with your account number and let us know what you deleted and what needs restoring.


<> for documents

@galia: 2020-09-25 10:50:48
Hi, I want to add the home check date to our adoption contract, I have worked out how to insert the homecheckers name but the code (wordkey) for the date of the visit eludes me :-) I found this in the instruction manual but it does not return anything when the document is generated <<DateLastHomeChecked>> DateLastHomeChecked - TIMESTAMP The date this person was last homechecked Any ideas Thx

@robinrt: 2020-09-25 11:19:13
That's the database column, looking at the wordkeys section we don't actually have one for this field. I'll make a note to add it today. It will be called HomeCheckedDate once it is available.

@galia: 2020-09-25 22:39:41
Wow super thankyou I will try tomorrow thank you

@galia: 2020-09-25 22:46:12
;-) tried already lol yes it is working thank you perfect 5 stars to you


Rabies Certificate Question

@mmover: 2020-09-23 22:14:50
I see in the document template a reference to <<RabiesTag>> but when adding a vaccination to an animal there is no field to enter the tag number. We have been using the comments section for record keeping but now that we want to utilize the template we have an issue. I did alter the template to pull from the vaccine comments section and it did work but then that means no comments other than the rabies tag number can be added to that field. I assume since the template references the tag number that there must be a field that exists for it but I can't find it. Can someone point me in the right direction?

@adoptamutt: 2020-09-23 22:18:56
We do the same thing, that is, use the comments field and the Rabies vaccination for the rabies tag number. But you still have to enter it again in the Rabies Tag field, if you want to pull that separately.

@robinrt: 2020-09-24 09:36:49
This is one of those niggling jobs that's been on our list to fix for ages. Rabies Tag should have been stored with the rabies vaccination, but for some reason we created a single value on the animal record instead (many years ago).


Template animals. Can you set Hold Until date?

@adoptamutt: 2020-09-22 17:12:43
I modified one of my Template animals to have a Hold Until date 5 days after the brought in date, but when I added a new animal, only the "Hold Until" box was checked. The "Hold Until" date was blank. I was thinking maybe I could have a template type of stay set the "hold until" 5 days out and an owner surrender set 3 days out. Does it only check the box? It might be two difficult to set dates due to some using business days vs. regular days to count how long an animal is held.

@robinrt: 2020-09-24 09:35:08
The code that applies the template does not look at hold until date, it only copies the hold flag if it is present on the template. You're right though that it could - we use the same comparison vs datebroughtin to default the hold until date if it is set on the template.


Hold Until - what time is the date removed?

@adoptamutt: 2020-09-20 19:13:33
If I have a “Hold Until” date set, does ASM clear that field at 12:00 am the next day? If not, when is it cleared?

@adoptamutt: 2020-09-20 19:14:35
Or does the date remain and the check box cleared?

@robinrt: 2020-09-21 09:02:33
It's cleared when the overnight batch runs, which is 8am UTC (3am EST and 12am PST)

@adoptamutt: 2020-09-22 16:55:22
Does it get cleared BEFORE the Publishers run? I still have my publisher set to update adoption websites every 24 hours, so it would be important for this to be cleared before the websites are updated.

@robinrt: 2020-09-22 17:13:34
Yes, the publishers run at 10am UTC. Sorry, I wasn't clear in my answer before, the Hold flag is removed by the batch when the hold until date == today, but the hold until date remains on the record so that you know the animal was previously held.


Report: Homechecker Map

@dome1094: 2020-09-19 18:31:41
Hello everyone, i'd like to create a Map to see all Homechekers via the Report funktion. Could anybody help me? Is this even possible? Greetings Dome

@lynnep: 2020-10-26 09:06:07
Use the "People with Flag" map


Upload bulk people details

@sarawilkins04: 2020-09-19 14:54:20
We would like to upload names and addresses of applicants for dogs from Excel but not sure how to do this into ASM, is it by a CSV import?

@robinrt: 2020-09-19 17:59:55
Yes. See https://sheltermanager.com/repo/asm3_help/configuration.html#import-a-csv-file https://sheltermanager.com/repo/asm3_help/csvimportfields.html


edit header/footer of reports

@bramuno: 2020-09-14 22:35:13
I need to edit the header/footer of individual reports. i can only find a way to edit online forms but no way to edit reports. the reports SQL generates $$HEADER and closing tag HEADER$$. removing those tags causes the report to fail. i only want custom <head> tags for one report, not all. so how can i edit this area?

@robinrt: 2020-09-17 13:28:33
Add a $$HTMLHEADER section to override. You can also edit the global header and footer with the header/footer button on the Settings->Reports screen.


test default date

@bramuno: 2020-09-12 21:30:16
hi when we create a new animal record the required tests are defaulting to an older date and we would like it to default to the date the record is created as it is doing for other date fields. i can't seem to find any place to modify this field. is there a way to achieve this? thanks in advance :)

@adoptamutt: 2020-09-15 15:15:42
Are the test dates in your template earlier than the brought in date?

@bramuno: 2020-09-15 19:29:06
i dont know. where am i supposed to find the templates? SETTINGS > DOCUMENT TEMPLATES does not have anything like what i need to find

@adoptamutt: 2020-09-15 20:28:07
Enter ‘template’ in the main search box. That should display any animal templates currently created.

@adoptamutt: 2020-09-15 20:32:58
https://sheltermanager.com/repo/asm3_help/animals.html#template-animals

@bramuno: 2020-09-15 22:02:18
ok thanks. i believe i found it. i edited the test and changed the date to a day 3 years ahead of today 2023, and when i created a new animal it set the test due date for December 2026. I didnt see any dynamic option to set the test date to match the intake date or record creation date. is this possible to do?

@adoptamutt: 2020-09-15 22:12:15
To do that, You just make sure your template brought in date is the same as the template test date.

@bramuno: 2020-09-16 04:39:00
yes. manually we do that already. im asking if there is a way to do that automatically? i dont even think these templates found via search are the same forms. the ADD NEW ANIMAL button takes me to a one-page form where nothing is defaulted except the date brought in which defaults to today. i want to do the same thing with the test due dates. can the add new animal form be edited?

@adoptamutt: 2020-09-16 13:20:29
If you have your template animal set up with the tests dates set the same as the brought in by date, ASM WILL add the due tests automatically after you use the “Add a new animal” screen that you’re talking about. But you can also modify the add animal screen through Settings > Options > Add Animal.

@robinrt: 2020-09-17 13:29:22
There's more info on relative dates on template records here: https://sheltermanager.com/repo/asm3_help/animals.html#template-animals


Donor management

@newwave: 2020-09-09 20:30:22
Is anyone willing to discuss their use of the platform as it relates to fundraising? Thanks!

@robinrt: 2020-09-17 13:30:49
Hi, this is a bit of a nebulous question. If you have a specific question we're happy to answer it. Fundraising campaigns usually are assigned their own payment type so that you can track money made by that campaign. You can add payment types under Settings->Lookup Data.


Copying Documentation

@mdeprima1964: 2020-09-09 02:33:56
Again, the process thing.... I've got signed adoption contracts under the cat instead of the adopter. I'm sure this is quite easy, but how do I copy a document from the cat to the adopter, or vice versa? Thanks!

@robinrt: 2020-09-09 09:11:50
It's not quite easy I'm afraid, the only way to do it at the moment is to edit the document and use Tools->Source to view the code that makes up the document. Click into the code and then copy it the clipboard with CTRL+A and then CTRL+C,. Then, go to the person record and add a new document, use Tools->Source and paste the content with CTRL+V followed by Ok, Save.


Updating Signature Requests

@mdeprima1964: 2020-09-09 02:31:59
Yeah, I've got some volunteers that have a problem following process. Somehow, they sent out a request for Signature via email after it had already been collected, or we have requests we know we'll never get a response on. How can those requests be closed? Thanks!

@robinrt: 2020-09-09 09:08:13
Just delete the ES01 log entries under the log tab.


SQL commands to alter report: weight

@fletch654: 2020-09-03 17:39:48
I need a report showing 2020 felines only with name, date of original entry, gender, and weight. I tried to use the “Weight History (Shelter Animals)” report, but it's looking at the log for the weight history. I need it to just list the weight on the animal screen. Also, not just the animals currently in the shelter. The original report looks at only in-house animals. Any help would be greatly appreciated.

@fletch654: 2020-09-03 17:47:39
In date order as a list; not separated with a header for each animal.

@srupe05: 2020-09-05 00:03:29
Very basic table with date brought in, shelter code, animal name, sex, and display weight. Includes a date selector to select animals brought in between two dates. Uses species name "Feline" - edit if using "Cat". Ordered by date brought in (unsure how to removed the time from the date brought in.) SELECT a.ShelterCode, a.AnimalName, s.SpeciesName, sx.Sex, a.Weight, a.DateBroughtIn FROM animal a INNER JOIN species s ON s.ID = a.SpeciesID INNER JOIN lksex sx ON sx.ID = a.Sex WHERE s.SpeciesName LIKE 'Feline' AND DateBroughtIn BETWEEN '$ASK DATE Enter from date$' AND '$ASK DATE Enter to date$' and Nonshelteranimal=0 ORDER BY a.DateBroughtIn html for the above SQL: $$HEADER <table border=1> <tr><td><b>Date of Entry</b></td> <td><b>Code</b></td> <td><b>Name</b></td> <td><b>Sex</b></td> <td><b>Weight</b></td></tr> HEADER$$ $$BODY<tr> <td>$DATEBROUGHTIN</td> <td>$SHELTERCODE</td> <td>$ANIMALNAME</td> <td>$SEX</td> <td>$WEIGHT</td> </tr> BODY$$ $$FOOTER </table> FOOTER$$

@fletch654: 2020-09-06 01:34:43
Hello. Thank you so much for your time to write this report. I copied it into a new report and changed feline to cat. When I run the report I the following is displayed: Criteria: Enter from date: 9/1/19 Enter to date: 8/31/20 syntax error at or near "CAT" LINE 6: WHERE s.SpeciesName LIKE ‘CAT’ AND DateBroughtIn... ^ No data to show on the report. The report syntax changes, too. The WHERE line changes to: WHERE s.SpeciesName LIKE ‘CAT’ AND DateBroughtIn BETWEEN ‘$ASK DATE Enter from date$’ AND ‘$ASK DATE Enter to date$’ and Nonshelteranimal=0 I tried to figure out the problem, but I don't know SQL. We need this data to satisfy a grant we received. Again, any help would be appreciated. Please let me know if this is outside the allowable posts for this forum. I don't want to wear out my welcome. Thank you, Tobie Fletcher Tails of Nye County Pahrump, NV 702-860-3102

@fletch654: 2020-09-06 01:36:30
I apologize for my error above. The WHERE line changes to: WHERE s.SpeciesName LIKE ‘CAT’ AND DateBroughtIn BETWEEN ‘$ASK DATE Enter from date$’ AND ‘$ASK DATE Enter to date$’ and Nonshelteranimal=0

@fletch654: 2020-09-06 01:44:34
This is strange I paste in the correct info, but when I hit select it changes to the original. Am I losing my mind? No, I get it now. The apostrophes change to their html & codes of #8216; and #8217; I don't know if that matters to the syntax of the report. Here is the changed WHERE line. Imagine the _ characters aren't there. I put them there to disrupt the html codes. WHERE s.SpeciesName LIKE &_#_8216 ;_CAT&_#_8217_; AND DateBroughtIn BETWEEN &_#_8216 ;_$ASK DATE Enter from date$_&_#_8217; AND &_#_8216 ;_$ASK DATE Enter to date_$_&_#8217_; and Nonshelteranimal=0 I apologize if this is confusing.

@fletch654: 2020-09-06 01:46:02
I'm going to scream. I used the underscore character, but apparently that is a command to add italics. Well, hopefully you understand what I said. My brain is officially mush.

@robinrt: 2020-09-06 09:55:05
Yes, it does matter - your apostrophes are smartquotes instead of the apostrophe character, it does look like that's the error message you are receiving? I don't see anything else wrong with your query apart from the fact that CAT isn't likely to match unless that's what the species name is in your data as it's case sensitive.

@fletch654: 2020-09-09 00:31:07
Hi again. I fixed the case on Cat. I'm still getting the same error message. This is the WHERE statement: WHERE s.SpeciesName LIKE 'Cat' AND DateBroughtIn BETWEEN '$ASK DATE Enter from date$' AND 'ASK DATE' Enter to date and Nonshelteranimal=0 This is the error message: syntax error at or near "DateBroughtIn" LINE 6: WHERE s.SpeciesName LIKE 'Cat' DateBroughtIn BETWEEN 'ASK DA... ^ Does the fact that we're in the USA make any difference? I couldn't find SpeciesID in our wordkeys glossary. Do we use different syntax? Thank you, again, for all your help.

@robinrt: 2020-09-09 09:10:13
The second ASK token is broken. Your WHERE clause should look like this: --- WHERE s.SpeciesName LIKE 'Cat' AND DateBroughtIn BETWEEN ‘$ASK DATE Enter from date$’ AND ‘$ASK DATE Enter to date$' AND NonShelterAnimal=0 ---

@fletch654: 2020-09-09 17:42:26
It's finally working. Thank you sooo much for your time and patience. After you fixed the WHERE statement I had to do a few more fixes. I used other reports to reference the correct syntax. Here's what the final looks like: SELECT a.ShelterCode, a.AnimalName, s.SpeciesName, sx.Sex, a.Weight, a.DateBroughtIn FROM animal a INNER JOIN species s ON s.ID = a.SpeciesID INNER JOIN lksex sx ON sx.ID = a.Sex WHERE s.SpeciesName LIKE 'Cat' AND DateBroughtIn BETWEEN '$ASK DATE Enter from date$' AND '$ASK DATE Enter to date$' AND NonShelterAnimal=0 ORDER BY a.DateBroughtIn, s.SpeciesName Again, I can't thank you enough.


Drop Down In a Custom Document

@mhs_jeff: 2020-09-01 16:11:18
I don't think this is possible but just figured I would ask. I am trying to create a custom document template for our processes of approving applications and I was hoping to incorporate a drop down into the document so that when it is being created / modified the user can select from the different set options to fill a certain field. Is the possible? Thanks Jeff

@robinrt: 2020-09-01 16:19:53
Sorry, it isn't. While you could technically add HTML form controls to a document, their values would not be saved.

@mhs_jeff: 2020-09-07 03:34:11
Ah, ok I figured as much. Thank you!


Inactive person record

@mariacee: 2020-09-01 02:54:51
Hi, I see there's a deceased flag, but there doesn't seem to be a way to mark a person as inactive and exclude them from mailings, etc. Is this slated for development in the near future, or how do you recommend this is managed? We'd like to use the online forms to collect potential adopters and volunteers, but also want a way to easily indicate they're inactive without marking them as deceased.

@robinrt: 2020-09-01 08:52:17
Both "Exclude from bulk email" flag and the deceased flag excludes a person from mail merges.


Permission error

@tsesler0: 2020-08-29 21:52:54
After logging in, I cannot click on a picture and see card. It says permission error and underneath that it says forbidden. How do I correct this problem?

@robinrt: 2020-09-01 08:53:22
You don't have permission to view that animal. It's likely that there is a location or site filter on your user account preventing you from seeing it. To fix, the person who set up your user account needs to either extend the filter to include animals in that location or remove the filter from your user account altogether.


Document Repository

@lynnep: 2020-08-26 10:05:27
Is it possible to attach a document from the repository to a person's media?


Unneutered animals shown as not for adoption

@lynnep: 2020-08-24 21:19:16
Is there a special setting that stops animals being shown as not for adoption if they are not neutered? I have gone through all the options and car't find a setting. This is what it looks like [Pic](//muut.com/u/sheltermanager/s2/:sheltermanager:iaAM:pic.png.jpg)

@robinrt: 2020-08-25 09:24:14
Yes. Publishing->Set Publishing Options->Animal Selection. Set "Include unaltered" to "YES" if you want them adoptable.

@lynnep: 2020-08-25 22:17:59
Thank you


Make a person record private?

@lcasa: 2020-08-24 02:42:19
Is there any way to make a person record private? Or restrict access to certain person records for some users?

@robinrt: 2020-08-24 09:59:43
If you give your person the "Volunteer" or "Staff" flags, then they cannot be accessed by anyone who does not have the "View volunteer person" or "View staff person" permissions.


Cloning animal doesn't clone vaccinations.

@connor9220: 2020-08-22 03:28:10
Was entering in a litter of kittens all of which had been vaccinated on the same day from the same batch etc.. We cloned the first kitten, and the vaccination information didn't come over. Was this overlooked?

@robinrt: 2020-08-22 09:54:55
It shouldn't be, vaccinations are the second thing copied in animal.clone_animal. Can you reproduce?


Corrupt localdb.script

@ctdctd: 2020-08-21 20:24:14
Hi, Just been asked to help at a UK rescue after a power outage. They are running a local java version of ASM which I think is asm2. It fails to start with a java error. The file localdb.script is corrupt and I can't copy it off to a separate drive. I suspect backups do not exist. Any hope? Ta for any replies!

@robinrt: 2020-08-22 09:56:25
That file contains the complete database as SQL text. If you can't read it, I'm afraid there pretty much isn't anything you can do. It might be possible to repair it by hand if you can read most of the file.

@ctdctd: 2020-08-22 10:47:07
Thank you Robin, I've run Recuva and found a couple of corrupt but readable versions - it reported an I/O error on the live version. I than did a full CHKDSK which found and repaired the live version. The live version is now readable by notepad - it's about 9Mb in size with maybe 5 chunks in the middle in the "Insert into Animal Cost Values" , "Insert Into Animal Vaccination Values" and "Insert into Owner Values bits" and a bit at the end showing as corrupt text. The final normal entry starts with the operator name for an "Insert Into Owner Values" entry and finishes "Employee Signature:" I'm going to see if the Recuva files are any different. If I can get the file in the correct format again, I guess it could be imported into a new copy of the DB's - are you able to give me any advice or maybe point me to an online manual for the DB please? I'm not a dbadmin but I'll give it a go if I can! Thanks David

@ctdctd: 2020-08-22 13:10:09
Update - I've manually gone through the localdb.script file deleting the corrupted areas. After that, running ASM reports various errors, giving the line number each time. I've commented out the affected lines - some look to be formatted wrongly and there were quite a lot of duplicates. After all that, it starts and runs - it will be up to the rescue to work out how much data they have actually lost. Thanks again for the reply and a huge thanks for keeping archive downloads and a forum going for a long discontinued product!

@robinrt: 2020-08-22 15:40:04
Well done, glad you managed to get it sorted!


Microchip Provider - Nano Chips

@mdeprima1964: 2020-08-21 03:48:13
Nano Chips is a relatively new chip provider that has exceptional pricing for nano chips (which is great for cats). Any plans to add them to the automated registration process? https://www.nanochipid.com/

@robinrt: 2020-08-22 09:57:18
No plans, but if they have an API and can receive registrations we'd be happy to add them.


Repeat frequency VS medical calender

@scordeau: 2020-08-17 22:08:41
Is there a way with medical tasks that has a frequency/repetition to make the task appear every time the repetition is set, on the medical calender ? For exemple, a treatment is for every day and ends after 3 days. On the medical calendar this treatment will appear the first day scheduled, but not the other 2 days. When de 1st day is past, the task will appear the next day sheduled but not the last day on the medical calender. Then when the second treatment day will be past, the last treatment will appear on the medical calender. Is there a way to put all the sheduled treatments of this task to appear on the medical calender ?

@robinrt: 2020-08-18 09:07:00
There isn't, but an option to pre-create all medical treatments like this has been on our development backlog for a long time. The reason it only creates the treatments on demand is to prevent overdosing where an animal receives one treatment late, but the reminder hits to do it again too soon.

@scordeau: 2020-08-18 14:18:09
I understand, but for a person who need/want to view what his week will be like, he can't right now. Can I have the link for this item on your backlog please ? I did not find it, thanks!

@scordeau: 2021-03-22 15:02:49
It's ok for this one, team understood the issue :) Thanks!


Calculating the difference between two dates

@lynnep: 2020-08-16 15:32:34
I want to show the difference (in months) between the Date of Birth and the Adoption Date. I have tried to use DATEDIFF, but the error says that function does not exist. Any ideas as to how I can do this?

@robinrt: 2020-08-17 11:44:25
which database are you using? If it's sheltermanager.com then we use PostgreSQL for our backends. Use: ``` age(DateOfBirth, ActiveMovementDate)::varchar ```

@lynnep: 2020-08-24 21:23:45
Thank you


Lookup Table values

@lynnep: 2020-08-14 13:33:09
I want to put the Reservation Status value in my report but can only get the ReservationStatusId (a number). Is there a specific table I should be linking to?

@robinrt: 2020-08-17 11:45:04
There's a table called reservationstatus with an ID field to link to.

@lynnep: 2020-08-24 21:23:55
Thank you


Email reports

@gweeks: 2020-08-09 13:20:22
In the last few days I have noticed that any reports I have set to email me at the end of each day are now being sent even if there is no data. Previously if there was no data i would not receive the report which worked better as it didn't clutter my inbox. Is there a way to change this back? Thanks Gary

@robinrt: 2020-08-09 15:43:28
Yes, the option is under Settings->Options->Reports

@gweeks: 2020-08-11 16:52:10
Thanks


Sub Query Plausibility

@mmover: 2020-08-05 17:54:33
Our Animal Control currently uses the report "Incidents between two dates by pickup location'' for billing purposes. They want to include animals that were brought to shelter by a member of the public. The current potential solution would be to have our customer relations enter a new incident and complete it every time an animal is brought to the shelter by a member of the public. But if there is a simpler way like creating a subquery for the report they currently use I would much rather go that route, as entering those incidents would be just one more thing that my staff have to try to remember to do. It would need to pull the animals by datebroughtin, include the shortcode, species name, pickuplocation, and the finder's (brought in by's) name, phone number, and address. Before I attempt to write a subquery is this even possible? I've only worked with a report that has sub queries once and I didn't have to write them. Thank you.

@robinrt: 2020-08-06 10:40:32
Sure, you can write a subquery to do anything. I'm not clear on what it is that you're after. The subquery you're describing sounds like the existing "Intake by Brought In Owner" report?

@mmover: 2020-08-06 20:07:03
I realize after re-reading my post I wasn't as clear as I could have been. I guess what I was looking for is if it was possible to run a modified version of the 'Incidents between two dates by pickup location' report that also pulls data on stray animals that were brought to shelter by a member of the public between the same two dates and ordered by pickup location. So that we could avoid having to enter in a new incident for every stray that is brought to shelter but also avoid having to run two reports? The reason being is we use our call volume as a key piece of data during contract negotiations, and we've only been tracking the calls that animal control gets dispatched to, not any strays brought to the shelter by members of the public (or the calls my staff answers that are animal control related but doesn't require AC to be dispatched, which is a whole other can of worms). I hope that makes sense?

@robinrt: 2020-08-07 09:42:35
It does, it sounds like you want two separate reports that operate on different data shown on a single report. That can be done with the {SUBREPORT} token. You make the two separate reports and then make another which includes them both. There are some reports in the repository that use subreports that you could use as an example, such as the asilomar figures report, petco and "Print Animal Record". https://sheltermanager.com/repo/asm3_help/reports.html#report-grouping-and-calculation

@mmover: 2020-08-07 17:11:29
Thank you! I will start with that!


Paypal cvs import error

@sjras: 2020-08-02 20:04:21
I'm doing this months paypal import & am getting hit with the following error: 'utf8' codec can't decode byte 0xa4 in position 20856: invalid start byte We have several categorizes that require different flags, so we break the spreadsheet into those groups. All 10 of the other groups from the same source file are importing perfectly (thank you for including this btw - saves a TON of entry time!!) I've looked at the data & everything looks ok - no unusual characters, nothing different from the other 10. Tried taking out the first few rows & moving to the bottom to see if that helped...same error. Even tried going back to the original source file & breaking this specific group out again, still error'd. We didn't have this problem with the import of this group last month, so I'm trying to figure out if there's a way to find out what is causing the error so we can eliminate it. Anyone have any ideas?

@robinrt: 2020-08-02 21:20:25
It sounds like the issue is that the file might not be utf8 encoded - it's hitting a character that doesn't match utf8. Try importing it using the cp1252 encoding to see if that helps. Annoyingly. PayPal don't seem to be consistent with text encodings in their activity logs.


Recommended Donation

@cafletch: 2020-08-02 19:00:15
When adopting an animal, is there a way to recommend (default) the donation amount? I was not able to find a setting for this.

@robinrt: 2020-08-02 21:21:02
There is, it's linked to the payment type under Settings->Lookup Data (the Payment Types from the dropdown). There's a default amount you can set for each payment type.


Online forms and Reservations

@connor9220: 2020-07-29 23:11:55
What exactly is the "description" field for? I just tested it, and I didn't see it go in anywhere.. Why is this needed? Is their a way to use a hidden field in the form so the person doesn't have to worry with that?

@connor9220: 2020-07-30 01:56:32
OKay, I'm now a bit more confused.. I adapted one of the fields to description and tested it. I now have entries in the waiting list, as well as the Reservation book. The reservation book looks right.. but, the waiting list, isn't. It has the person in it, but, it set the species, and size to default's Medium Dog. He selected a specific cat.. It looks like the field I adapted popped into the waiting list description.. (Used main reason you plan to adopt a pet). So, why the waiting list? Why not just go into the reservations?

@connor9220: 2020-07-30 02:24:42
Never mind.. Nuke this whole thread. I somehow got waiting list and reservations mixed up.. and didn't realize that creating a person made a reservation if it could.


Fostered animals showing wrong location

@hbcajonb: 2020-07-29 21:28:29
Some cats are incorrectly listed at our adoption center after they have moved to foster via 'Foster an Animal'. I can reproduce the issue for some cats, but for other cats it updates to the correct location 'Foster Home'. Any thoughts what is causing it?

@robinrt: 2020-07-30 09:46:36
The location field is intended for internal locations within a shelter. When you send animals to foster via a foster movement, the system considers them not on the shelter any more (while still in its care) and shelter view shows these animals in a virtual location called "Foster" instead. If you don't want it to do that, choose "Location (No Virtual)" from the mode dropdown at the top right of shelter view. You can make it the default under Settings->Options->Shelter View.

@hbcajonb: 2020-08-01 00:25:27
I see. I can get the fostered cats location to show up in Shelter View correctly. But the problem I'm having is the "Foster" location is not being updated in the Reports or the Animal>Details>Last Location or the SQL database. I want these to show the virtual location "Foster". Some cats have it updated to foster home and others don't, so I don't know why. Please see img below. [Foster_location_issue](//muut.com/u/sheltermanager/s1/:sheltermanager:KfyP:foster_location_issue.png.jpg)

@robinrt: 2020-08-01 08:58:17
The system never updates your location. Last location is the same location field, but not editable. The virtual location is never shown in last location, so there always has to be one "real" location (for many foster-based rescues, they just have the one default location of "Shelter"). You can change the last location for fostered animals by updating location at the bulk change animals screen.

@hbcajonb: 2020-08-01 23:37:40
Excellent explanation. That works for me. Thanks!

@seanimals: 2022-06-10 15:25:50
I have the same problem now. We have three animals that were living at one site, and all three got fostered. But they're not showing in Shelter View as being in the same group as all the other foster animals; they're showing as being at a location called Foster in their old site. I don't see how to change last location in Bulk Change though.

@seanimals: 2022-06-10 15:32:26
Oh, wait. I've just found more. Is it that fostered animals still show in their last location? That's the way it should be? Is there any way they can all just be in one big Foster group?


Time in Foster

@mmover: 2020-07-29 17:52:29
Is there a way to run a report that shows statistics on animals in foster? I do see there is a report for Length of Stay that pulls only animals that have been in foster, but the days in care shows the total days, both in foster and not. I'm hoping there's a way that a report can just show the days they were in foster. Thank you!


Total Intake Query

@mmover: 2020-07-23 20:44:24
I'm modifying the shelteranimalscount matrix report to pull numbers in line with how we do our shelter report, but I'm having trouble getting my intakes to total correctly. Here is what I have: (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 3, 7, 8, 10) OR IsDoa = 1 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 3, 7, 8, 10) OR IsDoa = 1 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 3, 7, 8, 10) OR IsDoa = 1 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 3, 7, 8, 10) OR IsDoa = 1 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 3, 7, 8, 10) OR IsDoa = 1 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticTotalIntake, Here is what it shows: [Annotation 2020-07-23 143254](//muut.com/u/sheltermanager/s1/:sheltermanager:K7Wu:annotation20200723143254.jpg.jpg) Here is what it should be: Canine Adult:35 Canine Up to 24 weeks: 1 Feline Adult: 71 Feline Up to 24 weeks: 114 Misc Domestic: 25 Any help is greatly appreciated!

@robinrt: 2020-07-23 21:00:10
The OR IsDoa = 1 portion is breaking your query and returning everything where entryreasonid is in the list of values you gave. Put the two clauses together in parentheses to treat them as one - either entry reason matches or doa is set but without negating all the other elements of the where clause. --- WHERE (EntryReasonID IN (1,2,3,7,8,10) OR IsDOA=1) AND DateBroughtIn ... ---

@mmover: 2020-07-23 21:38:40
Thank you!

@mmover: 2020-07-23 22:40:37
I ran it as you wrote it above, I even tried removing the OR Is DOA = 1 and then tried running it with EntryReasonID NOT IN (...) both with and without DOA=1. I always check to make sure the are no errors in the SQL before I save it and test it so I know the system believes the query makes sense but it still isn't adding DOAs to the total. It otherwise adds everything else I want it to correctly, it just isn't adding DOAs. Later on in the report I have it pull DOAs and that reflects correctly so I know it isn't a data entry error on my staffs part. What am I missing?

@robinrt: 2020-07-24 08:44:00
It needed applying to every query, did you apply it to just one of the queries maybe?

@mmover: 2020-07-24 16:08:55
No I added it to all of queries involved with pulling total intake numbers. I've attached what the full report looks like when it's run. You'll notice in the full query below that I added entryreasonID 11 as an option as well, as that's the id for a Stray -DOA, I try it without it initially then removing the isDOA = 1 then added it to see if that worked which it didn't either plus that switch to NOT IN both with and without isDOA = 1. $VAR from DATE Enter from date$ $VAR to DATE Enter to date$ SELECT (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE (EntryReasonID IN (1, 2, 3, 6, 7, 8, 10, 11) OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE (EntryReasonID IN (1, 2, 3, 6, 7, 8, 10, 11) OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE (EntryReasonID IN (1, 2, 3, 6, 7, 8, 10, 11) OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE (EntryReasonID IN (1, 2, 3, 6, 7, 8, 10, 11) OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE (EntryReasonID IN (1, 2, 3, 6, 7, 8, 10, 11) OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticTotalIntake, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 8) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogStray, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 8) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogStray, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 8) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatStray, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 8) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatStray, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (1, 2, 8) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticStray, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (12, 4, 9, 5) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogTransferIn, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (12, 4, 9, 5) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogTransferIn, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (12, 4, 9, 5) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatTransferIn, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (12, 4, 9, 5) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatTransferIn, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (12, 4, 9, 5) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticTransferIn, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID = 10 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogRequestedEuth, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID = 10 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogRequestedEuth, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID = 10 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatRequestedEuth, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID = 10 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatRequestedEuth, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID = 10 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticRequestedEuth, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE DiedOffShelter = 0 AND NonShelterAnimal = 0 AND (EntryReasonID = 11 OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogDOA, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE DiedOffShelter = 0 AND NonShelterAnimal = 0 AND (EntryReasonID = 11 OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogDOA, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE DiedOffShelter = 0 AND NonShelterAnimal = 0 AND (EntryReasonID = 11 OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatDOA, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE DiedOffShelter = 0 AND NonShelterAnimal = 0 AND (EntryReasonID = 11 OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatDOA, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE DiedOffShelter = 0 AND NonShelterAnimal = 0 AND (EntryReasonID = 11 OR IsDOA = 1) AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticDOA, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (3, 7) AND AsilomarOwnerRequestedEuthanasia = 0 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogSurrender, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (3, 7) AND AsilomarOwnerRequestedEuthanasia = 0 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 1 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogSurrender, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (3, 7) AND AsilomarOwnerRequestedEuthanasia = 0 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth <= DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatSurrender, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (3, 7) AND AsilomarOwnerRequestedEuthanasia = 0 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID = 2 AND DateOfBirth > DateBroughtIn - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatSurrender, (SELECT COUNT(*) FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE EntryReasonID IN (3, 7) AND AsilomarOwnerRequestedEuthanasia = 0 AND DateBroughtIn >= '$@from$' AND DateBroughtIn <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticSurrender, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogAdoptionStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogAdoptionStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatAdoptionStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatAdoptionStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticAdoptionStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogAdoptionSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogAdoptionSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatAdoptionSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatAdoptionSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 1 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticAdoptionSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogReclaimStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogReclaimStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatReclaimStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatReclaimStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticReclaimStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogReclaimSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogReclaimSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatReclaimSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatReclaimSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType = 5 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticReclaimSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogTransferOutStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogTransferOutStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatTransferOutStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatTransferOutStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticTransferOutStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogTransferOutSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogTransferOutSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatTransferOutSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatTransferOutSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID INNER JOIN owner ON owner.ID = adoption.OwnerID WHERE MovementType = 3 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticTransferOutSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7, 8) AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogOtherLiveStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogOtherLiveStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatOtherLiveStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatOtherLiveStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (1, 2, 8) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticOtherLiveStray, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7, 8) AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultDogOtherLiveSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 1 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorDogOtherLiveSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth <= MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS AdultCatOtherLiveSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID = 2 AND DateOfBirth > MovementDate - INTERVAL '6 months' AND NonShelterAnimal = 0) AS JuniorCatOtherLiveSurr, (SELECT COUNT(*) FROM animal INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE MovementType IN (4, 6, 7) AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND MovementDate >= '$@from$' AND MovementDate <= '$@to$' AND speciesID NOT IN (1, 2) AND NonShelterAnimal = 0) AS OtherDomesticOtherLiveSurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (1, 2, 8) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogDiedCareStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (1, 2, 8) AND NonShelterAnimal = 0 AND PutToSleep = 0 AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogDiedCareStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (1, 2, 8) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatDiedCareStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (1, 2, 8) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatDiedCareStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (1, 2, 8) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID NOT IN (1, 2)) AS OtherDomesticDiedCareStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogDiedCareSurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND NonShelterAnimal = 0 AND PutToSleep = 0 AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogDiedCareSurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatDiedCareSurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatDiedCareSurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND NonShelterAnimal = 0 AND PTSReasonID IN (2, 9, 10) AND speciesID NOT IN (1, 2)) AS OtherDomesticDiedCareSurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogEuthNAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogEuthNAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatEuthNAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatEuthNAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID NOT IN (1, 2)) AS OtherDomesticEuthNAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogEuthNASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogEuthNASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatEuthNASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatEuthNASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (12, 13, 14, 4, 23, 25, 21, 22) AND speciesID NOT IN (1, 2)) AS OtherDomesticEuthNASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogEuthAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogEuthAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatEuthAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatEuthAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (1, 2, 8) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID NOT IN (1, 2)) AS OtherDomesticEuthAStray, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogEuthASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogEuthASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatEuthASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatEuthASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND EntryReasonID IN (12, 4, 9, 5, 3, 7) AND PutToSleep = 1 AND AsilomarOwnerRequestedEuthanasia = 0 AND PTSReasonID IN (11, 16, 17, 18, 24) AND speciesID NOT IN (1, 2)) AS OtherDomesticEuthASurr, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND PutToSleep = 1 AND PTSReasonID = 20 AND speciesID = 1 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultDogOutReqEuth, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND PutToSleep = 1 AND PTSReasonID = 20 AND speciesID = 1 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorDogOutReqEuth, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND PutToSleep = 1 AND PTSReasonID = 20 AND speciesID = 2 AND DateOfBirth <= DeceasedDate - INTERVAL '6 months') AS AdultCatOutReqEuth, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND PutToSleep = 1 AND PTSReasonID = 20 AND speciesID = 2 AND DateOfBirth > DeceasedDate - INTERVAL '6 months') AS JuniorCatOutReqEuth, (SELECT COUNT(*) FROM animal WHERE DeceasedDate >= '$@from$' AND DeceasedDate <= '$@to$' AND NonShelterAnimal = 0 AND DiedOffShelter = 0 AND PutToSleep = 1 AND PTSReasonID = 20 AND speciesID NOT IN (1, 2)) AS OtherDomesticOutReqEuth [Annotation 2020-07-24 100450](//muut.com/u/sheltermanager/s2/:sheltermanager:C899:annotation20200724100450.jpg.jpg)

@mmover: 2020-07-24 16:10:18
I should also mention that I didn't include transfer ins to the total intake number queries as those should stay separate.

@mmover: 2020-07-24 16:24:43
I also just noticed that the forum changed some of the query text to sunglasses emoji I don't know why, lol. Anywhere there is that emoji it's supposed to be '7)'. Sorry about that.

@mmover: 2020-07-24 17:17:28
Well I just noticed that May's numbers are adding correctly. But March's isn't. Which makes me think it is a data entry error. So I will have to go back and check the DOAs from the beginning of the year. I'll get back to you if I find the problem.

@mmover: 2020-07-24 19:31:18
It was a data entry error. My DOA row was correct because it was pulling data by either the entrycategoryID or IsDOA. It appeared as if my Total Intake wasn't adding the DOAs when really it was just not double counting them since that query pulled the same way. The entrycategory for every DOA wasn't entered correctly ( as Stray -DOA) instead it was entered as 'Stray - Animal Control' but the disposition was done correctly. Going back and fixing them changes my Intake:Stray line because the DOAs are no longer included. I think to be on the safe side I will also add a line in the section of queries that states AND IsDOA = 0 as a back up incase my staff enter the entry category wrong again. Which hopefully after this they will not... :)


Bulk Regimen-Litter

@sarahless: 2020-07-23 14:37:10
When adding a bulk regimen, should I be able to filter out a litter? I see the option but the litters don't show up. [Screen Shot 2020-07-23 at 8](//muut.com/u/sheltermanager/s1/:sheltermanager:VmHQ:screenshot20200723at8.34.38am.png.jpg)

@robinrt: 2020-07-23 14:53:49
Hi, have you added your litters under ASM->Edit Litters ? Litters that still have active members and an expiry date that has not yet passed should be shown.


Inventory

@friendlyreesy: 2020-07-21 16:03:52
We are a small non profit bird rescue. We would like to track the cages we have in our storage unit by inventory number, dimension, and picture. Stock doesn't offer the picture option which makes is more difficult to see if a particular cage is appropriate for a specific bird who needs an upgrade. And we can't check the cage out to a specific animals with the option to return to inventory if the bird is adopted and doesn't need the cage or god forbid passes away. It would also be helpful to track large items such as play stands. Any ideas?

@robinrt: 2020-07-22 09:16:49
I'm afraid I don't see a workaround for that. A few people have asked for inventory management of equipment and allowing a picture of the item seems like something that would be good to have. I'll update the development ticket on that to include support for a picture.


SQL interface commands not supported

@hbcajonb: 2020-07-20 21:20:10
I'm trying to declare variables and string concatenate in the SQL interface. Any way to accomplish this? No luck when I use dynamic SQL commands such as declaration ~~~DECLARE @flagstring varchar(50);~~~ and string concatenate ~~~AdditionalFlags= AdditionalFlags+ 'flagstring'+'|')~~~. Throws syntax errors. I tried commands that work in custom Report SQL field like ~~~$CONST flag ANIMALFLAG$~~~ but these also seem invalid in SQL interface. Could not figure out what version SQL is running through ~~~SELECT @@VERSION~~~. Any ideas?

@robinrt: 2020-07-22 09:08:26
It's PostgreSQL 9 or 11 depending on which server you're on. The syntax you appear to be using looks like Microsoft SQL Server. The special tokens in the report SQL are substituted by the report engine for values at runtime (eg: $ASK ANIMALFLAG$ asks the user for input and then puts it in the query) or removed before anything is sent to the database. If you need to use variables or program flow, that will only work in stored procedures, which you then call as part of your query. I'm pretty sure that's the same for all databases.


Compatibility Question

@dustinwloring1988: 2020-07-20 00:01:58
I was interested in using this for our shelter but was wandering about some functionality. If when I create a new animal can I have it also be added to my WordPress website? Thanks in advice for any help.

@julian-poidevin: 2020-07-20 08:25:44
Yes ! Wordpress integration is available. You can see an example on my shelter website here : http://mceasso.fr/nos-chats-a-adopter/ See documentation section "30.1.1 Wordpress" for more details : https://sheltermanager.com/repo/asm3_help.pdf

@dustinwloring1988: 2020-07-20 22:10:15
Thanks for the quick reply. I guess I was calling it the wrong thing I wanted to public to my WordPress website's database. My website is https://www.belmontcountyanimalshelter.com and instead of entering the animals on the back end as a "Post" I wanted to upload the shelter manager database to my database. Is this possible?

@julian-poidevin: 2020-07-21 08:30:11
I see you are using the same wordpress theme as my shelter "PetRescue". ASM allows CSV exports but I don't think of any way you could feed that .CSV to your Wordpress website I'm sorry.

@robinrt: 2020-07-22 09:15:36
There is an HTTP API that you can use to retrieve the data from your Wordpress site and then transform it. There's a single call that will inject the animals into your Wordpress pages via Javascript (which you can then style with your normal page CSS). There's even HTTP calls that will generate a full page that you can embed in an iframe. You can export your data as CSV, you can retrieve it programmatically over HTTP as XML or JSON. You could use any of these techniques to get the data and insert it into your WP database yourself though if you need the data to be in your website database. We do have some customers who do this. https://sheltermanager.com/repo/asm3_help/website.html


Creating a daily feeding chart for all the animal in the shelter

@johnsey: 2020-07-19 17:25:24
Hello, how would I go about creating a report that would display the dog's location, name and what they have to eat per meal


Bug with Rotate Media Clockwise...

@connor9220: 2020-07-18 05:00:11
{ id: "rotateclock", icon: "rotate-clock", enabled: "multi", perm:" cam", tooltip: _("Rotate image 90 degrees clockwise") }, There is a space in front of cam keeping everyone but super users from seeing it.

@robinrt: 2020-07-18 11:47:09
that's a really good spot, thanks!

@connor9220: 2020-07-18 17:09:57
I wonder how I found it? :) I used route-clock as the template for my new water mark feature. Cut'n & pasted it and got everything working, then tried it as a different user and the button was no where to be found. Doh!!


Media feature -- Water Mark / Post Process Script

@connor9220: 2020-07-18 02:28:36
I just finished writing a simple python script to watermark a image. It can take an argument of the animals name. It will then watermark the photo with the rescues logo, and add the animals name sized correctly to fit in the width of the photo on the bottom. I would like to include a button in the media center that lets them click the checkbox for each photo, then they can click the watermark button, and it calls my script (passing the image and animal name to it, currently it does everything on disk). Can you give me some guidance on what functions to look at to do this? I see you have a rotate left / right function and I'm thinking of using one of those to model after but would like some input before I proceed and waste my time.

@robinrt: 2020-07-18 11:48:50
Yes, that would be the way to do it - duplicate one of the existing functions like rotate. Copy the button, call media.ajax with your parameters and in code.py add a post_mode (where mode is the name of your mode parameter) method to the media class to handle the data.

@connor9220: 2020-07-18 17:15:56
That's what I did. Copied the rotate-clock button. Only issue I had was trying to figure out how to get the animalName from the media ID. I ended up running a SQL query to pull that in the media function. It's 100% functuinal now, I just need to figure out if I want to move some of the hardcoded options to the asm3.conf, or perhaps a configuration tab. watermark file location x/y offset for watermark (from lower right hand corner) shadowColor fillColor stroke font file location font margin

@robinrt: 2020-07-19 09:19:33
Would that function need to be so interactive and require a button? I appreciate you've done the work now (and found a bug!), but I wonder if it would make sense to just hook media.py / attach-file-from-form and watermark all images as they are uploaded automatically - or get-image-file-data to dynamically add the watermark as images are retrieved and returned to the frontend.

@connor9220: 2020-07-19 18:41:18
The above parameters aren't intended to be interactive. They just need to be in a config file or something so the admin can set up the position of the watermark logo and the animal name overlay. (and set the font they wish to use) As for automatically watermarking on upload or retrieved, *IF* that was done, I say watermark on upload, as I don't know how efficient my water mark code is. I run through several iterations on the font overlay to determine the correct size. As for use, we wouldn't want that. Some of the photos have already manually been watermarked. and the users are also uploading scans/photos of ACO tickets and other documents. I even went so far as to toggle the option "Exclude new animal photos from publishing" so those other images wouldn't get published.

@connor9220: 2020-07-19 22:35:44
Changes pushed to my github account. https://github.com/Connor9220/asm3 I'm maintaining a separate branch with site specific changes for MAARC, but the master branch should only contain the updates for the watermark feature. Let me know if you think I need to change something.

@robinrt: 2020-07-20 11:09:36
Thanks, I'll take a look.


Getting OperationalError: (1305, 'FUNCTION asm.REGEXP_REPLACE does not exist')

@connor9220: 2020-07-17 06:29:43
This looks like my version of MySQL doesn't support this. I'm running 5.7.30. Doesn't look like it was introduced until MySQL v8.0. Any ideas? Can't really upgrade MySQL at this time. Looks like it's primaryly breaking on sql_atoi function (Removes all but the numbers from fieldexpr)

@robinrt: 2020-07-17 10:08:56
In your codebase, copy the sql-regexp-replace function from src/asm3/dbms/sqlite.py over the one in mysql.py - it will make regexp_replace a null operation.

@connor9220: 2020-07-17 18:47:25
I actually was able to create a mysql function to handle this. So, it now works. :)


Missing JS file.

@connor9220: 2020-07-16 23:49:17
The schema.js file is missing in release 43 and on git. Causing issues with the reports editor and SQL interface. No bundle directory under static/js either... ??

@robinrt: 2020-07-17 10:07:17
It's part of the build - "make schema".

@connor9220: 2020-07-17 23:23:26
Yup. Figured that out. Up till this point, I was just using what was in the src directory. Didn't think about having to build anything. One odd thing about the Makefile. The script/jsmin/jsmin was missing. I found it in node_modules/jsmin/bin and copied it to where the make file was expecting it and was able to build without any errors after that. It would break the rollup/minified options if toggled to true, which was something I was just turning on in our deployment.

@robinrt: 2020-07-18 11:45:43
there's a make target to compile script/jsmin/jsmin.c - it's much faster than the js version. Since then though, it's been retired in the latest codebase and we use js jsmin with the rollup only.


Restore templates

@nigglesnush: 2020-07-16 23:07:33
I'm regretting deleting a lot of templates that were available when I set ASM up. How do I get them back?

@robinrt: 2020-07-17 10:10:50
Create a new template for each one and copy/paste the HTML source of the original template under Tools->Source. You can find the source for the templates here: https://github.com/bobintetley/asm3/tree/master/src/media/templates If you're a sheltermanager.com customer, email help@sheltermanager.com and let us know which ones you want restoring and we'll do it for you.


Rescue groups FTP not passive.

@connor9220: 2020-07-15 22:08:07
Rescue Groups FTP publisher isn't using passive FTP.. They for, on amazon ec2 instance, it's throwing errors.. FTP chdir to import/pictures ALERT: Failed uploading C2019012-1.jpg: 500 Illegal PORT command. asm3.configuration.rescuegroups_password(dbo), 21, "", False) Probably should be asm3.configuration.rescuegroups_password(dbo), 21, "", True)

@robinrt: 2020-07-16 09:34:21
Interesting, we aren't seeing any problems on our production servers and there's even a note in the code (which I think I made!) saying that RG only accept active connections and passive will fail. Things do change though and maybe that isn't the case any more. If you make your suggested change to your install, does that make it work for you? Or is the problem really firewalls and active connections with EC2?

@connor9220: 2020-07-16 18:54:41
I made the change and it works.

@connor9220: 2020-07-16 18:57:56
But yea, EC2 doesn't like active connections with FTP. I've always had to go passive when using cli ftp.


Lost report searched

@vsauder: 2020-07-14 20:57:42
The default listing for the search is by zip code. Is there a way we can change this default to the report number or lost date?

@robinrt: 2020-07-15 08:46:14
Hi, are you talking about the lost animal search results screen? You can click any of the column headings to change the sort. I thought we had the default as the number though, zipcode would be an odd choice for the default sort.

@vsauder: 2020-07-15 15:28:48
That's the screen. For some reason with the last update, it switched to the zipcode for the default. Sorting still works correctly. Not sure if this was an error on our end or with the update.


Where are the options for microchip publishers?

@connor9220: 2020-07-14 20:23:40
We're looking microchip options in the manual, but, I don't see the tabs in our interface.. What am I missing? [Screenshot from 2020-07-14 15-22-16](//muut.com/u/sheltermanager/s3/:sheltermanager:NZ8r:screenshotfrom20200714152216.png.jpg)

@robinrt: 2020-07-15 08:44:28
I'm afraid they are not available in the open source version due to us having various support agreements with microchip registries.


HTML Publish

@connor9220: 2020-07-14 20:11:09
The publish to html option looks like it works, but, I can't find any files in the folder I specified. Is that a relative to the root asm folder? What permissions does it need to be? I have it set as adoptables and have a folder created in the httpdocs directory of that name, and nothing. I tried specifying the full path too.. nothing. No errors in the logs either. What am I missing?

@robinrt: 2020-07-15 08:45:17
It wants an absolute path. Are there any error messages in the publishing logs after running that make it clearer?

@connor9220: 2020-07-15 20:46:26
No errors what so ever. I'll try it again with absolute. I'll make the directory writable to everyone to see if that's the issue.

@connor9220: 2020-07-15 21:41:34
etrieved image: 39::17.jpg::C2019012.jpg generating thumbnail /tmp/tmpPCnf2t/C2019012.jpg -> /tmp/tmpPCnf2t/tn_C2019012.jpg Retrieved image: 39::17.jpg::17.jpg generating thumbnail /tmp/tmpPCnf2t/17.jpg -> /tmp/tmpPCnf2t/tn_17.jpg C2019012 -> 1.html SUCCESS: YProcessed: C2019012: Tigress (1 of 10) Processing: D2019004: Charlie (2 of 10) Should it be saving to /tmp even though I have something in the Publish to Directory config option?

@robinrt: 2020-07-16 09:31:34
No, it should not. It only uses a tmp folder if one hasn't been specified or if you've got FTP info set.

@connor9220: 2020-07-16 18:55:21
I gave up on it. Found that using the service API works better for our needs. Not sure what the issue is.

@robinrt: 2020-07-17 10:12:09
That's probably best, we want to retire the old static HTML publisher at some point and everything it does can be done better by the service API.

@arrowhead: 2021-11-08 22:25:19
So now that you "retired" the old html publisher our adoptable animals haven't uploaded or updated in almost a month and there isn't a manual publish option. How exactly do you set up an "API" to publish our animals? How do we get our animals into our website now?

@robinrt: 2021-11-09 09:49:36
Hi, I've emailed instructions. Are you the main account contact? Warning emails were sent out starting in August a couple of months ahead of it being turned off on 18th October.


Remove auto-suggest words while entering data.

@hbcajonb: 2020-07-14 00:25:09
Previously entered words show up in auto-suggest. Some of them were misspelled. Is there any way to remove them or clear the history?

@robinrt: 2020-07-14 09:24:03
Where are the autocomplete suggestions appearing?

@hbcajonb: 2020-07-14 21:43:34
In the "State" field of an address when creating a person.

@robinrt: 2020-07-15 08:42:27
Ah. The source of that list is your previous person records. If you search for the mispelled versions and correct them on those person records, it will fix the list automatically.

@hbcajonb: 2020-07-17 21:19:18
Neat! Thank you.


Copy Paste Media within ASM possible? Can I download to Local File?

@hbcajonb: 2020-07-13 22:33:56
I would like to copy PDF media from a person (adopter) into the adopted cat's media. Is there a way to do this within ASM? Or is it possible to download the PDF out of ASM to a local drive?

@julian-poidevin: 2020-07-13 22:36:16
I would say : open the PDF in the Person's Media tab by clicking on it, then save the document et re-upload it into the cat's media ?

@hbcajonb: 2020-07-13 23:42:50
Yes good suggestion, but not what I was looking for. Sorry because I described my problem wrong earlier. It's a HTML form received through Incoming Forms that I need to duplicate from person into animal media. (Opening as PDF messes up the sizing and text won't fit on the page. So I can't download it directly. And the form has been deleted or expired from the Incoming Forms page, so I can't attach it.) What I've had to do is open the HTML form, trim out rows, and print only the first two pages to a local PDF, then re-upload as PDF. It's a time-consuming process and I was hoping for a more efficient drop and drop type solution.

@hbcajonb: 2020-07-14 00:33:36
I found a solution: Open the HTML file in adopter's media. Select all + Copy. Then, in animal's media create a new document. Paste.


Foster emails for dogs with meds due

@sarahless: 2020-07-13 14:42:16
We would like to send out email reminders to fosters that have medications due...can I add "email" to one of the current medications reports?

@robinrt: 2020-07-13 16:06:54
Hi, there's a special function for doing just this. It's under Settings->Options->Medical->Send a weekly fosterer email. There's more info about it in the manual here: https://sheltermanager.com/repo/asm3_help/options.html#medical

@sarahless: 2020-07-16 21:18:42
Thanks for the quick reply! Our tracking process is a little different and we like to send a link to a form to fill out so that is a great tool but it would not work in this case. Any other ideas I can try out?

@kymkiki: 2020-07-29 09:58:39
I was also looking for a solution for this. Does this only email fosterers? Or can you also email people who have adopted - for example, when their kitten is old enough to be neutered? Is it possible to integrate with external mail tools?

@robinrt: 2020-07-29 10:05:55
The system will not email adopters automatically. It's something we considered too risky since people tend to get angry at unsolicited email, so we always require a user to "pull the trigger" as it were. The Mail menu allows for mail merges that let you email groups of people. There are mail merges that allow you to email all adopters in a period (Non-Returned Adoptions) and there is one that does what you describe called "Non-Neutered/Spayed Adopted Animals Aged Over 6 months". You can also export the data for use with external mail tools from the same screen. You can install mail merges under Settings->Reports->Browse sheltermanager.com

@kymkiki: 2020-07-29 11:06:39
Oh wow thanks for the fast reply. So if I check the "Non-Neutered/Spayed Adopted Animals Aged Over 6 Months" does that mean that each adopter would get the email when the animal's age becomes more than 6months? (Providing all of the animal & adopter information is available) Is there any way for me to preview these mail merge emails so I can see what goes out? :)

@kymkiki: 2020-07-31 13:54:48
Ohh I figured this out - it adds it to the mail merge option and then you can pull CSVs or send bulk mail.

@robinrt: 2020-08-01 08:58:55
Yes, there's a view matching records slider as well to preview the contents.

@kymkiki: 2020-08-01 13:02:22
Yeah - starting to understand how everything fits together now, I created a new template and tested it & it works perfectly. Thanks for your help :)

@audraf: 2021-08-24 20:41:04
Is it possible to edit the weekly email that is sent? Like if I don't want it sent for certain things?

@robinrt: 2021-08-25 10:53:30
Not to that level of detail. You can only choose whether or not to send the emails even if there are no reminders and you can add a custom message to the email. Those options are under Settings->Options->Medical

@audraf: 2021-08-25 16:46:46
Thanks. Is there any other way of letting fosters know when vaccines are due?

@robinrt: 2021-08-25 16:54:15
you could possibly write a mail merge and run it manually to email fosterers (under Settings->Reports). It would be a lot less convenient than the automated weekly email though? What's the issue with using the weekly email?

@audraf: 2021-08-25 23:33:54
We're having some emails go to folks about completed items so people are making appointments for things that don't need to be done. Perhaps it's how medical is doing things on their end, I'm not sure. Suggestions certainly welcome.

@robinrt: 2021-08-26 09:12:58
Only overdue and upcoming ungiven items should be included on the email and never any items that have been completed. If you've got some examples of some of these items that are being included and shouldn't be that we could take a look at, drop us an email at help@sheltermanager.com with your account number.

@audraf: 2021-08-26 17:16:34
Thanks, I'll look to see if I can find it

@hilarybrogers: 2021-09-01 00:17:13
robinrt-is there a section of the help doc/user guide that walks through how to set up the weekly email reminder sent to fosters with animals that have medications due?

@robinrt: 2021-09-01 13:41:07
The docs mention it here. There isn't really much that can be configured, it's just ticking a box under Settings->Options->Medical. https://sheltermanager.com/repo/asm3_help/options.html#medical

@hilarybrogers: 2021-09-01 15:14:02
Sorry to be dense, but where is settings?

@robinrt: 2021-09-01 15:35:28
It's on the menu bar at the top. If you don't see it, your user has not been given permissions to it.


Report for an Added Type on the Details Page

@ears: 2020-07-11 21:09:02
On the details page, I added a TYPE titled Critical Care. I need to create a report on the Critical Care cases over the last several months to report to the grant committee on how the money they gave us was used. I have looked in several places, but since I added the title, I am afraid I must create the report and am not good at that, sadly.

@robinrt: 2020-07-12 09:57:53
Hi, that isn't necessary. There are many reports that break down by type, eg: In/Out by Type, Intakes by Type with Outcomes


SQL commands to alter report

@fletch654: 2020-07-08 01:09:07
I need to change the "Animals Without PDF Media" report to look at animals no longer in the shelter. The original report looks at only in-house animals. We are a spay/neuter assistance organization so we don't use ASM as a shelter would. Our animals are already returned to the owner before they're entered into the system. I need to know if any of them do not have pdf copies of their paperwork. Any help would be appreciated.

@robinrt: 2020-07-08 11:44:21
Hi, edit your copy of the report under Settings->Reports. There will be a section in the WHERE clause of the SQL that says Archived = 0 - it's this that controls whether the report only searches shelter animals. Change Archived = 0 to Archived >= 0 to have it consider all animals.

@fletch654: 2020-07-08 16:02:57
Thank you for your response, but it's still not working. Report changed to: SELECT a.AnimalName, a.ShelterCode, t.AnimalType, i.LocationName FROM animal a INNER JOIN animaltype t ON t.ID = a.AnimalTypeID INNER JOIN internallocation i ON i.ID = a.ShelterLocation WHERE a.Archived > = 0 AND 0 = (SELECT COUNT(ID) FROM media m WHERE m.LinkID = a.ID AND m.LinkTypeID = 0 AND LOWER(m.MediaName) LIKE '%.pdf') ORDER BY t.AnimalType, a.AnimalName Message when report is run: syntax error at or near "=" LINE 5: WHERE a.Archived > = 0 AND ^ No data to show on the report.

@robinrt: 2020-07-08 16:59:34
There should not be a space between > and = - it is the same operator, a.Archived >= 0

@fletch654: 2020-07-09 05:05:14
Thank you soooooo much. I was actually able to add the DateBroughtIn to the report all by myself. Then I was able to re-order the report by that date. Thank you, thank you, thank you.


Bulk change animals on adopted animals?

@hbcajonb: 2020-07-08 00:52:00
Trying to bulk flag one hundred adopted animals, but they aren't showing up in the search. Any way to get them to show up in search, or bulk edit them some other way?

@robinrt: 2020-07-08 11:42:34
Yes, you can use the CSV import module. As long as your file has an ANIMALCODE column that corresponds to the shelter code field of an existing animal record, you can specify an ANIMALFLAGS column and the system will update those animals with the flags you set. https://sheltermanager.com/repo/asm3_help/csvimportfields.html#csvimportfields

@hbcajonb: 2020-07-09 00:59:31
Thanks for the suggestion. I still have two issues. Could you help me a step further with the CSV import? It is creating a new animal even when I specify the ANIMALCODE and check "Merge duplicate records". Also, it is not applying custom animal flags. Here is my csv for a testing: ANIMALCODE,ANIMALNAME,ANIMALFLAGS,ANIMALDOB O2020212,Experiment29825,"notforadoption, DCDF COVID 2020 Grant",1/1/2001

@robinrt: 2020-07-09 08:49:27
That looks like you're doing everything correctly. The only thing I can think of is that perhaps the code is wrong - perhaps you're looking at the short code field instead of the main shelter code or a digit is incorrect.

@hbcajonb: 2020-07-20 22:25:28
I tested the CSV import again. Still have problems. And I ran an SQL select query to see what changes the CSV import made. It looks like the ANIMALCODE is working now. No new animals are created when an existing number is specified. But the fields ANIMALNAME, ANIMALFLAGS, and ANIMALDOB are not updating correctly. The animal flag is being entered into the database with '|' character between every letter in the string, like so: n|o|t|f|o|r|a|d|o|p|t|i|o|n|||'|D|C|D|F| |C|O|V|I|D| |2|0|2|0| |G|r|a|n|t|'||| The substring 'n|o|t|f|o|r|a|d|o|p|t|i|o|n|' is recognized as a 'notforadoption' variable and displays properly as 'not for adoption' in ASM. But custom flags are not recognized or displayed. The ANIMALNAME and ANIMALDOB fields do not appear to update the database at all. Is this by design? Or is there a specific date and time format that the CSV import module requires? Also, the variable names in the database schema are named differently. Is there any way to see which database variables match which CSV import variables? CSV import file: ANIMALCODE,ANIMALNAME,ANIMA LFLAGS,ANIMALDOB O2020225,jonb_SQL_test,notforadoption|'DCDF COVID 2020 Grant'|,'2001-07-02 00:00:00' SQL query: SELECT animal.dateofbirth, animal.ShelterCode, animal.AnimalName, animal.AdditionalFlags from animal WHERE animal.ShelterCode like 'O2020225'; SQL output: ADDITIONALFLAGS ANIMALNAME DATEOFBIRTH SHELTERCODE n|o|t|f|o|r|a|d|o|p|t|i|o|n|||'|D|C|D|F| |C|O|V|I|D| |2|0|2|0| |G|r|a|n|t|'||| jonb_SQL_test2 2008-07-02 00:00:00 O2020225


Command line data entry or SQL possible?

@hbcajonb: 2020-07-08 00:13:38
I have a csv file of one hundred animal names with payment amount, date, and payer. Is there any way to input these payments through the command line instead of manually clicking through the graphical interface? Is there any way to add records to the database using SQL commands?

@robinrt: 2020-07-08 11:40:34
You can add them manually using SQL, but it's going to be hard work if you don't know SQL already. There is a CSV import module that can handle animals and payments. The info is here: https://sheltermanager.com/repo/asm3_help/configuration.html#import-a-csv-file

@hbcajonb: 2020-07-09 01:14:56
Great! I know SQL. How would you recommend I go about it? I'm thinking of Exporting a "SQL dump" through Settings/SQL Interface. View the database and test the update commands locally. Then submit them through the SQL interface. Would that work?

@robinrt: 2020-07-09 08:47:15
Yes, that would work. The main animal and movement table schemas are also documented in the manual here: https://sheltermanager.com/repo/asm3_help/databasetables.html


Word Keys - LitterMates

@vsauder: 2020-07-07 15:19:55
I have created a document utilizing the word key, LitterMates. When there is no littermate listed it adds all the animals that do not have litters assigned. Did we miss a default setting somewhere?

@robinrt: 2020-07-07 15:26:08
Thanks, it's a bug. I'm applying a fix now for tomorrow's deployment.

@vsauder: 2020-07-07 15:26:29
Thanks!!


Custom Fields don't line up.

@connor9220: 2020-07-04 00:55:18
I added some custom Fields, and they don't line up. [Screenshot from 2020-07-03 19-48-56](//muut.com/u/sheltermanager/s1/:sheltermanager:n8y2:screenshotfrom20200703194856.png.jpg) Here is after I fixed it in my code base.. however, I'm not sure if it'll break anything in other parts of the system [Screenshot from 2020-07-03 19-54-41](//muut.com/u/sheltermanager/s1/:sheltermanager:ylON:screenshotfrom20200703195441.png.jpg) Can you look at this and fix it correctly?

@robinrt: 2020-07-04 11:13:15
They line up with the two columns of rabies tag?

@connor9220: 2020-07-04 23:06:51
I just looked really strange. The rabies tag looked like it was all alone before adding custom fields, and then the new Yes/No not lining up with the others.. just made it odd looking.


Best way to handle boarding and extended vet stays?

@connor9220: 2020-07-03 21:29:09
What's the best way to keep track of animals who are boarded, or at the vet for extended time? Internal Locations? Transport? Mark them as Foster and use the Boarding facility / Vet as the Foster? They key difference being, that we accrue per day charges, and it's important to keep track of them so that none of them slip through the cracks.

@robinrt: 2020-07-04 11:14:19
I'm afraid there isn't really a good way to handle this. We have got a boarding module specced out that would work, but it's still on the development list for later this year. You could use internal locations as you said along with something like the "time in location" report to make a rough calculation.

@connor9220: 2020-07-04 23:13:59
What looks like a good possibility would be a Movement type of Boarding -- which acts like fostering in most respects, but, different so that we can run a separate report. Would keep them in inventory, and we could see where they're at. When you go to choose your Boarding place (vs foster) It would only list out People flagged as "Boarding" Which could include any vet office flagged as such, training facilities, and 3rd party boarding facilities.

@jarnold: 2021-07-28 00:59:01
Yes, the ability to amend/edit "Movement Type" would be SO helpful! You can add other options to other types, just not Movements. We offer an Emergency Boarding service for free and it would be helpful to track - not only for new animals using this program but also for animals previously adopted from us (right now, we'd have to create a copy/duplicate file to track in this situation).


Looking for -- Foster

@connor9220: 2020-07-03 21:26:29
So, the Looking for section is great, but, it's just not that useful for us for Adoption. We just don't have that many people coming in saying, put me down if you have such and such to adopt. What we really want is to use it for people who can foster. We have fosters lined up who are willing to foster specific things, like small and medium dogs, or senior dogs, or kittens and dogs etc etc.. The looking for only lets us do one criteria, AND, we can't differentiate wither it's Adoption vs Foster. Can this be expanded to include additional criteria, and support for fostering?

@robinrt: 2020-07-04 11:15:26
I don't know how many criteria you have, but many people just add person flags for these. Eg: Foster - Small Dogs, Foster - Senior Dogs, etc. The find person screen lets you find combinations of flags as it uses AND, so to match a person must have every flag you specify in the dropdown.

@connor9220: 2020-07-04 23:10:37
I suppose that's a possibility. I just like the idea of using the People Looking for function to match up any animal with a possible foster. Typically, we have maybe up to 3 or 4 criteria.. Small, Medium, Special Needs, Senior (dogs) Or Kittens, special needs etc etc.. Stuff like that.


Help/Feature Request: Create an Invoice (clone of Receive Payment Screen)

@ibesky: 2020-07-03 19:48:11
I'm trying to figure out how to more easily create a multi-line invoice/receipt # without having to do a lot of backtracking and editing, especially on mobile so I can email a payment link to a user so they can pay their associated redemption fees. How do I/is there a functionality to create a multi-line invoice (can there be a "due date" option in the receive payment screen like there is on the individual new payment popup? )? For example, a majority of our animals have to have a rabies vaccine and a license issued before they go home, with fees paid including an additional redemption fee. I managed to figure out how to get everything on a single invoice/receipt (financial > receive a payment, the go back into all of the lines and change date received to date due and this can be cumbersome on mobile), but when I try to request payment, I can only select/see one "line" of the invoice (workaround - made an email template that I can easily edit on mobile to change prices if needed). Paypal and Stripe bill the total amount of the receipt if and only if I put everything in as receive payment and then go back and change all of the dates from received to due. Is it possible to make this easier or am I thinking to hard and there is already a way to do it? I'm trying to make this as simple as possible since many of my people are no technologically inclined. Thanks in advance for any insight/assistance/awesome nerdyness.

@robinrt: 2020-07-04 11:12:26
Hi, turn on the option Settings->Options->Accounts->When receiving multiple payments, allow the due and received dates to be set. This lets you see and set both dates when entering the payments. If you have more due than received payments you could also turn on Settings->Options->Movements->When creating payments from the Move menu screens, mark them due instead of received. This will default the due side of the payment instead of received.

@ibesky: 2020-07-07 21:49:50
THANK YOU!!!! ( I knew I was missing something) That makes it so much easier!


Auto-generate document name

@julian-poidevin: 2020-07-01 08:54:05
It could be great if we could somewhere configure the generated document name (maybe using wordkeys) to automatically name generated documents so we don't waste time renaming it afterwards. Is there already a way to do that ?

@julian-poidevin: 2020-07-01 08:55:43
And.... I just check the documentation, and it's already implemented, sorry for the post...

@julian-poidevin: 2020-07-01 09:01:32
Oh no, I misread the documentation. It's actually not possible currently.

@phread: 2020-07-03 01:25:46
Would definitely like to see this.


Asilomar options

@bramuno: 2020-06-29 05:07:35
Hello, i checked the Lookups section but there is no listing for the "Asilomar Category" drop down list found in the animal Entry tab. Is there a way to add some more options?

@robinrt: 2020-06-29 10:05:05
There aren't. These options are fixed and set out by the asilomar accords. They do not understand other values.


How to keep track of loan furniture in stock

@julian-poidevin: 2020-06-28 00:47:19
Hello, We are using "Trap Loan" feature to keep track of the furniture we loan to people and mostly fosters. We have some furniture that are stored in volunteers houses but that are not currently used. How could we manage stored and available furniture vs. loaned furniture ? We are currently using the "Comment" field to say it's available but it's not ideal. Ideally, it would be great to be able to create a list of available furniture and their location and, when searching for a special furniture _(e.g : I need a big cat litter for a new foster, where can I found one, where is it stored and what's the furniture number)_, being able to assign a furniture to someone with a due date etc... like it's already the case. Thanks a lot


Clinic function

@sjras: 2020-06-22 18:47:16
Can we edit the options for the clinic status'? We need to add a No Call/ No Show option but I can't locate the area to edit those fields. Thanks!

@robinrt: 2020-06-22 19:01:42
No, the clinic statuses are fixed I'm afraid.


Media file migration

@inghamn: 2020-06-22 13:43:57
Years ago, when we were stll using MySQL, I migrated the media files out the database and onto the hard drive of the web server. Now, I'm thinking about migrating them back into the database. Back then, asm migrated the media files for us, at startup, based on the asm.conf. Would this work in reverse? Times have changed, and the way we host ASM has changed. We've moved from physical machines to VMs and are now moving towards Kubernetes. If there's a relatively easy way to migrate the media files back into the database (from the file storage), I can host ASM in a Docker container. I would be willing to write and maintain a production Docker image, if folks are interested.

@robinrt: 2020-06-22 13:50:55
Set ``` dbfs_store = database ``` in your asm3.conf file. You should then be able to run the switch dbfs storage action of the cron.py script. This will read all your existing files and re-store them in the chosen storage scheme. S3 is also available and an option if you have boto3 installed. ``` python3 cron.py maint_dbfs_switch_storage ```


Select species in online application?

@ibesky: 2020-06-18 09:23:41

@robinrt: 2020-06-18 09:37:31
Please give more information about what it is you're after? If it's for the Shelter Animal or Adoptable Animal field types, there is a species box and you choose which species of animals are shown in those dropdowns on the form.

@ibesky: 2020-06-18 13:07:07
I found it! Thank you!


Allow Reservation in Bulk Change Animal Movement

@ketalabama: 2020-06-17 11:12:47
We process applications outside of Shelter Manager and then go thru a process to enter adopter information etc into the system. Sometimes there can be a lag on that and we mark the animals as Reserved by a system user we created for this purpose so they stop publishing out to external adoption sites as available. It would be helpful for us to have Reservation as an option in the Movement dropdown on the Bulk Change Animal screen. If there is already another way to do this please let me know. Thanks

@robinrt: 2020-06-18 09:36:33
Hi, there are simpler ways to do this without creating a fake reservation. The simplest would be to use the bulk screen to set the "Not available for adoption" flag on those animals. You can also create flags called "Exclude from Petfinder" and "Exclude from AdoptAPet" and assign them to your animals (again via the bulk change screen) to prevent them being sent to those services. Remove the flags when you go into the animal's record and process the adoption.


Adjustment to french translation

@timgalia: 2020-06-14 21:48:55
Hi, Being in France I use SM3 in both French and English, mostly the translation is top! but there are one or two niggly things that are causing a bit of confusion to my french colleagues One the main ones is on the add a contact section, 'Buisness' / 'Company' is translated as 'Association' a better replacement for that would be Société ou Entreprise Being an association ourselves my colleagues are reading it too literally and enterinf vets and other buisnesses as a standard contact As we pay for hosting on your servers is it possible to make this small adjustment to the translation file? Many thanks Tim, Association Galia

@julian-poidevin: 2020-06-14 22:00:31
(I'm Julian Vallejo on Facebook that suggested you to post here). Me and my girlfriend did complete the French translation. There are still some errors, thanks for letting me know, I'll check that. You can also directly contact me on my Facebook if you wish

@julian-poidevin: 2020-06-15 20:11:41
Tim, I just checked : in my ASM version (when I put it in English), when adding a new person I either have the choice between : Individual/Couple OR Organization. According to you, what would be the best equivalent in french ? Because "non-profit organization" means "Association" in french. There's also the word "Organisation" in french but it's really not used in that context. Please tell me :-)

@julian-poidevin: 2020-06-22 20:48:03
Tim, can you please get back to me ? Thanks


wish list

@timgalia: 2020-06-14 21:36:19
is there a place to ask for wishes?

@julian-poidevin: 2020-06-14 22:01:56
I guess you can visit the support page of ASM3 website here : https://www.sheltermanager.com/site/en_support.html

@robinrt: 2020-06-15 09:46:31
As a hosting customer, you can also just email us at help@sheltermanager.com


PDF Generation Error

@julian-poidevin: 2020-06-12 12:50:23
Hello, When trying to generate the PDF of the following document (source below), I'm having this errors : *ERRORS* ``` 89.86.90.62:55009 - - [12/Jun/2020 13:49:58] "HTTP/1.1 GET /document_gen" - 200 OK 89.86.90.62:55009 - - [12/Jun/2020 13:49:58] "HTTP/1.1 GET /css" - 404 Not Found 89.86.90.62:55009 - - [12/Jun/2020 13:50:00] "HTTP/1.1 POST /document_gen" - 200 OK ``` *DOCUEMENT SOURCE* ``` <center> <table style="border-style: none; width: 673px; border-color: #FFFFFF;" border="1" width="673" frame="VOID" cellspacing="0" cellpadding="7"> <tbody> <tr> <td width="337" height="224"> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;"><strong><img src="http://mceasso.fr/wp-content/uploads/2020/01/Fichier-1.png" alt="" width="179" height="217" /></strong></span></span></span></p> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;"><strong>MERIGNAC CHATS ERRANTS</strong></span></span></span></p> <p align="CENTER"><span style="color: #4 f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: small;">Association Loi 1901 de Protection Animale<br />Numéro d’agrément : W332023546<br />Préfecture de la Gironde<br /></span></span></span></p> </td> <td valign="TOP" width="308"> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;">BON numéro : 2020 / </span></span></span></p> <p align="CENTER"> </p> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;">CLINIQUE :</span></span></span></p> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;"><<AppointmentFor>></span></span></span></p> <p align="CENTER"> </p> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;">RDV le <<AppointmentDate>></span></span></span></p> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;">à <<AppointmentTime>></span></span></span></p> </td> </tr> </tbody> </table> </center> <p align="CENTER"><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;"><em><<ReasonForAppointment>></em></span></span></s pan></p> <p align="CENTER"><span style="text-decoration: underline;"><strong><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;">Facturation Association M.C.E.</span></span></span></strong></span></p> <p align="CENTER"><span style="text-decoration: underline;"><strong><span style="color: #4f81bd;"><span style="font-family: Cambria, serif;"><span style="font-size: large;">Facturation Convention Mairie de Mérignac</span></span></span></strong></span></p> <p> </p> <p><span style="font-family: Cambria, serif;"><span style="font-size: medium;">Merci de bien vouloir procéder à l’intervention ci-dessus,<br /><u>Chat</u><u> </u><u>:</u> <span style="font-size: 11pt;"><<AnimalName>> (ID : <span style="font-family: Courier New, serif;"><<ShelterCode>></span>)</span><br /></span></span></p> <p><span style="font-family: Cambria, serif;"><span style="font-size: medium;"><<AppointmentComments>></span></span></p> <p> </p> <p><span style="color: #ff0000; font-size: 11pt;"><span style="font-family: Cambria, serif;"><em>(Aucun rajout manuscrit ne sera pris en charge sauf autorisation de <<CoordinatorName>> : <<CoordinatorMobilePhone>>)</em></span></span></p> <p> </p> <p><span style="font-family: Cambria, serif; font-size: 11pt;">Avec nos sincères remerciements pour vos soins,</span></p> <p><span style="font-family: Cambria, serif; font-size: 11pt;">Cordialement,</span></p> <p style="text-align: right;"><span style="font-family: Cambria, serif;"><span style="font-size: medium;">Fait à Mérignac,<br />Le <<Date>><br /><img src="http://mceasso.fr/wp-content/uploads/2020/06/Signature-Juliette-scaled.jpg" alt="" width="154" height="49" /><br /><strong>Juliette TOUBIANA</strong><br /></span></span></p> <p><span style="color: #ff0000;"><span style="font-family: Cambria, serif;"><span style="font-size: 11pt;">L'Association ne prend en charge que les soins notés sur le présent bon.</span><br /><span style="font-size: 11pt;">Tout achat en dehors des actes prescrits sur ce bon est à la charge de la FA.</span><br /><span style="font-size: 11pt;">L’association sera en droit de lui en demander le remboursement.</span><br /></span></span></p> <table style="border-collapse: collapse; width: 100%;" border="1"> <tbody> <tr> <td style="width: 50%;"> <p align="CENTER"><span style="color: #5f497a;"><span style="font-family: Calibri, serif;"><span style="font-size: small;">Association Mérignac Chats Errants<br />Maison des Associations<br />55 av du Maréchal de Lattre de Tassigny<br />33700 Merignac<br /></span></span></span></p> </td> <td style="width: 50%;"> <p align="CENTER"><span style="color: #5f497a;"><span style="font-family: Calibri, serif;"><span style="font-size: small;">Contact : 06 28 26 28 61<br />merignacchatserrants@gmail.com<br />Facebook : MCEASSO</span></span></span></p> </td> </tr> </tbody> </table> ``` I have wkhtmltopdf installed, and I also tried to change HTML-TO-PDF command in asm3.conf to : ``` xvfb-run -a -s "-screen 0 640x480x16" wkhtmltopdf --orientation %(orientation)s %(papersize)s %(input)s %(output)s ``` It didn't help much. What is causing the error ? Thanks

@robinrt: 2020-06-12 16:22:13
My guess would be one of your img src attributes cannot be resolved. wkhtmltopdf is incredibly sensitive to unreachable urls. Other than that, I'm not seeing an error in the output you posted - the POST 200 OK is the server accepting your document for PDF conversion. Try saving your HTML into a file and running it from the command line to get a better idea of the error (or have a look at the console where ASM is running to see what is being sent to stderr).

@robinrt: 2020-06-12 16:24:38
Hmm, I just copied it into a file and ran it locally here - no errors and both images came through fine. Must be something environmental.

@julian-poidevin: 2020-06-13 00:19:58
Thanks for trying ! What additional technical information can I provide to help you find what is the issue ? My wkhtmltopdf version is `0.12.4` My mysql version is `Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)` My imagemagick version `8:6.9.7.4+dfsg-16ubuntu6.8` My nodejs version is `v8.10.0`

@julian-poidevin: 2020-06-13 00:45:01
I may have found something, when trying to do : ``` root@vps759328:~/repo# wkhtmltopdf filehtml.html filepdf.pdf qt.qpa.screen: QXcbConnection: Could not connect to display Could not connect to any X display. ``` Searching on the google I found : https://unix.stackexchange.com/a/192646 I got it working using the following commande line : ``` html_to_pdf = xvfb-run -- /usr/bin/wkhtmltopdf --orientation %(orientation)s %(papersize)s %(input)s %(output)s ```

@robinrt: 2020-06-13 08:16:01
Yes, the version of wkhtmltopdf bundled in Debian and Ubuntu requires an X server to run, so it needs to be inside xvfb if your server is headless.


Sign button is not available

@julian-poidevin: 2020-06-08 23:33:32
There was a post about this 9 weeks ago but it didn't get an answer. Is it normal for open source users to not have the sign button and the signing functionality disabled? Thanks !

@robinrt: 2020-06-09 08:58:29
Signatures are disabled by default. You need: ``` electronic_signatures = touch ``` in your asm3.conf file.

@julian-poidevin: 2020-06-09 11:10:55
Thanks !

@julian-poidevin: 2020-06-12 12:37:59
I did create a pull request to add this in the example configuration file


Marking field

@jimdunne: 2020-06-06 18:28:38
When I used the stand alone version of ASM, I could add markings in a field under the 'Health and Identification' tab of an animals record. Now I have the hosted version, this field has disappeared and I can't see any way to 'switch it on'. Is this field still available, and if so, how do I switch it on please.

@adoptamutt: 2020-06-06 19:53:06
I think that is under the Notes Section now.

@jimdunne: 2020-06-06 20:40:19
Yes, I found it about 20 minutes ago - thanks!


Online form not submitting

@srupe05: 2020-05-28 14:52:49
A potential adopter was trying to complete our online application but was having issues with submitting. The issue was described and I was able to recreate the problem. Our form asks the number of children (lookup field) in the home and a separate field asks the age range of children (multiple select). The field for age range (a required field) had a show if syntax relating to the number of children in the home (show if - children>0) and that functioned as it should. Despite selecting an age range, the form would not submit. When clicking submit, the form would highlight the age range field and state a value is required. In the meantime, I edited the age range field by removing the show if syntax and added "no children" to the multiple select values and the form submits without issue. [Online form](//muut.com/u/sheltermanager/s1/:sheltermanager:878U:onlineform.jpg.jpg)


Add "Created on" column on the person search result

@julian-poidevin: 2020-05-27 22:53:47
When searching for a foster, we would like to rank reorganize people in the search results by the latest created in ASM. We want to contact people the latest created, it seems more natural (for fosters particularly) . Is there a way to do that or can it be added ?

@adoptamutt: 2020-05-28 15:28:35
Optionally, you could create a report for that: --- SELECT o.OwnerCode, o.OwnerName, o.OwnerAddress, o.OwnerTown, o.OwnerCounty, o.OwnerPostcode, o.EmailAddress, o.MobileTelephone, o.HomeTelephone, o.CreatedDate FROM owner o WHERE o.IsFosterer = 1 ORDER BY o.CreatedDate DESC ---

@robinrt: 2020-05-28 15:53:05
It makes sense, you can put Created By in the results and there's even an advanced person search for created since date.


Re-entries and microchips

@jimdunne: 2020-05-26 13:34:55
I have been cloning original files for hedgehogs that have come back into our rescue after being released to the wild. This enables me to add new details to the record, whilst preserving the old record. I have a problem in that I cannot add the microchip details to the new record as the system will not allow it as the chip is already allocated to another animal. Any ideas how to overcome this?

@robinrt: 2020-05-26 15:09:34
There's nothing unreasonable about doing that, but the normal way would be to return the released to wild movement so you have the complete history with one animal record. Creating a new record means each return will appear as brand new intake when reporting figures. You can turn off the requirement for microchips being unique under Settings->Options->Animal Codes->Allow duplicate microchip numbers


SQL for those obsessed with quality control.

@adoptamutt: 2020-05-20 17:13:01
Thought I would share this report that I wrote because it is very helpful to me. It checks things like capitalization on cities, length of phone numbers, invalid state abbreviations, animals adopted but not spayed, wrong vaccination types used, wrong animal types used, people entered in original owner field when it was a stray, duplicate people entered, etc. I have it set so that it emails this report to me each morning. Of course, some customization by you for your specific shelter/rescue will be required. --- SELECT * FROM ( --Adoption Coordinator is not entered. This is for organizations that use Adoption --Coordinators --SELECT --a.animalname AS name, --a.sheltercode AS code, --date(a.LastChangedDate) AS issuedate, --'Adoption Coordinator not assigned in Entry Section.' AS issue --FROM animal a --WHERE a.archived = 0 --AND a.nonshelteranimal = 0 --AND a.adoptioncoordinatorid = 0 --AND NOT (a.AdditionalFlags LIKE 'Ignore Issues|%' OR a.AdditionalFlags LIKE '%|Ignore Issues|%') --An Adoption Movement was entered for a person record flagged as 'Other Shelter'. - -Probably should be a Transfer Movement. SELECT animal.animalname AS name, animal.sheltercode AS code, adoption.movementdate AS issuedate, 'Adoption was entered for a record flagged as <i>Shelter</i>. Should be Transfer Movement' AS issue FROM animal INNER JOIN adoption on adoption.id = animal.activemovementid INNER JOIN owner on owner.id = adoption.ownerid LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.nonshelteranimal = 0 AND animal.DATEBROUGHTIN > '2010-01-01' AND adoption.movementtype = 1 AND (owner.AdditionalFlags LIKE 'shelter|%' OR owner.AdditionalFlags LIKE '%|shelter|%') AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --This checks to see if there is a corresponding Adoption Movement for any --Adoption payments entered. Sometimes people will delete an Adoption Movement --instead of just entering an Adoption Return Date. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, od.date AS issuedate, 'Adoption payment recorded, but Adoption movement missing.' AS issue FROM ownerdonation od LEFT OUTER JOIN owner o ON od.OwnerID = o.ID INNER JOIN animal ON od.AnimalID = animal.ID WHERE od.donationtypeid in (2) --run select * from donationtype AND NOT od.comments LIKE '%ponsor%' --ignore if Sponsored adoption fee AND NOT EXISTS(SELECT ID FROM adoption WHERE OwnerID = od.ownerid OR ReturnedByOwnerID = od.ownerid) AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --This looks for the word 'foster' in the animal bio so that the public knows not --to come to the shelter to meet an animal. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Animal in Foster Without Note in Comments/Bio for Public' AS issue FROM animal INNER JOIN media ON media.LINKID = animal.id --INNER JOIN adoption ON animal.ID = adoption.AnimalID WHERE animal.Archived = 0 AND animal.isnotavailableforadoption = 0 AND animal.activeMovementType=2 AND animal.haspermanentfoster = 0 AND media.websitephoto = 1 AND NOT (animal.animalcomments LIKE '%foster%' OR animal.animalcomments LIKE '%Foster%') AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --When you clone an animal, ASM also clones the Log entries. So if you enter --weight, your cloned animal will contain weight info for the original animal. --UNION SELECT -- Not worth tracking in most cases. -- animal.animalname AS name, -- animal.sheltercode AS code, -- current_date -1 AS issuedate, -- 'Animal with multiple Weights on same day (Log Tab).' AS issue --FROM log --INNER JOIN animal ON animal.id = log.linkid --WHERE log.LOGTYPEID = 4 --AND log.linktype = 0 --AND log.date > '2019-01-01' --AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --GROUP BY 1, 2, 3, cast(log.date as date) --HAVING count(*) > 1 --Compares Animal Type with either Non-Shelter Type or Entry Reasons, depending --on Shelter/Rescue. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Animal With Possible Wrong Animal Type' AS issue FROM animal WHERE animal.datebroughtin > '2020-01-01' AND animal.NONSHELTERANIMAL = 0 AND (animal.animaltypeid = 40 -- Non-Shelter Animal Type OR (animal.speciesid = 1 AND animal.animaltypeid <> 2) OR (animal.speciesid = 2 AND animal.animaltypeid <> 11)) --AND animal.animalname NOT LIKE 'Template%' AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --OR THE BELOW WHERE --WHERE (animal.animaltypeid = 44 AND animal.entryreasonid <> 16) --OR (animal.animaltypeid = 45 AND entryreason.ReasonName NOT LIKE 'OS -%') --OR (animal.animaltypeid = 46 AND entryreason.ReasonName LIKE 'OS -%') --OR (animal.animaltypeid = 47 AND animal.entryreasonid <> 15) --AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Compares vaccination types with species type. Needs customization for vaccination --types. UNION SELECT -- BE SURE TO LOOK AT VACC IDs animal.animalname AS name, animal.sheltercode AS code, av.DateRequired AS issuedate, 'Animal with possible wrong Vaccination Type.' AS issue FROM animal INNER JOIN animalvaccination av ON animal.ID = av.AnimalID INNER JOIN vaccinationtype v ON av.VaccinationID = v.ID WHERE (animal.SpeciesID=1 AND v.id IN (5,8)) OR (animal.SpeciesID=2 AND v.id = 9) -- have to look at vaccination ids AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts when an litter name was added to an animal, but a litter was not added in Edit Litters UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Litter Name Added, but Litter Not Created in ASM > Edit litters.' AS issue FROM animal WHERE acceptancenumber <> '' AND NOT EXISTS(select ID FROM animallitter al WHERE al.acceptancenumber = animal.acceptancenumber) --Alerts when an animal has been marked as either euthanized or DOA, but then the --Death date later removed. The euthanized or DOA fields need to be cleared out. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Marked deceased without Deceased Date. Enter temp Deceased Date to clear deceased reason, then re-Save.' AS issue FROM animal WHERE (puttosleep = 1 OR diedoffshelter = 1 OR isdoa = 1) AND deceaseddate IS NULL AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts if marked 'Transfer In' but the Entry Category not set to Transfer from … UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Marked <i>Transfer In</i>, but <i>Entry Category</i> not set to Transfer from Shelter/Rescue in Entry section.' AS issue FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE animal.nonshelteranimal = 0 AND animal.istransfer = 1 --AND NOT animal.entryreasonid = 18 -- Check Entry Reason ID AND entryreason.ReasonName NOT LIKE '%Transf%' AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --If marked 'Transfer In' , but check to see if there is a person in the 'Transferred From' --field in the Entry Section. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Marked <i>Transfer In</i>, but no person in <i>Transferred From</i> field in Entry section.' AS issue FROM animal WHERE animal.nonshelteranimal = 0 AND animal.broughtinbyownerid = 0 AND animal.istransfer = 1 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts when adopted and marked microchip, but no microchip number entered. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Microchip Issue. Marked <i>Microchipped</i> but no number in Health and Identification section. <font color = "Red">Alerts for 30 days.</font>' AS issue FROM animal WHERE animal.deceaseddate is null AND animal.Identichipped = 1 AND animal.Identichipnumber = '' AND NOT animal.ACTIVEMOVEMENTTYPE = 5 AND animal.activemovementdate > current_date - 30 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts when an animal is adopted, but hasn't been microchipped. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, animal.activemovementdate AS issuedate, 'Microchip Issue. Not Microchipped but adopted.' AS issue FROM animal WHERE animal.deceaseddate IS NULL AND animal.NONSHELTERANIMAL = 0 AND animal.activemovementtype = 1 --AND animal.activemovementdate > current_date - 60 - ignore. Make them enter. AND animal.activemovementdate > '2019-01-01' AND animal.Identichipped = 0 --AND adoption.ISTRIAL = 0 - look for neutered instead. AND animal.Neutered = 1 AND animal.speciesid in (1,2) AND animal.iscourtesy = 0 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --While ASM will accept - & *, if someone is searching for a microchip number, and --enters only numbers, they will not find these records. Better to stay consistent. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Microchip Number invalid. Remove - or *.' AS issue FROM animal WHERE ((animal.identichipnumber LIKE '%*%' OR animal.identichipnumber LIKE '%-%') OR (animal.identichip2number LIKE '%*%' OR animal.identichip2number LIKE '%-%')) AND animal.IsNotForRegistration = 0 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Reports when Entry Category indicates Owner Surrender, but no owner --entered in Original Owner field. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'No Owner in <i>Original Owner</i> field in Entry section even though designated Owner Surrender' AS issue FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE animal.archived=0 AND animal.originalownerid = 0 --AND animal.entryreasonid < 16 AND entryreason.ReasonName LIKE 'OS -%' AND animal.istransfer = 0 AND animal.reasonno = '' -- make sure a Reason not from owner wasn't entered AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Reports when an owner is not entered for a Non-Shelter animal. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'No Owner in <i>Original Owner</i> field in Entry section on Non-Shelter animal.' AS issue FROM animal WHERE animal.deceaseddate IS NULL AND animal.NONSHELTERANIMAL = 1 AND animal.ORIGINALOWNERID = 0 AND datebroughtin > '2019-01-01' AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Reports animals adopted but not altered. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, animal.activemovementdate AS issuedate, 'Not altered but adopted.' AS issue FROM animal LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID INNER JOIN adoption ON adoption.ID = animal.activemovementID WHERE animal.deceaseddate IS NULL AND animal.nonshelteranimal = 0 AND animal.activemovementtype = 1 AND animal.activemovementdate > '2010-01-01' AND animal.Neutered = 0 AND adoption.ISTRIAL = 0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 185 AND animal.speciesid in (1,2) AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Compares current owner (animal.ownerid with adoption.ownerid) to see if maybe --someone changed this field instead of creating a movement. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, '<i>Owner</i> field in Details Section has changed. Be sure that this was not changed instead of creating a Movement. This should only be used when an <b>adopter</b> re-homes an animal and you do not wish to track that Movement. <font color = "Red">Alerts Only Once.</font>' AS issue FROM animal INNER JOIN adoption ON adoption.id = animal.activemovementid WHERE date_trunc('day', animal.LASTCHANGEDDATE) = current_date -1 AND animal.ownerid <> adoption.ownerid AND adoption.MovementType = 1 --AND adoption.istrial = 0 AND adoption.ReturnDate IS NULL AND animal.deceasedDate IS NULL --Reports when Entry Category indicates NOT Owner Surrender, but an owner is --entered in Original Owner field. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Person in <i>Original Owner</i> field in Entry section even though NOT Owner Surrender' AS issue FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE animal.nonshelteranimal = 0 AND NOT animal.originalownerid = 0 AND animal.istransfer = 0 --AND animal.entryreasonid > 15 --AND entryreason.ReasonName NOT LIKE 'OS -%' AND NOT (entryreason.ReasonName LIKE 'OS -%' OR entryreason.ReasonName LIKE 'Abuse%') -- AND NOT animal.entryreasonid = 20 -- REVIEW ENTRY REASONS AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Reports when Entry Category indicates Owner Surrender, and the owner is entered --in BOTH broughtinby and original owner field. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Person in <i>Brought In By</i> field is not needed. Delete and Save. (Entry section)' AS issue FROM animal INNER JOIN entryreason ON entryreason.ID = animal.EntryReasonID WHERE animal.nonshelteranimal = 0 AND animal.originalownerid <> 0 AND animal.originalownerid = animal.BROUGHTINBYOWNERID --AND animal.entryreasonid < 16 AND entryreason.ReasonName LIKE 'OS -%' AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') -- Looks for Alerts in the publishing logs. UNION SELECT 'Logs' AS name, 'None' AS code, current_date AS issuedate, 'Please review Publishing > View publishing logs > for error. <font color = "Red">Alerts Only Once.</font>' AS issue FROM publishlog WHERE date_trunc('day', publishlog.publishdatetime) = current_date AND ALERTS > 0 AND LOGDATA NOT LIKE '%Got 0 matching animals for publishing%' --Check to see if published animals have had bios written for them. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Published animal without bio in Comments (Notes section).' AS issue FROM animal INNER JOIN media ON media.LINKID = animal.id WHERE Archived = 0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 60 AND animal.isnotavailableforadoption = 0 AND media.websitephoto = 1 AND animal.ACTIVEMOVEMENTTYPE IS NULL AND animal.animalcomments = '' AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Animal's gender is not entered. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Sex not specified.' AS issue FROM animal WHERE animal.nonshelteranimal = 0 AND animal.deceaseddate IS NULL AND animal.DATEBROUGHTIN > '2019-01-01' AND animal.sex = 2 AND animal.speciesid in (1,2) AND EXTRACT(days FROM animal.datebroughtin - animal.dateofbirth) > 42 -- at 6weeks AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --This is a TWO PART check. This alerts when an animal was too young for a --heartworm test when it came in, but now is old enough. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Test Issue. Heartworm Test <i>Due</i> needs to be added in Test Tab.' AS issue -- this is needed for pups that reach 6m in shelter. Part 1 FROM animal WHERE animal.archived=0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 210 -- 7 months to alway for Templates --AND EXTRACT(days FROM animal.datebroughtin - animal.dateofbirth) > 180 -- Only test if 6m when received. AND animal.speciesid = 1 -- COMMENT OUT ON CAT REPORT AND NOT EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'Heartworm%') AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --This is the second part of a TWO PART check. This alerts when an animal is older --than a year without a heartworm test scheduled. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Test Issue. Heartworm Test <i>Due</i> needs to be added in Test Tab.' AS issue -- This finds tests that are older than 1 year. Part 2 FROM animal --INNER JOIN animaltest ON animaltest.ANIMALID = animal.id WHERE animal.archived=0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 210 -- 7 months to allow for Templates AND animal.speciesid = 1 AND EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'Heartworm%' and animaltest.DATEOFTEST < CURRENT_DATE - INTERVAL '1 year') AND NOT EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'Heartworm%' and animaltest.DATEOFTEST >= CURRENT_DATE - INTERVAL '1 year') AND NOT EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'Heartworm%' and animaltest.DATEOFTEST is null) AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts when an animal is adopted that is over 6 months and not heartworm tested. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, animal.activemovementdate AS issuedate, 'Test Issue. Not Heartworm Tested but adopted. <font color = "Red">Alerts for 7 Days Only.</font>' AS issue FROM animal WHERE animal.deceaseddate IS NULL AND animal.activemovementtype = 1 AND animal.activemovementdate > current_date - 7 --Reports for 7 days then goes away AND EXTRACT(days FROM animal.datebroughtin - animal.dateofbirth) > 180 AND animal.heartwormtested = 0 AND animal.speciesid = 1 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Two-part check for FIV/FLV Test UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Test Issue. FIV/FLV Test <i>Due</i> needs to be added in Test Tab.' AS issue -- this is needed for cats that reach 2m in shelter. Part 1 FROM animal WHERE animal.archived=0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 60 -- 7 months to alway for Templates -- --AND EXTRACT(days FROM animal.datebroughtin - animal.dateofbirth) > 180 -- Only test if 6m when received. AND animal.speciesid = 2 AND NOT EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'FIV%') AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') -- This catches tests older than one year. Part 2 UNION SELECT animal.animalname AS name, animal.sheltercode AS code, date(animal.LastChangedDate) AS issuedate, 'Test Issue. FIV/FLV Test <i>Due</i> needs to be added in Test Tab.' AS issue -- This finds tests that are older than 1 year. Part 2 FROM animal --INNER JOIN animaltest ON animaltest.ANIMALID = animal.id WHERE animal.archived=0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 210 -- 7 months to allow for Templates AND animal.speciesid = 1 AND EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'FIV%' and animaltest.DATEOFTEST < CURRENT_DATE - INTERVAL '1 year') AND NOT EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'FIV%' and animaltest.DATEOFTEST >= CURRENT_DATE - INTERVAL '1 year') AND NOT EXISTS(SELECT animaltest.testtypeid FROM animaltest INNER JOIN testtype ON testtype.ID = animaltest.TESTTYPEID WHERE animaltest.AnimalID = animal.ID AND testtype.TESTNAME like 'FIV%' and animaltest.DATEOFTEST is null) AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts for cat adoptions without FIV test UNION SELECT animal.animalname AS name, animal.sheltercode AS code, animal.activemovementdate AS issuedate, 'Test Issue. Not FIV/FLV Tested but adopted. <font color = "Red">Alerts for 7 Days Only.</font>' AS Issue FROM animal WHERE animal.deceaseddate IS NULL AND animal.activemovementtype = 1 AND animal.activemovementdate > current_date - 7 AND EXTRACT(days FROM animal.datebroughtin - animal.dateofbirth) > 60 AND animal.CombiTested = 0 AND animal.speciesid = 2 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Reports an animal that was transferred to a organization/person that doesn't have --the Other Shelter flag. This flag is needed for the 'Transfer an animal' functionality --to work. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, animal.activemovementdate AS issuedate, 'Transfer Movement. Person record not flagged as <i>Other Shelter</i>' AS issue FROM animal INNER JOIN adoption on adoption.id = animal.activemovementid INNER JOIN owner on owner.id = adoption.ownerid LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.nonshelteranimal = 0 AND animal.DATEBROUGHTIN > '2010-01-01' AND adoption.movementtype = 3 AND NOT (owner.AdditionalFlags LIKE 'shelter|%' OR owner.AdditionalFlags LIKE '%|shelter|%') -- AND animal.id > 4750 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts when animal is marked as a Trial Adoption but no trail ends on date is entered. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, animal.activemovementdate AS issuedate, 'Trial Adoption - <i>Trial ends on</i> date field is blank.' AS issue FROM animal INNER JOIN adoption ON adoption.ID = animal.activemovementID WHERE animal.deceaseddate IS NULL AND animal.activemovementtype = 1 AND adoption.ISTRIAL = 1 AND adoption.trialenddate is null --Alerts when the Trial end date has expired. UNION SELECT animal.animalname AS name, animal.sheltercode AS code, adoption.trialenddate AS issuedate, 'Trial adoption ended. Extend date or Uncheck <i>Trial</i> box in Movement.' AS issue FROM animal INNER JOIN adoption ON adoption.ID = animal.activemovementID WHERE animal.deceaseddate IS NULL AND animal.activemovementtype = 1 AND adoption.ISTRIAL = 1 AND adoption.trialenddate < current_date --This alerts when banned people also do not have the Exclude from bulk mailings flag. --You want to make sure that you do not email or mail users that have been banned. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Banned Person without Exclude from bulk mailings Flag' AS issue FROM owner WHERE isbanned = 1 AND excludefrombulkemail = 0 --Checks to see if first name is missing on person records tagged as "Individuals". UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'First Name is Blank. Possible Organization.' AS issue FROM owner WHERE ownerforenames = '' and ownertype = 1 --Checks for ownercodes that start with XX, which means last name field is missing. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Invalid Last Name or Organization Name.' AS issue FROM owner WHERE ownercode LIKE 'XX%' --Checks for cities entered in ALL upper or lower case. And common misspellings of city --names. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Invalid City or Capitalization.' AS issue FROM owner WHERE ownertown <> '' AND (upper(ownertown) = ownertown OR lower(ownertown) = ownertown OR ownertown IN ('Prairie grove','Prairiegrove') OR (ownertown LIKE 'Fay%' AND ownertown <> 'Fayetteville')) AND NOT (owner.AdditionalFlags LIKE 'Ignore Issues|%' OR owner.AdditionalFlags LIKE '%|Ignore Issues|%') --Checks for invalid state abbreviations. Ignores State check if there is data in the Country --field. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Invalid State abbreviation.' AS issue FROM owner WHERE owner.OWNERTOWN <> '' AND (owner.OWNERCOUNTRY LIKE 'US%' OR owner.OWNERCOUNTRY = '') -- skip check if foreign county AND owner.OWNERCOUNTY NOT IN ('AK', 'AL', 'AR', 'AS', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'GA', 'GU', 'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MI', 'MN', 'MO', 'MP', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'PR', 'RI', 'SC', 'SD', 'TN', 'TX', 'UM', 'UT', 'VA', 'VI', 'VT', 'WA', 'WI', 'WV', 'WY') AND NOT (owner.AdditionalFlags LIKE 'Ignore Issues|%' OR owner.AdditionalFlags LIKE '%|Ignore Issues|%') --Notifies missing zipcode when the address, city, and state have been entered. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Missing Zipcode.' AS issue FROM owner WHERE owner.LASTCHANGEDDATE > '2019-01-01' AND NOT owner.OWNERADDRESS = '' AND NOT owner.OWNERTOWN = '' AND NOT owner.OWNERCOUNTY = '' AND (owner.OWNERCOUNTRY LIKE 'US%' OR owner.OWNERCOUNTRY = '') -- skip check if foreign country AND owner.ownerpostcode = '' AND NOT (owner.AdditionalFlags LIKE 'Ignore Issues|%' OR owner.AdditionalFlags LIKE '%|Ignore Issues|%') --Alerts when zipcode doesn’t match standard pattern. For example, all Arkansas --zipcodes start with 7. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Invalid Zipcode.' AS issue FROM owner WHERE owner.OWNERCOUNTY = 'AR' AND ownerpostcode <> '' AND (ownerpostcode NOT LIKE '7%' OR (ownerpostcode NOT LIKE '722%' AND ownertown = 'Little Rock')) --AND OWNER.LASTCHANGEDDATE > '2020-01-01' --AND NOT (ownerpostcode like '46%' or ownerpostcode like '47%') --This strips out all characters and then alerts if phone number is not equal to 10 --characters. It will ignore this if two phone numbers are in same field but separated --by a slash (/) UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Invalid Phone Number Length.' AS issue FROM owner WHERE (LENGTH(NULLIF(regexp_replace(hometelephone, '\D','','g'), '')) <> 10 OR LENGTH(NULLIF(regexp_replace(mobiletelephone, '\D','','g'), '')) <> 10) AND (hometelephone NOT LIKE '%/%' AND mobiletelephone NOT LIKE '%/%') AND OWNER.LASTCHANGEDDATE > '2020-01-01' AND NOT (owner.AdditionalFlags LIKE 'Ignore Issues|%' OR owner.AdditionalFlags LIKE '%|Ignore Issues|%') --4/20/2020 THIS IS NO LONGER NEEDED since the new search box ignores characters. --Only looks at phone numbers less than 13 characters to avoid phone numbers --with additional text entered. It is looking for periods entered within the number --to limit what has to be searched on when searching for phone numbers. --UNION SELECT --owner.ownername as name, -- owner.ownercode as code, -- date(owner.LastChangedDate) as issuedate, -- 'Invalid Phone Number Format. Remove any periods or characters.' AS issue --FROM owner --WHERE ((LENGTH(owner.WORKTELEPHONE) < 13 and owner.WORKTELEPHONE like '%.%') --OR (length(owner.HOMETELEPHONE) < 13 and owner.HOMETELEPHONE like '%.%') --OR (length(owner.MOBILETELEPHONE) < 13 and owner.MOBILETELEPHONE like '%.%') --OR owner.hometelephone ~ '^[A-Za-z]' --OR owner.mobiletelephone ~ '^[A-Za-z]') --AND NOT (owner.AdditionalFlags LIKE 'Ignore Issues|%' OR owner.AdditionalFlags LIKE '%|Ignore Issues|%') --This alert strips out all characters and compares any records that were modified the day --before with mobile and home numbers in the database. UNION SELECT o.ownername AS name, o.ownercode AS code, current_date -1 AS issuedate, 'Duplicate Phone Number - (' || ow.ownercode || '). <font color = "Red">Alerts Only Once.</font>' AS issue FROM owner o, owner ow WHERE date_trunc('day', o.LASTCHANGEDDATE) = current_date -1 AND o.id <> ow.id AND ((regexp_replace(o.hometelephone, '\D','','g') <> '' AND regexp_replace(o.hometelephone, '\D','','g') LIKE regexp_replace(ow.hometelephone, '\D','','g') AND ow.hometelephone <> '') OR (regexp_replace(o.hometelephone, '\D','','g') <> '' AND regexp_replace(o.hometelephone, '\D','','g') LIKE regexp_replace(ow.mobiletelephone, '\D','','g') AND ow.mobiletelephone <> '') OR (regexp_replace(o.mobiletelephone, '\D','','g') <> '' AND regexp_replace(o.mobiletelephone, '\D','','g') LIKE regexp_replace(ow.mobiletelephone, '\D','','g') AND ow.mobiletelephone <> '') OR (regexp_replace(o.mobiletelephone, '\D','','g') <> '' AND regexp_replace(o.mobiletelephone, '\D','','g') LIKE regexp_replace(ow.hometelephone, '\D','','g') AND ow.hometelephone <> '')) --This alert compares the email of records that were modified the day before with emails --in the database. UNION SELECT o.ownername AS name, o.ownercode AS code, current_date -1 AS issuedate, 'Duplicate Email address (' || o.emailaddress || '). Please search on Email. <font color = "Red">Alerts Only Once.</font>' AS issue FROM owner o WHERE date_trunc('day', o.LASTCHANGEDDATE) = current_date -1 AND o.emailaddress <> '' AND lower(o.emailaddress) IN (SELECT lower(ow.emailaddress) FROM owner ow WHERE o.id <> ow.id AND ow.emailaddress <> '') --This alert if the @ sign appears in the phone number fields. UNION SELECT o.ownername AS name, o.ownercode AS code, date(o.LastChangedDate) as issuedate, 'Possible Email Address in Wrong Field. <font color = "Red">Alerts Only Once.</font>' AS issue FROM owner o WHERE date_trunc('day', o.LASTCHANGEDDATE) = current_date -1 AND (o.hometelephone LIKE '%@%' OR o.mobiletelephone LIKE '%@%' OR o.mobiletelephone LIKE '%@%') --Alerts when the license expiration date compared to the issue date is less than 335 days. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(ol.LastChangedDate) AS issuedate, 'Invalid License Expiration Date.' AS issue FROM ownerlicence ol INNER JOIN owner ON owner.ID = ol.OwnerID WHERE extract(days from ol.ExpiryDate - ol.ISSUEDATE) < 335 --This looks at the comments field of citation to see if the different ordinance numbers have --been entered. This allows for reporting of individual ordinance violations if needed. UNION SELECT o.OwnerName AS name, o.ownercode AS code, oc.CreatedDate AS issuedate, 'Missing citation number(s) in Comments' AS issue FROM ownercitation oc INNER JOIN citationtype ct ON ct.ID = oc.CitationTypeID INNER JOIN owner o ON o.ID = oc.OwnerID WHERE oc.comments = '' --If person designated as Member, checks for membership expiration date. UNION SELECT owner.ownername AS name, owner.ownercode AS code, date(owner.LastChangedDate) AS issuedate, 'Missing Membership Flag or Date.' AS issue FROM owner WHERE (ismember = 1 AND owner.MEMBERSHIPEXPIRYDATE IS NULL) OR (ismember = 0 AND owner.MEMBERSHIPEXPIRYDATE > current_date) --Notifies when an online form is attached to a person who is already in the system. UNION SELECT DISTINCT o.ownername AS name, o.ownercode AS code, current_date -1 AS issuedate, 'Online Form Attached to Prior Person Record. Compare the data in the First and Last Name fields with the data on the NEW online form. When ASM finds an email match, it ONLY updates the address and phone info. <font color = "Red">Alerts Only Once.</font>' AS issue FROM owner o INNER JOIN media m ON m.linkid = o.ID WHERE m.medianotes IN ('Cat Adoption Application', 'Dog Adoption Application','Getting Help - Cat', 'Getting Help - Dog','SNIP Application','Foster Application','Volunteer Application') AND m.linktypeid = 3 AND date_trunc('day', m.date) = current_date -1 AND cast(o.CREATEDDATE AS DATE) < cast(m.date AS DATE) --Reports if person added day before is not linked to any records and has no flags. --Suspect that when modifying a person link, ASM does not warn if leaving before saving. UNION SELECT DISTINCT o.ownername AS name, o.ownercode AS code, date(o.LastChangedDate) as issuedate, 'Person Record added but NOT LINKED to any records and has no Flags. <font color = "Red">Alerts Only Once.</font>' AS issue FROM owner o WHERE date_trunc('day', o.createddate) = current_date - 1 AND o.additionalflags = '|' AND NOT EXISTS(SELECT ID FROM adoption WHERE OwnerID = o.ID OR ReturnedByOwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM animal WHERE OriginalOwnerID = o.ID OR BroughtInByOwnerID = o.ID OR CurrentVetID = o.ID OR OwnersVetID = o.ID OR AdoptionCoordinatorID = o.ID OR NeuteredByVetID = o.ID) AND NOT EXISTS(SELECT ID FROM animalcontrol WHERE VictimID = o.ID OR CallerID = o.ID OR OwnerID = o.ID OR Owner2ID = o.ID OR Owner3ID = o.ID) AND NOT EXISTS(SELECT ID FROM animalfound WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM animallost WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM animalwaitinglist WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM animaltransport WHERE DriverOwnerID = o.ID OR PickupOwnerID = o.ID OR DropoffOwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM animalmedicaltreatment WHERE AdministeringVetID = o.ID) AND NOT EXISTS(SELECT ID FROM animaltest WHERE AdministeringVetID = o.ID) AND NOT EXISTS(SELECT ID FROM animalvaccination WHERE AdministeringVetID = o.ID) AND NOT EXISTS(SELECT ID FROM clinicappointment WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownercitation WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownerdonation WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownerinvestigation WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownerlicence WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownerrota WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownertraploan WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM ownervoucher WHERE OwnerID = o.ID) AND NOT EXISTS(SELECT ID FROM users WHERE OwnerID = o.ID) --This searches for partial address and last name match. UNION SELECT o.ownername AS name, o.ownercode AS code, date(o.LastChangedDate) AS issuedate, 'Possible Duplicate Person Record - (' || ow.ownercode || '). Partial address and last or first name match. <font color = "Red">Alerts Only Once.</font>' AS issue FROM owner o, owner ow WHERE date_trunc('day', o.LASTCHANGEDDATE) = current_date -1 AND LOWER(REGEXP_REPLACE(ow.owneraddress, '[^0-9A-Za-z]', '','g')) LIKE SUBSTR(LOWER(REGEXP_REPLACE(o.owneraddress, '[^0-9A-Za-z]', '','g')),1,8) || '%' AND o.owneraddress <> '' AND (LOWER(o.ownersurname) = LOWER(ow.ownersurname) OR LOWER(o.ownerforenames) = LOWER(ow.ownerforenames)) AND o.id <> ow.id ) dummy ORDER BY 4,3 --- $$HEADER <table border="1"> <tr> <th>ALERT</th> <th>NAME</th> <th>CODE</th> <th>DATE</th> </tr> HEADER$$ $$BODY <tr> <td>$issue</td> <td>$name</td> <td>$code</td> <td>$issuedate</td> </tr> BODY$$ $$FOOTER </table> FOOTER$$

@robinrt: 2020-05-20 17:16:38
This is brilliant. Do you mind if I add this to the sheltermanager repository for everyone to use?

@adoptamutt: 2020-05-20 17:19:52
Not at all! I created an "Ignore Issues" animal and person flag for unusual situations.

@robinrt: 2020-05-20 17:25:43
I've added it to the repo now as "Quality Control" and credited you. Just a little thing you might not have spotted but I saw one of the tests is around checking forms attached to people. As of last week, the incoming forms screen shows you an icon now when you do Create->Person to indicate that the person already existed. It will also show an alert icon if that person is banned.

@adoptamutt: 2020-05-21 15:16:58
I just noticed that I'm missing 'AND NOT EXISTS(SELECT ID FROM log where LinkID = o.ID AND linktype = 1)' from the 'Person Record added but NOT LINKED ...' SQL, second from the bottom.

@1gkwc6: 2020-06-12 09:29:35
syntax error at or near "-" LINE 5: - -Probably should be a Transfer Movement. ^

@adoptamutt: 2020-06-12 14:18:16
I'll fix that. Thanks!

@adoptamutt: 2020-06-12 17:50:38
For those using the Adoption Coordinator field, I created a separate report for each AC named something like "Quality Control - Smith", entered their email address in the "Email To" field, and then the first line of my SQL is: "$CONST adoption_coordinator=Jane Smith$" which has to be an exact match to the CA's owner.ownername field. Then add an "AND" statement to each SQL query: "AND cw.ownername = '$adoption_coordinator$'" . I then pulled out the SQL's that should be specific to CA's and added other SQLs to notify them of vaccinations due for example. Here is an example: --- $CONST adoption_coordinator=Jane Smith$ SELECT * FROM ( SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animal.LastChangedDate) AS issuedate, 'Sex Not Specified' AS ISSUE, '01' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.deceaseddate is null AND animal.isnotavailableforadoption = 0 AND animal.sex = 2 -- AND animal.spec iesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS -- AND animal.adoptioncoordinatorID = 2 -- USED FOR SPECIFIC CASE WORKER REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animal.LastChangedDate) AS issuedate, 'Marked Microchipped But No Number in Health Section' AS ISSUE, '25' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.deceaseddate is null AND animal.Identichipped = 1 AND animal.Identichipnumber = '' AND NOT animal.ACTIVEMOVEMENTTYPE = 5 AND animal.activemovementdate > '01/01/2019' --AND animal.activemovementdate > current_date - 60 --AND NOT (animal.AdditionalFlags LIKE 'courtesy|%' OR animal.AdditionalFlags LIKE '%|courtesy|%') AND animal.iscourtesy = 0 AND NOT (animal.AdditionalFlags LIKE 'notforregistration|%' OR animal.AdditionalFlags LIKE '%|notforregistration|%') -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, animal.activemovementdate AS issuedate, 'Missing Data in Adopter Address, Unable to Register Microchip with PetLink' AS ISSUE, '30' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID INNER JOIN adoption on adoption.id = animal.activemovementid INNER JOIN owner on owner.id = adoption.ownerid LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.Identichipped = 1 AND NOT animal.Identichipnumber = '' AND animal.activemovementtype = 1 AND animal.activemovementdate > current_date - 30 AND ((owner.owneraddress = '' OR owner.ownertown = '' OR owner.ownercounty = '' OR owner.ownerpostcode = '') OR (owner.emailaddress = '' AND owner.worktelephone = '' AND owner.hometelephone = '' AND owner.mobiletelephone = '')) -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND NOT (animal.AdditionalFlags LIKE 'notforregistration|%' OR animal.AdditionalFlags LIKE '%|notforregistration|%') AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animal.LastChangedDate) AS issuedate, 'Not Altered > 6 Months' AS ISSUE, '35' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.archived=0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 185 AND animal.Neutered = 0 AND NOT animaltypeid = 13 AND (animal.IsHold = 0 or animal.HoldUntilDate < current_date) -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, animal.activemovementdate AS issuedate, 'Transfer Record not flagged as Shelter' AS ISSUE, '45' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID INNER JOIN adoption on adoption.id = animal.activemovementid INNER JOIN owner on owner.id = adoption.ownerid LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE adoption.movementtype = 3 AND NOT (owner.AdditionalFlags LIKE 'shelter|%' OR owner.AdditionalFlags LIKE '%|shelter|%') AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') AND owner.id <> 38 -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, animal.activemovementdate AS issuedate, 'Adoption Should be Transfer' AS ISSUE, '50' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID INNER JOIN adoption on adoption.id = animal.activemovementid INNER JOIN owner on owner.id = adoption.ownerid LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE adoption.movementtype = 1 AND (owner.AdditionalFlags LIKE 'shelter|%' OR owner.AdditionalFlags LIKE '%|shelter|%') AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, animal.activemovementdate AS issuedate, 'Trial Adoption - <i>Trial ends on</i> Date Field is Blank' AS ISSUE, '55' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID INNER JOIN adoption ON adoption.ID = animal.activemovementID WHERE animal.deceaseddate is null AND animal.activemovementtype = 1 AND adoption.ISTRIAL = 1 AND adoption.trialenddate is null -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, adoption.trialenddate AS issuedate, 'Trial Adoption Ended - Extend Date or Uncheck <i>Trial</i> Box in Movement' AS ISSUE, '60' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID INNER JOIN adoption ON adoption.ID = animal.activemovementID WHERE animal.deceaseddate is null AND animal.activemovementtype = 1 AND adoption.ISTRIAL = 1 AND adoption.trialenddate < current_date -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animal.LastChangedDate) AS issuedate, 'No Picture - Not Posted' AS ISSUE, '65' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.Archived = 0 AND animal.isnotavailableforadoption = 0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 60 AND 0 = (SELECT COUNT(ID) FROM media m WHERE m.LinkID = animal.ID AND m.LinkTypeID = 0 AND m.WebsitePhoto = 1) -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animal.LastChangedDate) AS issuedate, 'Bio Needed - No Comments under Notes Section' AS ISSUE, '67' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID WHERE animal.Archived = 0 AND animal.isnotavailableforadoption = 0 AND EXTRACT(days FROM current_date - animal.dateofbirth) >= 60 AND animal.animalcomments = '' -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(av.DateRequired) AS issuedate, 'Vaccination Due (' || v.VaccinationType || ')' AS ISSUE, '70' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID --INNER JOIN adoption ON adoption.ID = animal.activemovementID INNER JOIN animalvaccination av ON animal.ID = av.AnimalID INNER JOIN vaccinationtype v ON av.VaccinationID = v.ID WHERE av.DateOfVaccination Is Null AND av.DateRequired <= current_date AND animal.archived = 0 --AND animal.speciesid = 1 -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' -- USED FOR SPECIFIC CASE WORKER REPORTS UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animalmedicaltreatment.DateRequired) AS issuedate, 'Medical Due (' || animalmedical.treatmentname || ')' AS ISSUE, '71' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID INNER JOIN ANIMALMEDICAL ON animalmedical.AnimalID = animal.ID INNER JOIN animalmedicaltreatment ON animalmedicaltreatment.AnimalMedicalID = animalmedical.ID WHERE animal.archived = 0 AND animalmedical.Status = 0 --0=Active AND animalmedicaltreatment.DateGiven is null AND animalmedicaltreatment.DateRequired <= current_date --AND animal.speciesid = 1 AND cw.ownername = '$adoption_coordinator$' -- USED FOR SPECIFIC CASE WORKER REPORTS UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, animal.activemovementdate AS issuedate, 'Reclaimed Movement - Probably Should be Adoption with Return Date' AS ISSUE, '75' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID LEFT OUTER JOIN adoption ON adoption.animalID = animal.id WHERE animal.archived=0 AND adoption.returndate > current_date - 30 AND adoption.movementtype = 5 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' -- USED FOR SPECIFIC CASE WORKER REPORTS UNION SELECT animal.animalname, animal.sheltercode, species.SpeciesName, cw.ownername, date(animal.LastChangedDate) AS issuedate, 'No Foster Assigned in Movements Tab' AS ISSUE, '85' AS SortOrder FROM animal INNER JOIN species ON species.ID = animal.SpeciesID LEFT OUTER JOIN owner cw ON cw.ID = animal.adoptioncoordinatorID INNER JOIN internallocation ON internallocation.ID = animal.ShelterLocation WHERE animal.archived=0 AND animal.activemovementtype is null AND animal.shelterlocation = 5 AND NOT (animal.AdditionalFlags LIKE 'Ignore Issues|%' OR animal.AdditionalFlags LIKE '%|Ignore Issues|%') -- AND animal.speciesid = ? -- USED FOR SPECIFIC DOG/CAT REPORTS AND cw.ownername = '$adoption_coordinator$' -- USED FOR SPECIFIC CASE WORKER REPORTS ) dummy ORDER BY 7, 5 ---

@connor9220: 2020-07-16 23:32:13
MySQL version of this would be nice.. :)


weekly medical email to fosters

@sjras: 2020-05-18 20:33:19
We absolutely LOVE this feature, but we're having issues with new fosters not understanding that it's an auto-generated email and responding to it. With employee schedules all varied currently with covid-19 those messages don't always get seen in a timely manner. Is there a template for this email that can be edited, or would it be possible to add a "This email has been auto-generated by shelter software and replies WILL NOT be seen. Please contact the foster or medical coordinator if you have concerns or comments regarding the email below." type statement to the top of the reports that are sent out?

@robinrt: 2020-05-19 09:03:20
Hi, I'm afraid there's no way to customise the message at the moment. How come replies are not being seen? Replies should go to the address you have configured under Settings->Options->Email

@julian-poidevin: 2020-05-24 21:39:57
We also have this problem, we often get called by fosters who don't understand what is this email. Customization feature would be awesome.

@robinrt: 2020-05-25 18:37:28
Ask and you shall receive. It's in the master branch now.

@julian-poidevin: 2020-05-25 18:51:25
Wow, you are amazing !!!!! <3


Age at Intake

@mmover: 2020-05-18 17:52:27
Is there a way to modify the In/Out by Species report but have the age that shows up the age that the animal was at intake and not the age that the animal is currently?

@robinrt: 2020-05-18 18:09:06
Yes, edit the report in Settings->Reports and change every occurrence of "AnimalAge" in every subquery of the report (there are about 15 of them). Switch AnimalAge in each list to: --- age(DateBroughtIn, DateOfBirth)::varchar AS AnimalAge --- Each subquery represents a section of the report, so if you only wanted to do this for the Animals Brought In section, you could just change the AnimalAge field on that one area to make it show age at intake. There is also a report in the repository called "In/Out with Age at Event" that shows the animal's age at the event in each section (intake, adoption, death, etc). Install it under Settings->Reports->Browse sheltermanager.com

@mmover: 2020-05-18 22:01:07
Awesome, thank you!


Shelter stats playing up

@jimdunne: 2020-05-15 21:40:33
I've just noticed that shelter stats is displaying incorrectly - Released to wild figures now displays as dead on arrival [Screenshot from 2020-05-15 21-37-46](//muut.com/u/sheltermanager/s1/:sheltermanager:QMOw:screenshotfrom20200515213746.png.jpg)

@robinrt: 2020-05-16 17:16:42
Thanks for letting me know about this. POEdit managed to dump absolute rubbish into the non-US translation files without me noticing. I have no idea why anyone would want it to do this fuzzy matching nonsense when it's going to get it completely wrong. It had done this in many places, so I really appreciate you letting me know about this. I've applied a fix now.


Older debs

@reshhaverstahm: 2020-05-11 18:39:20
Are the older debs available for download? I'm having no success installing 43. The shelter that I'm trying to support had an old version running, I think 3.3.0 (Their computer was stolen!), so I don't think they'll mind not having the latest and greatest. Thanks.

@robinrt: 2020-05-11 18:57:35
They are, but only back to v35. To get that, download from http://public.sheltermanager.com/deb/sheltermanager3_35_all.deb You can substitute the 35 for anything up to and including 43

@reshhaverstahm: 2020-05-12 16:27:42
I'm now trying to install 42. When the DB begins to build, this error pops up on the browser... <class '_mysql_exceptions.OperationalError'> at /database (1071, 'Specified key was too long; max key length is 767 bytes') Python /usr/lib/sheltermanager3/dbms/base.py in execute, line 297 This is with the forms moved out. What am I missing? For what it's worth, I downloaded 3.3.0 from sourceforge.net and had it running right away.

@robinrt: 2020-05-12 16:41:31
It will be failing creating an index on a varchar field. That can happen due to the collation in your database. Make sure you use utf8-general-ci when creating the database, eg: --- CREATE DATABASE asm CHARACTER SET utf8 COLLATE utf8_general_ci; ---

@reshhaverstahm: 2020-05-12 20:06:08
Ok, I've tried with the newly created database as per your guidance, but when the browser jumps to localhost:5000/login, the following is what is being logged. The first two entries are the tail end of the creation of the database, I believe. The second traceback block repeats for a while then activity dies. Also, I'm having to launch python3 code.py 5000 manually, is that expected? If I read the apache2 code correctly it should launch it. Is this correct? INSERT INTO vaccinationtype (ID, VaccinationType, DefaultCost, IsRetired) VALUES (13, 'FIPV', 0, 0) INSERT INTO vaccinationtype (ID, VaccinationType, DefaultCost, IsRetired) VALUES (14, 'FECV/FeCoV', 0, 0) 127.0.0.1:59752 - - [12/May/2020 13:19:02] "HTTP/1.1 POST /database" - 303 See Other 127.0.0.1:59752 - - [12/May/2020 13:19:02] "HTTP/1.1 GET /login" - 200 OK ValueError("invalid literal for int() with base 10: ''") Traceback (most recent call last): File "/usr/lib/python3/dist-packages/cheroot/wsgi.py", line 144, in respond for chunk in filter(None, response): File "/usr/lib/python3/dist-packages/web/ht tpserver.py", line 222, in __iter__ path = self.translate_path(self.path) File "/usr/lib/python3.7/http/server.py", line 820, in translate_path path = self.directory AttributeError: 'StaticApp' object has no attribute 'directory' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/cheroot/server.py", line 1252, in communicate req.respond() File "/usr/lib/python3/dist-packages/cheroot/server.py", line 1056, in respond self.server.gateway(self).respond() File "/usr/lib/python3/dist-packages/cheroot/wsgi.py", line 150, in respond self.req.ensure_headers_sent() File "/usr/lib/python3/dist-packages/cheroot/server.py", line 1103, in ensure_headers_sent self.send_headers() File "/usr/lib/python3/dist-packages/cheroot/server.py", line 1120, in send_headers status = int(self.status[:3]) ValueError: invalid literal for int() with base 10: '' ValueError("invalid literal for int() with base 10: ''") Traceback (most recent call last): File "/usr/lib/python3/dist-packages/cheroot/wsgi.py", line 144, in respond for chunk in filter(None, response): File "/usr/lib/python3/dist-packages/web/httpserver.py", line 222, in __iter__ path = self.translate_path(self.path) File "/usr/lib/python3.7/http/server.py", line 820, in translate_path path = self.directory AttributeError: 'StaticApp' object has no attribute 'directory' Thanks.

@robinrt: 2020-05-13 08:45:26
Yes, you need to either configure Apache (which fixes this problem and doesn't require you to start the server manually). Or manually patch your web-py code as outlined in the README to fix the StaticApp bug: https://github.com/bobintetley/asm3/blob/master/README.md#debian-python3-webpy


Find a deleted animal?

@ketalabama: 2020-05-10 14:02:21
Is there a way to find or retrieve or find information on an animal record that has been deleted? The Audit report of deletions seems to capture deletions on an existing record.

@robinrt: 2020-05-10 14:07:48
Yes, the Audit Trail: Deletions by Date report will show info on all deleted records. If you're using sheltermanager.com and want to request a deleted record(s) be restored, email us at help@sheltermanager.com with your account number and what you want to restore. If you don't know exactly what, rough dates will help.

@ketalabama: 2020-05-10 14:14:14
Thank you for the quick reply. I was running that report but it seems to link to an animal record by id? And yet when I search for that animal (either using sql or just the search feature) it can't be found. So identifying which of the deleted actions pertains to the missing animal I can't tell which is the actual "delete animal" action for the missing kitten. And yes we are using Sheltermanager.com. We are really just trying to figure out who might have deleted the record honestly. Restoring it is not too problematic.

@robinrt: 2020-05-10 15:11:13
If you're confident using SQL, try running: --- SELECT * FROM audittrail WHERE Action=2 ORDER BY AuditDate DESC --- to show all deletes on record with the newest at the top. There's a column called "PARENTLINKS" which shows which base records the deleted record belonged to. For animal records it will show animal=ID You won't find anything running searches by ID because the record has been deleted and is no longer in the table!


Publishing Options, aged under...

@homewardcat: 2020-05-10 05:39:08
Hello. We start taking applications for kittens at 10 weeks of age. In the Publishing Options there is a choice to exclude animals under 8 weeks from publishing. Can you add an option of 10 weeks?

@robinrt: 2020-05-10 09:08:22
Hi, I will add to the list for next deploy which should be tomorrow morning.


Owner Field on Animal Record

@trakiplay: 2020-05-09 11:08:37
Hi, I noticed this morning that for adopted animals there is an additional field on the Animal Details page that includes Owner and lists the owner. Is there a way to hide this? Thanks

@robinrt: 2020-05-09 11:14:08
Not at the moment. Is there a reason you'd want to do that? It's a pretty highly requested feature that allows you to change the owner independently of movements so that when you know an animal's owner has changed, you can record it without messing up your figures.

@trakiplay: 2020-05-09 11:21:01
It only seems to appear for Adopted animals and the adopters name is already at the top of the screen, so for us we have no need. I can't think of any reason why we would have a change of owner without it being a re-adoption. Can you give me an example please?

@robinrt: 2020-05-09 11:29:14
The person you adopted the animal to has rehomed the animal to someone else themselves. They've let you know they no longer have the animal and the new owner's info. This happens surprisingly often to some shelters. Without the new owner field, you can't mark the animal as now belonging to someone else without returning the original adoption and creating a new one, which would inflate your intake and adoption stats and be incorrect because the shelter didn't do the rehoming. The owner field lets you change who owns the animal without having to change any movements and without affecting your figures.

@trakiplay: 2020-05-09 11:34:29
Aaah thanks for explaining, I don't think we have ever had that situation! The only time we have something similar is if someone has relinquished a dog to us and then rehomes privately, but then we just mark them as reclaimed in the movements!


DB builds but gets no further...

@reshhaverstahm: 2020-05-08 20:23:50
Hello, I'm attempting to install the sheltermanager3_43_all.deb on a freshly installed and patched xubuntu 18.04 desktop. I've followed the README.md to complete the install. When I launch localhost/asm/database, the database builds. When the database finishes building the url changes to localhost:5000/login and the page indicates that it is "unable to login". The last line in asm3.log reads "May 8 13:48:24 server CRITICAL asm3 dbupdate.install_default_onlin error importing form: (1406, "Data too long for column 'Label' at row 1")". I have repeated the build process on a newly installed OS several times with the same result. Do you have any suggestions? Thanks.

@robinrt: 2020-05-09 11:17:22
It's failing installing one of the online forms due to the length of the label. I don't think we have many that are very long. To allow it to get past, you could temporarily move the default online form files out of /usr/lib/sheltermanager/media/onlineforms temporarily.

@reshhaverstahm: 2020-05-10 18:17:42
robinrt, thanks for the quick reply. I've started from scratch following the README.md, again. I moved the forms out as per your suggestion. The tables build and get populated, but then the same thing happens: when I try to hit myserver/asm, the url changes to myserver:5000/main and displays "unable to connect". During the DB build, every entry in the apache error log contains [wsgi:error] (i've installed libapache2-mod-wsgi-py3 and enabled wsgi). If there is any further configuration needed specifically with wsgi, I haven't found any reference to it. The first attempt to connect to myserver/asm, the apache error log recorded this... "[Sun May 10 16:35:09.844598 2020] [wsgi:error] [pid 710:tid 140401527154432] config: /etc/asm3.conf". On subsequent attempts nothing gets logged at all until I do a reboot in which case the same error is thrown. What am I doing wrong here? Is there some documentation I'm overlooking? ETA: I've tried connecting with and without the forms back where they belong.

@robinrt: 2020-05-10 18:29:14
You need to specify the base_url value in /etc/asm3.conf as http://myserver/asm (or whatever the url to your install is).

@reshhaverstahm: 2020-05-10 20:17:17
My apologies, but "myserver" wasn't meant to be taken literally. I have my servers IP address in the base_url and the service_url. I'll include my build process on the chance that I'm missing something... Newly installed and patched Ubuntu Server 20.04... reboot apt-get install mariadb-server apache2 libapache2-mod-wsgi-py3 apt-get install make python3 python3-webpy python3-pil python3-mysqldb python3-psycopg2 systemctl enable mysql systemctl enable apache2 systemctl start mysql systemctl start apache2 on mysql... CREATE DATABASE asm3; CREATE USER 'asm3'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON asm3.* TO 'asm3'@'localhost'; FLUSH PRIVILEGES; reboot dpkg -i sheltermanager3_43_all.deb Move forms out of /usr/lib/sheltermanager/media/onlineform update apache2 000-default.conf and asm3.conf as per README.md reboot


Heartworm Tested results

@heyjay: 2020-05-07 15:45:41
Is there any way to change the heartworm test results in Animal>Health & Identification>Heartworm Tested? Our veterinarian would like to have an option that says "No antigen present." I have added that as a test result option in the Test tab, but don't see where I can add that specifically for the Heartworm Tested results.

@robinrt: 2020-05-07 16:11:09
Sorry, it's not possible. The marker on Health and Identification is only used for the system to show HW+ warnings and for HW+ animals to appear on reports. As you saw, you can add any results you like to the test tab.

@adoptamutt: 2020-05-07 16:20:57
I find it confusing to utilize both the Test Tab and the Health and Identification Section for Heartworm results. I usually Remove the Heartworm options from the Health and Identification Section when using the Test Tab for Heartworm and also for FIV.

@robinrt: 2020-05-07 16:24:33
This is a good suggestion. The test tab will still update the heartworm fields in H+I behind the scenes for warnings/reports even when they are hidden.

@heyjay: 2020-05-07 20:44:35
Thank you!


System automatically cancelling reservations for animals

@ketalabama: 2020-05-04 17:12:52
We are using Animal Shelter Manager web version. We are doing a number of pre-adoptions on kittens between 6 to 8 weeks. We do not finalize as an adoption movement until the kitten receives initial shots and is actually sent home with adopter. To prevent them from continuing to publish (and us to keep getting inquiries on them) we have been putting them as an approved Reservation with a placeholder "owner". Without a rhyme or reason that we can see, the reservations cancel and become Cancelled Reservations and suddenly they are available to publish again and we get hit with inquiries. Would really like to know WHY it is automatically cancelling? No updates are being made on these records etc. Just from one day to the next a cancellation date appears and they are cancelled. And how to prevent. Or how to see which ones will be cancelling so can go in and clear out the cancel date. Or extend... Thanks Kim

@robinrt: 2020-05-04 17:38:26
There's an option - Settings->Options->Movements->Auto cancel unadopted reservations after X days

@ketalabama: 2020-05-05 21:45:04
Thank you thank you!!!


pictures not showing in pdfs

@lialang: 2020-05-01 16:53:24
We print out the Medical Summary form for each cat and we send it to a pdf and then print or email it. Suddenly the picture does not show up anymore.

@robinrt: 2020-05-02 09:05:34
Hi, are you using sheltermanager.com ? Is this still happening for you ? We had to make some fixes to PDF handling yesterday and everything should be back to normal.


custom emblems not displaying

@hblosser: 2020-04-30 18:19:04
today we noticed that the custom emblems we have set up are not displaying. All of the other emblems still show up though.

@robinrt: 2020-04-30 18:40:21
Hi, should be fixed now, check the config for them under options if there are any other problems.

@hblosser: 2020-04-30 18:41:30
thank you so much!


Handling re-entries

@jimdunne: 2020-04-27 19:37:23
What is the best way of handling re-entries? We run a hedgehog rescue, and chip hogs so that we know if any come back into rescue. We have had a few that have come back, and at present I just use the return date option on the 'Release to Wild' movement, but this does not give me any options to put the reason why they came back in etc. without losing the original record. Any ideas?

@adoptamutt: 2020-04-28 00:03:09
Some prefer to keep separate animal records by cloning the original animal and then going to the Entry Tab to enter the new entry data. I would also reference the original shelter code under hidden comments. I've heard others say that they enter a Returned Date on the Reclaim Movement.

@jimdunne: 2020-04-28 12:19:24
Yes, I had thought about cloning the original animal - I think I'll do it that way.

@robinrt: 2020-04-28 13:26:12
what Karen said. There is a planned development to allow multiple entry records in future.


How do I get a total number of cats fostered for the year. I found a list but I

@cindiczyzakkaiser: 2020-04-26 02:23:37
Need a total - don’t want to add it up one by one.

@adoptamutt: 2020-04-26 15:10:46
Usually, you can just add the below to the Footer section. Make sure you have ID in the select statement. $$FOOTER <p>Total: {COUNT.ID}</p> FOOTER$$

@robinrt: 2020-04-26 16:21:53
The "In/Out Summary by Species" report gives a summary line for fosters over a period.


Diary Notes

@tomsey: 2020-04-24 22:39:19
Is there any way to hide Diary Notes in the "Calendar View" when they don't pertain to other individuals? Basically, if I send myself (or Person A) a Diary Note... I'd like the Diary Note to only be seen on my "Calendar View" (or Person A's "Calendar View").... I don't want Person B, Person C, etc. to see it their "Calendar View"....

@robinrt: 2020-04-25 08:20:26
There isn't. I think our original plan was to have two diary check boxes in the calendar view screen for my/all just like the two diary screens. Not sure why that never happened, but I'll raise it on the dev list.

@tomsey: 2020-09-22 16:47:45
Any luck with (2) separate "Diary" views (my & all)? We're looking for a way to connect individuals on a "one-on-one" basis (the "Diary" posts seems to be seen by everyone in the organization), is the "Message Board" the best way to do this? 😊


Payment Processors - how long for confirmation

@adoptamutt: 2020-04-24 17:48:50
I'm testing the new Payment Processors functionality. I've added PayPal, added a new payment as due, used the "Request Payment", received the email. paid the amount due. How long does it take for the "Received Date" to populate back to ASM?

@robinrt: 2020-04-24 18:35:23
it should be within a minute or two. If you want to send me a few more details (account, person making the payment) I'll have a look into it and check logs to make sure it's working correctly.

@adoptamutt: 2020-04-24 19:33:52
ootw is the account. The payment is for WA000003.

@robinrt: 2020-04-25 08:24:00
Thanks again Karen for spotting this, I've made a mistake in setting the notify_url from PayPal accounts. It's fixed now in production. PayPal have an "IPN History" screen that you can use to replay failed IPNs. If you can replay that one to the correct URL (which you already set on your PayPal account) it should update your existing payment in ASM without you having to pay another dollar to test! https://stackoverflow.com/questions/24906227/where-is-the-ipn-history-on-the-new-paypal-website


ASM3 package install failing because of python3-sqlite dependancy

@julian-poidevin: 2020-04-20 11:47:11
Hello, I'm facing an error when I try to install ASM package on my server, I don't know if it's related to ASM itself or a configuration error on my part (it was working before introduction of sqlite to ASM code base). However, when launching ASM using `make test` command, it works. Here's the error log : --- root@vps759328:~/repo/asm3/build# dpkg -i *.deb (Reading database ... 235313 files and directories currently installed.) Preparing to unpack sheltermanager3_44u_all.deb ... Unpacking sheltermanager3 (44u) over (44u) ... dpkg: dependency problems prevent configuration of sheltermanager3: sheltermanager3 depends on python3-sqlite; however: Package python3-sqlite is not installed. dpkg: error processing package sheltermanager3 (--install): dependency problems - leaving unconfigured Processing triggers for systemd (237-3ubuntu10.38) ... Processing triggers for ureadahead (0.100.0-21) ... Processing triggers for rsyslog (8.32.0-1ubuntu4) ... Errors were encountered while processing: sheltermanager3 --- I tried to install `python3-sqlite` by several ways but without any success so far, any ideas ? Thanks.

@julian-poidevin: 2020-04-20 11:52:05
When running `pip3 install pysqlite`, I got : --- root@vps759328:~/repo/asm3# pip3 install pysqlite Collecting pysqlite Using cached https://files.pythonhosted.org/packages/42/02/981b6703e3c83c5b25a829c6e77aad059f9481b0bbacb47e6e8ca12bd731/pysqlite-2.8.3.tar.gz Complete output from command python setup.py egg_info: pysqlite is not supported on Python 3. When using Python 3, use the sqlite3 module from the standard library. ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-urh27pka/pysqlite/ ---

@julian-poidevin: 2020-04-20 12:03:56
Problem is solved after removing `python3-sqlite` dependency in `makedeb.sh`file (line 64). Is this package really needed as it now seems to be directly in python3 standard library ? I'll submit a PR. Thanks.

@julian-poidevin: 2020-04-20 12:08:50
PR is here : https://github.com/bobintetley/asm3/pull/788

@robinrt: 2020-04-20 12:27:21
Yes, it's part of python3 and there is no Debian package for it. It was not part of python2 so I guess I just changed prefixes without thinking.


Online Forms Tiny on Mobile

@homewardcat: 2020-04-20 04:50:46
Our website links to online adoption and volunteer forms. The boxes are impossibly tiny on mobile. Help! [Screenshot_20200419-204218_Chrome](//muut.com/u/sheltermanager/s3/:sheltermanager:RZdw:screenshot_20200419204218_chrome.jpg.jpg)

@robinrt: 2020-04-20 09:56:23
Thanks, I can confirm it's happening for me too. I'm not sure why Chrome mobile is doing this (it's fine on Firefox mobile) but I've raised an urgent bug for us to look into this today.

@robinrt: 2020-04-20 10:17:32
You can fix this by going to the Edit Header/Footer button in the edit online form screen and adding this line just before the </style> closer: --- input, label, textarea, select { font-size: 110% } ---

@homewardcat: 2020-04-20 23:53:25
The above did not fix the problem.

@robinrt: 2020-04-21 13:23:02
Hi, I can see you're using sheltermanager.com - if you drop a note to help@sheltermanager.com with your account number I'll take a look and see why it isn't working for you.


Animal Control Reporting

@mmover: 2020-04-16 23:00:47
Before I spend too much time trying to figure out the SQL I just want to know if what I'm looking to do is possible. My knowledge of SQL is very basic but I'm confident I can figure it out (with maybe a question or two answered by this lovely forum!) by basing the script off of other reports as long as what I'm wanting to do is possible. It's a perfect side project for this covid-induced slow season. :) Currently our AC manually enters into a spreadsheet the following data: Case Number (ShortCode), DateIn, DateOut, HKD (Humane kennel days: # of days after the stray hold is up that the animal was in our care), and pickup location. This is only done for strays (not transfer ins or surrenders) and the tables the report would generate would ideally be split up by three pick-up locations. City 1, City 2, and Everywhere else within the county (thus excluding any pick-up locations not in county, we have a lot of out-of-county options for pick-up locations that would ideally be excluded). This is done on a monthly basis, the animals who would be pulled would be based on when th ey left the shelter, not by when they arrived. So animals by DateOut, entry category, and pick-up location. 1. Is there a way to create a report that pulls animals by DateOut, with only certain entry categories. 2. Can you then also pull data from only animals whose pickup location equals a set list? 3. If yes, can it generate three tables by locations: City 1, City 2, & County? a. Or at the very least: City 1, City 2, and everywhere else? b. Worst case scenario, only one table for all data with a pick-up location column, that we could sort/remove once exported. 4. Is there a way for the report to automatically generate the HKD, by taking days on shelter and subtracting 5? Or would that have to be done in excel once the report is downloaded as a CSV? Thank you!

@adoptamutt: 2020-04-17 16:09:54
So this isn't exactly what you are looking for, but it might help get you started and give you some ideas. select a.sheltercode, CASE when a.DeceasedDate IS NOT NULL THEN a.DeceasedDate ELSE a.ACTIVEMOVEMENTDATE END AS DateOut, pl.locationname, a.DaysOnShelter - 5 AS HKD from animal a LEFT OUTER JOIN pickuplocation pl ON pl.ID = a.PickupLocationID where a.archived = 1 AND a.EntryReasonID IN (15) AND a.IsPickup = 1 AND a.PickupLocationID IN (1,2) order by pl.locationname

@mmover: 2020-04-19 20:55:54
Thank you! I' will start with this.

@mmover: 2020-05-10 21:15:35
So I more or less have what I'm looking for. I just have two final issues. If I attempt to group by a.PickupLocationID I get the following error: column "a.animalname" must appear in the GROUP BY clause or be used in an aggregate function LINE 2: a.AnimalName, a.Shortcode, atp.AnimalType, a.BreedName, e.Re... ^ Without the 'group by' statement it works. I could replace 'order by movementdate' with 'order by pickulocationid' which does work however then the dates are out of order and I would prefer if they weren't. When I run the report all outcomes show up for the given date range from all locations in our system, it doesn't pull only the ones I want it to. Originally I was looking to have it group by three different pickuplocation groups: the first being (17,11,16,23,8,7,15,6,13,9,20,4,55,1,12,5,28), the second (2) and the third (3). But that is way beyond my capabilities if it's possible. My work around is to have three separate reports each pulling from only one group of ids. And we have quite a few pickuplocations in ASM t hat we don't need for reporting as they're from out of our county so I really can't have all of them in the report. On a side note, is it possible to have the report generate the location name and not just the ID number? If not that's not a problem. If I do three separate reports I don't really need the actual location names. I modified a report I found that had most of the information I wanted to include and simply removed or changed the things I needed because I wouldn't have been able to do it from scratch. I understand by reading the script what it means, why it's written the way it is, and why it's needed but I wouldn't have automatically known I would need multiple CASE WHEN, and ELSE statements in addition to the LEFT OUTER JOIN if I started from scratch. Here's what I have. SELECT a.AnimalName, a.Shortcode, atp.AnimalType, a.BreedName, e.ReasonName, a.EntryReasonID, a.DateBroughtIn, m.MovementDate, a.DaysOnShelter, a.DaysOnShelter -5 as HKD, a.PickUpLocationID, CASE WHEN a.DeceasedDate Is Not Null THEN 'Died' WHEN a.ActiveMovementDate Is Not Null THEN (SELECT MovementType FROM lksmovementtype WHERE ID = a.ActiveMovementType) ELSE 'On Shelter' END AS OutcomeName, CASE WHEN a.DeceasedDate Is Not Null THEN a.DeceasedDate WHEN a.ActiveMovementDate Is Not Null THEN a.ActiveMovementDate ELSE Null END AS OutcomeDate, CASE WHEN a.DeceasedDate Is Not Null THEN (SELECT ReasonName FROM deathreason WHERE ID = a.PTSReasonID) ELSE '' END AS OutcomeQualifier FROM animal a INNER JOIN species s ON a.SpeciesID = s.ID INNER JOIN animaltype atp ON a.AnimalTypeID = atp.ID LEFT OUTER JOIN adoption m ON m.ID = a.ActiveMovementID LEFT OUTER JOIN owner pl ON a.pickuplocationID = pl.ID and a.pickuplocationid IN (17,11,16,23,8,3,2,7,15,6,13,9,20,4,55,1,12,5,28) INNER JOIN entryreason e ON a.EntryReasonID = e.ID WHERE m.MovementDate >= '$ASK DATE Left between$' AND m.MovementDate <= '$ASK DATE and$' AND NonShelterAnimal = 0 ORDER BY m.MovementDate

@mmover: 2020-05-10 22:00:51
I'm sure my issue is that I'm trying to oversimplify sql for the specific locations that I want and that there are factors I'm missing. It tried to use the info Karen gave me but I was getting errors. (I don't remember what they were) But it's probably because I was trying to put it in the wrong place and the logic wasn't right.

@adoptamutt: 2020-05-11 15:10:51
You can get your three different pickupgroups in one report by using the CASE WHEN statements. To get the actual LocationName, you need to add 'INNER JOIN pickuplocation ON pickuplocation.ID = a.pickuplocationid' with 'pickuplocation.LocationName' in the select statement. I don't think you need the Group by in your SQL, I think you need to do that in your HTML using the $$GROUP functionality.


Keyword for Adoption Donation Payment Receipt Date Most Recent

@robinf: 2020-04-16 19:48:05
need help constructing keyword to access information


Feral Colony Tracking

@easel-beth: 2020-04-16 04:00:25
We want to start to track which feral colony TNR cats are from. Our original thought was to use the litter function. However we would then not be able to track litters inside a Colony. Have any other users tried to do something like this? Any suggestions on how to do something like this?

@adoptamutt: 2020-04-16 04:28:18
I’d be interested to hear what others are doing too. I’m using the Retailer system for this right now. Each colony name is given the retailer flag and then cats moved to that retailer. Added additional fields under the Additional tab for Colony feeding schedule, Colony Feeder, etc. Of course those fields appear on every person record. Under the Media tab, we keep pictures of feeding stations, housing, etc.

@robinrt: 2020-04-16 08:29:05
That's an interesting idea Karen. Rather than using retailers, you could create an additional field of type person to hold the colony for animal records and make the colony animals non-shelter. In this situation, the animals would appear under the "Links" tab of the colony/person record instead of movements. You could also use the log and have types for colony related info to avoid putting additional fields on every person record.

@mketcham: 2020-04-19 21:44:12
We do basically what Rob said. There is an additional field that is listed under the Animal Entry section. I created a Person flag called Colony Name. Under the additional field in the Entry Section, I select the "person" that is the colony. Whenever I have a cat come in from that colony, I tag them with that "person." The cats in that colony are listed in the Links tab as Rob mentioned. Bonus, I can make a map of the colonies by using the People with Flags Map report. [Fields](//muut.com/u/sheltermanager/s3/:sheltermanager:ebbP:fields.jpg.jpg) [ColonyName](//muut.com/u/sheltermanager/s3/:sheltermanager:N6Fq:colonyname.jpg.jpg) [PeopleFlagMap](//muut.com/u/sheltermanager/s3/:sheltermanager:ALU9:peopleflagmap.jpg.jpg) [Entry](//muut.com/u/sheltermanager/s3/:sheltermanager:aXix:entry.jpg.jpg)


Change field type of Reason for Appointment in clinic tab

@testdrupal: 2020-04-14 12:06:17
i want to change Reason for Appointment type "textarea" to "dropdown" and this is located in clinic tab create new appointment form you can see right side this field.

@testdrupal: 2020-04-14 12:10:28
please provide me details

@testdrupal: 2020-04-21 06:23:14
Hello please ans me.


Sign button not available

@ted979: 2020-04-12 19:39:51
Hi all, I'm new to ASM and have managed to get most of the way to a working installation - everything's working as expected, but there's no 'sign' button available on any documents or in the user settings page. I've installed all the dependencies and can't find anything in the logs. Has anyone come across this before?

@adoptamutt: 2020-04-12 21:50:01
Can you see it just to the right of the “Email PDF” button in the Media Tab? Once you select a document already saved to the Media Tab, it should then be selectable.

@ted979: 2020-04-14 15:54:34
No, there's nothing there on the media tab. Also the user signature option is missing from the user settings page. Is there something I need to configure first or a dependency to install?

@adoptamutt: 2020-04-14 16:04:46
What options do you have in the Media Tab?

@ted979: 2020-04-14 16:10:22
Here's a screenshot, thanks for your help :) Everything else is working fine, I can generate documentation, convert to PDF etc. [Screenshot](//muut.com/u/sheltermanager/s2/:sheltermanager:Ul8f:untitled.png.jpg)

@adoptamutt: 2020-04-14 18:49:04
How strange. Sorry, I don't know. I'm sure the developers will respond soon.

@julian-poidevin: 2020-05-17 07:53:06
It may be because you are using the free version of ASM. I think the signature feature is only for "pro" users of ASM.

@julian-poidevin: 2020-06-08 23:28:51
Unfortunately Bob did not respond, I may post again. I checked in the manual and the reason why the sign button is missing is not explained anywhere.

@julian-poidevin: 2020-06-09 11:08:13
I had an answer : >Signatures are disabled by default. You need: >`electronic_signatures = touch` >in your asm3.conf file


A place for retail items

@testdrupal: 2020-04-11 11:30:49
is there any module or anything in asm3 to sell product from the retail item store

@robinrt: 2020-04-11 15:04:36
There isn't right now. It's something we plan to add in the next release. You can add stock under Financial->Stock, and you can take payments under Financial->Receive a payment. There's no way to link the two at the moment.


APT size mismatch when trying to upgrade to 43

@titnono: 2020-04-10 20:58:52
Hello, I have some time to kill today... but, this is what I get when I try to upgrade ASM3 : E: Impossible de récupérer http://public.sheltermanager.com/deb/./sheltermanager3_43_all.deb Le fichier a une taille incohérente (12855592 != 12855188). Le miroir est peut-être en cours de mise à jour ? [IP : 104.26.14.150 80] Hashes of expected file: - SHA256:a42831b5695a17be691c652c019e4d5683a39a14e70ae432707d198a6404d27 8 - SHA1:fa2283754d7161fab05a78b26d655a6eb1d22a3e [weak] - MD5Sum:efbb34a6993a512805606ff8033f9adf [weak] - Filesize:12855188 [weak] E: Impossible de récupérer certaines archives, peut-être devrez-vous lancer apt-get update ou essayer avec --fix-missing ? The IP 104.26.14.150 belong to CloudFlare. Is there any caching problem? (like in this post : https://tvheadend.org/issues/5264) Thanks! Regards

@robinrt: 2020-04-10 21:23:00
Thanks for letting me know, I've regenerated the package file. Let me know if that hasn't fixed it for you.

@titnono: 2020-04-10 21:34:15
Thank you, it works now!

@titnono: 2020-04-10 22:06:48
OK after the upgrade, I edited /ets/asm3.conf like previous versions. But when I try to restart ASM3 service, I get : Failed to restart sheltermanager3.service: Unit sheltermanager3.service not found. Is it requiered to use Apache with 43 (& make the mod for python3-webpy?)? I'm on Ubuntu 18.04 LTS Thanks again!

@titnono: 2020-04-10 23:06:17
OK. Here is what I to to upgrade my ASM3 42 (with built-in web server) to 43 (apache) on my Ubuntu 18.04 LTS server. It seems to work, but 'm facing a new problem : the system get me back to the login screen when i go to a new page & I have to enter my password again... 1) get a backup of my /etc/asm3.conf & my MySQL Database 2) Update apt repo : sudo rm /etc/apt/sources.list.d/sheltermanager3.list echo "deb [trusted=yes] http://public.sheltermanager.com/deb/ ./" | sudo tee -a /etc/apt/sources.list.d/sheltermanager3.list 3) Update & upgrade sudo apt update sudo apt full-upgrade 4) edit /etc/asm3.conf I took my old asm3.conf and made these mods : base_url = http://mydomain.com:5000 to base_url = http://mydomain.com/asm service_url = http://mydomain.com:5000/service to service_url = http://mydomain.com/asm 5) Install apache2 with mod_wsgi apt-get install apache2 libapache2-mod-wsgi-py3 a2enmod wsgi 6) edit /etc/apache2/sites-available/000-default.conf & add this at the bottom of the file WSGIScriptAlias /asm /usr/lib/sheltermanager3/code.py/ Alias /asm/static /usr/lib/sheltermanager3/static AddType text/html .py <Directory /usr/lib/sheltermanager3> Require all granted </Directory> 7) Edit /usr/lib/python3/dist-packages/web/httpserver.py Add: self.directory = os.getcwd() After (line 230 for me) : self.start_response = start_response 7) Restart Apache service apache2 restart 9) Open a browser & go to http://mydomain.com/asm

@titnono: 2020-04-11 04:36:27
I think everything is good now… What I did to resolve my session issue (I don't know what exactly was the right thing) : 4) A mistake in this step in my previous post… service_url = http://mydomain.com:5000/service to service_url = http://mydomain.com/asm/service 10) edit /etc/apache2/sites-available/000-default.conf Uncomment & add ServerName : ServerName mydomain.com 11) Activated memcached apt-get install memcached libmemcached-tools -y systemctl start memcached systemctl enable memcached 12) edit /etc/asm3.conf Remove comment to activate memcache 13) Downloaded today asm-master.zip (44u) from github & sync the src/ folder in the zip with /usr/lib/sheltermanager3/ 14) -Reboot! Wish it can help!

@robinrt: 2020-04-11 09:01:31
thanks, I'll try and make some of this a little friendlier for the next release and set up an apache2 sites-available file, pull in mod_wsgi and memcached as a deps etc.


Cage Card - short version of reference number and declaw status

@mmover: 2020-04-09 17:54:31
I have customized a Cage Card report to effectively have the same information has our health check sheets. But there are two areas I'm not sure how to change and I'm only just starting to learn SQl. The first is the short version of the reference number for an animal, We leave the code that automatically generates when a new animal is added to the system but change the short code to the number system we use internally. I'm okay with the code that automatically generates with the animal staying on the report but would really like the short code on there as that's their case number. Is there a way to get that in the information in the report? Does anyone know what that field is called? Second, we have the declaw status on the cage card but when the report generates it shows up as $declawed which I assume is a reference to the SQL line but isn't showing the result of the SQL. Here is the SQL for declaw status: (SELECT Name FROM lksyesno WHERE ID = animal.declawed ) AS Yes, For reference here is the SQL for alter status and it shows up correctly: (SELECT Name FROM lksyesno WHERE ID = animal.neutered) AS altered, Thank you for your help!

@mmover: 2020-04-09 18:00:00
Also if there's a way to have the animal's age instead of estimated date of birth that would be great too!

@robinrt: 2020-04-09 18:01:41
it should be AS Declawed - not AS Yes. The field is called ShortCode - use it instead of ShelterCode

@adoptamutt: 2020-04-09 18:03:57
What is the format of the number system you use internally? Seems like it would be easier on you if you let ASM assign the number for you.

@adoptamutt: 2020-04-09 18:06:33
The field for age is "ANIMALAGE".

@mmover: 2020-04-09 18:52:48
Awesome thank you so much for all your help! Worked like a charm. The number system we use is based on the forms we use. Because we're a stray holding facility we have to keep records of strays and surrenders separately for reporting reasons, thus the forms are different depending on if the animal is a stray or surrender. We have them professionally printed as the stray forms need to have a carbon copy and the information on the forms differs between strays and surrenders. The five-digit number on the forms is used on all internal paperwork so we know what animal the paperwork goes to in case it gets misplaced. We would also know just by looking at the number and what it starts with whether or not it is a stray or surrender. :)

@adoptamutt: 2020-04-10 15:26:22
Are the printed forms you are talking about something the public fills out when surrendering or bringing in a stray? Just wondering if ASM could help with that by maybe utilizing two different animal types like "Stray" vs. "Owner Surrender" in your numbering system.

@mmover: 2020-04-11 22:29:58
For the surrender forms there are questions we ask the owners but staff fills them out,. Staff fills out the stray forms as well, utilizing information gotten from the finders, whether AC picked the animal up or it was brought to the shelter by a member of the public. We do have the animal type drop down utilized to indicate whether the animal is a stray versus surrender and the entry category which denotes how the animal came to us, with distinctions between strays if it was an impound, brought in by Animal Control, brought in by the public, or a DOA as well as if it was a surrender, quarantine, or owner requested euthanasia. Unfortunately even if there was a way to have the ASM shortcode that's generated generate to what our next case number would be when stray vs surrender was indicated, we'd still need staff to verify the case number is the same one as on the form. As we keep stray cats and dogs in separate binders as well as surrendered cats and dogs in separate binders, with small animals in a single binder. Our customer relations enters all intake data into ASM and typically grabs one binder at a time. So even if the case numbers 76629-76634 needed to be entered it may be a combination between cats and dogs and would be in different binders. I hope that makes sense and answers your question? I also have another question. I'm trying to modify the subreport for vaccination history to show the given and due(required) dates. but keep getting a syntax error for that line. I used the wordkeys appendix to find the correct name of the field "vaccinationrequired" so I'm not sure why it isn't working. I did just realize that the workd key is for ASM3 and not 2 but I honestly don't know what the difference between 2 and 3 is and which version we have if that's what it is. Original SQL: SELECT vaccinationtype.VaccinationType, animalvaccination.DateOfVaccination, animalvaccination.Comments AS VaccComments FROM animalvaccination INNER JOIN vaccinationtype ON vaccinationtype.ID = animalvaccination.VaccinationID WHERE animalvaccination.AnimalID = $PARENTKEY$ What I thought the SQL would be but is giving me the syntax error: Syntax error at or near "animalvaccinaton" Line 4: animalvaccination.VaccinationRequired ^ SELECT vaccinationtype.VaccinationType, animalvaccination.DateOfVaccination, animalvaccination.Comments AS VaccComments animalvaccination.VaccinationRequired FROM animalvaccination INNER JOIN vaccinationtype ON vaccinationtype.ID = animalvaccination.VaccinationID WHERE animalvaccination.AnimalID = $PARENTKEY$

@robinrt: 2020-04-12 11:08:19
These are table column names - not wordkeys. DateRequired and DateOfVaccination are the column names you want. DateOfVaccination is already in there. You can browse column names by typing the table name followed by a dot and then pressing CTRL+SPACE. Eg: animalvaccination.(CTRL+SPACE)

@adoptamutt: 2020-04-12 13:44:35
Sounds like you have a very large volume of animals coming in. I asked because what we do is: as the public comes in to surrender an animal, we have a posted QR code that they scan on their phone which directs them to our on-line surrender form (this could be stray or owner surrender). We add the animal manually, but ASM just released the ability to add an animal. So I'm wondering if you would also gather info about the animal as well on the surrender form and have ASM create the animal record, as well as the person record, automatically through the on-line form. You would need to have a Stray surrender online form and an owner surrender online form that could be linked to those specific animal types for that to work, which I'm not sure ASM can do right now. Maybe the ASM folks will jump in on this. Just a thought. But if you can't do the "add animal" part, at least you could automatically add the person and then you would have the electronic version of the form stored in ASM and you possible wouldn't need your binders. Staff could even review the form whil e the public is still in the building to add data or clarify anything the public put on the form. ASM could email the people who do the data entry automatically when the form is submitted. Just brainstorming during the lockdown. :)

@robinrt: 2020-04-12 15:18:33
Hi Karen, you can specify the animal type in your form with the "type" field name and make it a lookup containing just the options you want available (even if it's only one!). I've just noticed that I didn't put that in the docs, so I'll update those today.

@mmover: 2020-04-13 17:02:52
Of course! I should have realized this. Thank you so much Robin! Karen, that's an interesting thought! We do have surrender profiles available online for people to fill out ahead of time if they choose, but they aren't online forms, just pdfs they could print out. The information we get for strays is very minimal, where the finder lives where the animal was found, what municipality, etc. The info on the surrender forms is pretty basic too, animal's name, description, age, vaccination status, good with kids, cats, dogs, health issues, bite history, reason for surrender, previous owner's info. etc. The surrender profiles also ask those questions and more, but in more detail. Would you be able to show me what your online forms look like? I have noticed other shelters utilizing online forms but admit to knowing very little when it comes to website stuff. We have a different staff member who runs our site. I picked up SQL as a side project during the lockdown. :) If there's a way for that information or even the basic info to be input in to ASM or atleast for the process to become more streamlined I am all for that!

@adoptamutt: 2020-04-13 17:08:43
Megan, email me at waldkl@yahoo.com and I'll show you what we've done.


Unable to load asm

@jimdunne: 2020-04-08 14:00:39
I have just done to 06/04 update to asm on my ubuntu box and now cannot access asm "Firefox can't establish a connection to the server" I have updated etc/asm3.conf with db info and I have restarted apache - what am I missing please?

@jimdunne: 2020-04-08 20:57:54
If I run python /usr/lib/sheltermanager3/code.py 5000 from terminal and then try localhost:5000 it tries to load the page, but I get a blank white screen. Lots of 404 errors, but the paths are correct. When I close terminal and try again firefox cannot connect to server. Should asm run as a service? I tried to run sudo service sheltermanager3 start and get Failed to start sheltermanager3.service: Unit sheltermanager3.service not found. I have not changed any of the defaults, other than the db data in asm3.conf. Sitedefs.py says to no longer edit it. Have I missed something silly?

@robinrt: 2020-04-09 18:15:13
It's possible you're having the same trouble as Debian Buster users and python webpy is broken (I think Ubuntu pull from Debian). Try uninstalling python3-webpy, then installing it with pip like this: --- pip3 install git+https://github.com/webpy/webpy#egg=web.py --- If you don't have pip3, run --- apt-get install python3-pip python3-dev ---

@robinrt: 2020-04-09 18:42:33
Correction (as that will get you a now broken web.py), use --- pip3 install git+https://github.com/webpy/webpy.git@master ---

@jimdunne: 2020-04-09 18:57:13
The code does not work I'm afraid - jim@jim-OptiPlex-7010:~$ pip3 install git+https://github.com/webpy/webpy.git@master Collecting git+https://github.com/webpy/webpy.git@master Cloning https://github.com/webpy/webpy.git (to master) to /tmp/pip-698lyuuj-build Error [Errno 2] No such file or directory: 'git': 'git' while executing command git clone -q https://github.com/webpy/webpy.git /tmp/pip-698lyuuj-build Cannot find command 'git'

@robinrt: 2020-04-09 19:22:35
I think I've sent you down a rabbit hole here - you said you were starting it with python not python3. That should be fine assuming you had the dependencies installed before. Please ignore the bits about python3-webpy. We're going to need diagnostic info. What error messages are you seeing at the console when accessing the system via running python code.py 5000? We no longer setup sheltermanager3 as its own service. The README has instructiosn for setting up apache with mod_wsgi as this is the best way to run ASM.

@jimdunne: 2020-04-09 19:35:32
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/web/application.py", line 255, in process return p(lambda: process(processors)) File "/usr/lib/python3/dist-packages/web/session.py", line 83, in _processor self._load() File "/usr/lib/python3/dist-packages/web/session.py", line 104, in _load d = self.store[self.session_id] File "/usr/lib/sheltermanager3/code.py", line 78, in __getitem__ if rv is None: raise KeyError(key) KeyError: '3d2d9cbce6da7eb23c65d4cc96634becb7bb85b4' 127.0.0.1:38742 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /config.js" - 500 Internal Server Error 127.0.0.1:38824 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:38814 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:38826 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38820 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:38822 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:38818 - - [09/ Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38744 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:38816 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:38762 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.css" - 500 Internal Server Error 127.0.0.1:38836 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38848 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /static/lib/jquery/3.4.1/jquery.min.js" - 404 File not found 127.0.0.1:38742 - - [09/Apr/2020 19:31:09] "HTTP/1.1 GET /static/lib/jqueryui/jquery-ui-1.12.1/jquery-ui.min.js" - 404 File not found 127.0.0.1:38934 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38932 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38944 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38928 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38930 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38940 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:39002 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/touchpunch/0.2.3/jquery.ui.touch-punch.min.js" - 404 File not found 127.0.0.1:38936 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38938 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38946 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 500 Internal Server Error 127.0.0.1:39004 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/moment/2.17.1/moment.min.js" - 404 File not found 127.0.0.1:39006 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/mousetrap/1.4.6/mousetrap.min.js" - 404 File not found 127.0.0.1:39008 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/asmselect/1.0.4a/jquery.asmselect.js" - 404 File not found 127.0.0.1:39010 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/base64/0.3.0/base64.min.js" - 404 File not found 127.0.0.1:39012 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/lib/codemirror.js" - 404 File not found 127.0.0.1:39014 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/display/fullscreen.js" - 404 File not found 127.0.0.1:38950 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:39016 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/show-hint.js" - 404 File not found 127.0.0.1:39018 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/sql-hint.js" - 404 File not found 127.0.0.1:39020 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/javascript/javascript.js" - 404 File not found 127.0.0.1:38952 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:39022 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/xml/xml.js" - 404 File not found 127.0.0.1:38956 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38954 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:38948 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:39024 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/htmlmixed/htmlmixed.js" - 404 File not found 127.0.0.1:39026 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/sql/sql.js" - 404 File not found 127.0.0.1:38980 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:39028 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/exifrestorer/1.0.0/exifrestorer.js" - 404 File not found 127.0.0.1:39030 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/fullcalendar/3.2.0/fullcalendar.min.js" - 404 File not found 127.0.0.1:39032 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/signature/1.1.1/jquery.signature.min.js" - 404 File not found 127.0.0.1:39034 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/jquery.tablesorter.min.js" - 404 File not found 127.0.0.1:39036 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/jquery.tablesorter.widgets.min.js" - 404 File not found 127.0.0.1:39038 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/timepicker/0.3.3/jquery.ui.timepicker.js" - 404 File not found 127.0.0.1:39040 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/tinymce/4.7.13-asm1/tinymce/js/tinymce/tinymce.min.js" - 404 File not found 127.0.0.1:39042 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/lib/pathjs/0.8.4.smcom/path.min.js" - 404 File not found 127.0.0.1:39044 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /config.js" - 200 OK 127.0.0.1:39044 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/images/logo/icon-128.png" - 404 File not found 127.0.0.1:39046 - - [09/Apr/2020 19:31:10] "HTTP/1.1 GET /static/images/logo/icon-32.png" - 404 File not found

@jimdunne: 2020-04-09 19:50:20
For the 404 errors, I can navigate to those files in nautilus, so no idea what's happening there,

@robinrt: 2020-04-09 19:59:47
Ah, I see the problem. The first build we put up had a mistake in it, you must have downloaded during that time. If you redownload the package from the website and reinstall it, it should correct most of those errors.

@jimdunne: 2020-04-09 20:39:41
I've just finished partitioning a Win 10 machine, installed Ubuntu 18.04.4 LTS and then Apache LAMP mysql, phpmyadmin etc and then installed Sheltermanager with all the dependencies. I get the same problems on this fresh install - cannot connect to server @ localhost:5000 (or 127.0.0.1:5000). When I ran python3 /usr/lib/sheltermanager3/code.py 5000 I was able to go to the create a database screen, but then once that was finished I get a blank white screen where I should get the log in screen. I get the same error codes as on the other machine, and 404 errors, where I can navigate to the files in nautilus. When Terminal is closed, once again I am unable to connect to server. I imported an sql dump from the original machine via phpmyadmin, and that all worked ok, and I can see all my data browsing phpmyadmin, so mysql etc must be working. I get the default apache page if I navigate to localhost, so I know the web server is working. I'm stuffed here now, I can't even get a list of what animals need meds etc. and am getting grief from the Mrs.

@jimdunne: 2020-04-10 10:08:53
Going a bit further, asm does not appear to be listening on port 5000?? jim@jim-OptiPlex-7010:~$ sudo netstat -an | grep "LISTEN " tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN tcp6 0 0 :::139 :::* LISTEN tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::631 :::* LISTEN tcp6 0 0 :::445 :::* LISTEN and connection to port 5000 is refused?? jim@jim-OptiPlex-7010:~$ sudo wget localhost:5000 --2020-04-10 10:05:02-- http://localhost:5000/ Resolving loc alhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:5000... failed: Connection refused.

@robinrt: 2020-04-10 10:28:41
Not sure how you could see the create database screen without it listening? You're definitely using python3 now, which means you probably have the same broken webpy that Debian are shipping where static content is broken. This is also consistent with the create database screen working when nothing else does because that screen does not have any static content. There's a one line fix you can apply to web.py's httpserver file to fix it. It's in the README here: https://github.com/bobintetley/asm3/blob/master/README.md#debian-python3-webpy

@jimdunne: 2020-04-10 10:45:23
I can't see an init function near line 198, find shows init a few times - could you paste a line of code from where I need to do it please?

@robinrt: 2020-04-10 11:18:50
It's 4 lines above. You want it below the line that says self.start_response = start_response. This is Python code, the indentation has to match exactly so the function looks like this: --- def __init__(self, environ, start_response): self.headers = [] self.environ = environ self.start_response = start_response self.directory = os.getcwd() ---

@jimdunne: 2020-04-10 12:05:38
Still no joy I'm afraid. Same on both boxes.

@jimdunne: 2020-04-10 12:21:26
I get a blank page running code.py, looks like static content is not being loaded still? jim@jim-OptiPlex-7010:~$ python3 /usr/lib/sheltermanager3/code.py 5000 config: /etc/asm3.conf http://0.0.0.0:5000/ 127.0.0.1:50996 - - [10/Apr/2020 12:13:32] "HTTP/1.1 GET /" - 303 See Other 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /main" - 303 See Other 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /login" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /i18n.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /schema.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /config.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.css" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.css" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:33] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51012 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/asmselect/1.0.4a/jquery.asmselect.css" - 404 File not found 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51024 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/lib/codemirror.css" - 404 File not found 127.0.0.1:51004 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/display/fullscreen.css" - 404 File not found 127.0.0.1:51026 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/show-hint.css" - 404 File not found 127.0.0.1:51028 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/fullcalendar/3.2.0/fullcalendar.min.css" - 404 File not found 127.0.0.1:51032 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/timepicker/0.3.3/jquery.ui.timepicker.css" - 404 File not found 127.0.0.1:51030 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/themes/theme.asm.css" - 404 File not found 127.0.0.1:51034 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/jqueryui/jquery-ui-themes-1.12.1/themes/asm/jquery-ui.css" - 404 File not found 127.0.0.1:51036 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/modernizr/modernizr.min.js" - 404 File not found 127.0.0.1:51038 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/jquery/3.4.1/jquery.min.js" - 404 File not found 127.0.0.1:51040 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/jqueryui/jquery-ui-1.12.1/jquery-ui.min.js" - 404 File not found 127.0.0.1:51044 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/moment/2.17.1/moment.min.js" - 404 File not found 127.0.0.1:51042 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/touchpunch/0.2.3/jquery.ui.touch-punch.min.js" - 404 File not found 127.0.0.1:51046 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/mousetrap/1.4.6/mousetrap.min.js" - 404 File not found 127.0.0.1:51048 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/asmselect/1.0.4a/jquery.asmselect.js" - 404 File not found 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51050 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/base64/0.3.0/base64.min.js" - 404 File not found 127.0.0.1:51000 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/display/fullscreen.js" - 404 File not found 127.0.0.1:51052 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/lib/codemirror.js" - 404 File not found 127.0.0.1:51054 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/show-hint.js" - 404 File not found 127.0.0.1:51056 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/sql-hint.js" - 404 File not found 127.0.0.1:51060 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/xml/xml.js" - 404 File not found 127.0.0.1:51058 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/javascript/javascript.js" - 404 File not found 127.0.0.1:51062 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/htmlmixed/htmlmixed.js" - 404 File not found 127.0.0.1:51066 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/exifrestorer/1.0.0/exifrestorer.js" - 404 File not found 127.0.0.1:51064 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/sql/sql.js" - 404 File not found 127.0.0.1:51068 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/fullcalendar/3.2.0/fullcalendar.min.js" - 404 File not found 127.0.0.1:51070 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/signature/1.1.1/jquery.signature.min.js" - 404 File not found 127.0.0.1:51072 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/jquery.tablesorter.min.js" - 404 File not found 127.0.0.1:51074 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/jquery.tablesorter.widgets.min.js" - 404 File not found 127.0.0.1:51076 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/timepicker/0.3.3/jquery.ui.timepicker.js" - 404 File not found 127.0.0.1:51078 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/tinymce/4.7.13-asm1/tinymce/js/tinymce/tinymce.min.js" - 404 File not found 127.0.0.1:51080 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/pathjs/0.8.4.smcom/path.min.js" - 404 File not found 127.0.0.1:51082 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/display/fullscreen.js" - 404 File not found 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51008 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/show-hint.js" - 404 File not found 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /x.js" - 200 OK 127.0.0.1:51010 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/addon/hint/sql-hint.js" - 404 File not found 127.0.0.1:51006 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/javascript/javascript.js" - 404 File not found 127.0.0.1:51084 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/xml/xml.js" - 404 File not found 127.0.0.1:51086 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/htmlmixed/htmlmixed.js" - 404 File not found 127.0.0.1:51088 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/codemirror/5.11/mode/sql/sql.js" - 404 File not found 127.0.0.1:51090 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/exifrestorer/1.0.0/exifrestorer.js" - 404 File not found 127.0.0.1:51092 - - [10/Apr/2020 12:13:34] "HTTP/1.1 GET /static/lib/fullcalendar/3.2.0/fullcalendar.min.js" - 404 File not found 127.0.0.1:51094 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/lib/signature/1.1.1/jquery.signature.min.js" - 404 File not found 127.0.0.1:51096 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/jquery.tablesorter.min.js" - 404 File not found 127.0.0.1:51098 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/lib/tablesorter/2.7.12/jquery.tablesorter.widgets.min.js" - 404 File not found 127.0.0.1:51100 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/lib/timepicker/0.3.3/jquery.ui.timepicker.js" - 404 File not found 127.0.0.1:51102 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/lib/tinymce/4.7.13-asm1/tinymce/js/tinymce/tinymce.min.js" - 404 File not found 127.0.0.1:51104 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/lib/pathjs/0.8.4.smcom/path.min.js" - 404 File not found 127.0.0.1:51106 - - [10/Apr/2020 12:13:35] "HTTP/1.1 GET /static/images/logo/icon-32.png" - 404 File not found


Changed Name, Description & Good with children Fields... but....

@tomsey: 2020-04-07 08:36:44
.... when I click on the "Share" button, then "Link to this animal", the information has not been updated, it still shows the old information.... Any ideas what I'm doing wrong? 🤔

@robinrt: 2020-04-07 09:22:32
Your browser will cache the old page for an hour. Press CTRL+R when viewing the link to force a reload.

@tomsey: 2020-04-07 15:56:50
It worked like a charm... You're the BEST!!! Thank you!! 😊


Data changing back..

@connor9220: 2020-04-02 15:42:06
Been doing some customizing of the options and playing around with a few animal entries. I've noticed that sometimes, the info reverts back to what it was before, with a new log & audit entry. In this case, the assignment of a animal to a location unit keeps blanking out after I assign it. Also, I've noticed that the config options revert back too. Please note: I've been bouncing between my main PC and a laptop, logged into ASM under the same username, and probably not logged out while on the other machine.

@robinrt: 2020-04-02 15:51:11
I'm not sure about the options screen, more info needed there. What you're describing with locations can happen if your default shelter view mode is set to "Location" and someone drags and drops an animal. If you drag/drop to the same location in location only mode, it can erase the unit and you will see an audit/log entry with the username of the person that did it the drag/drop.

@connor9220: 2020-04-02 16:34:30
I just found that. Accidental dragging while trying to select the animal, 99% of the time, I didn't even notice I dragged it. I was just trying to select it.


Publish On Hold Strays

@connor9220: 2020-04-02 06:12:41
How can we html/ftp publish a separate page of animals that aren't up for adoption, but are in our stay holding period so people can look at them and see if their animal has been found and is located at the shelter? I don't think it's possible with the current publisher. What would need to be added/change code/file wise to make a secondary publisher with this task in mind?

@robinrt: 2020-04-02 09:10:52
This service call: https://sheltermanager.com/repo/asm3_help/service.html#html-held-animals

@connor9220: 2020-04-02 15:39:15
Thanks, I'll check that out.

@inghamn: 2020-06-08 16:37:34
Are there plans to make a json service for this as well?

@robinrt: 2020-06-09 08:57:00
I've added json/xml_held_animals call to the master branch.

@inghamn: 2020-06-11 14:37:20
Awesome, I just saw the new functions on service.py!

@connor9220: 2020-07-16 21:12:08
Any chance of getting one for js like animal_view_adoptable_js ?

@connor9220: 2020-07-16 21:32:11
Would need to work regardless of location too after looking at the get_animal_data_query function.


Lost and found options

@srupe05: 2020-03-25 13:21:46
I am trying to set up the lost and found options to be more specific. I have adjusted options and triggered the batch process to regenerate the report; however, I am still getting animals with a high percentage match on the report. It doesn't seem like the adult, calico, guinea pig or the baby, female, calico feline, should be matching to a lost report for a young adult, male, feline. Should my match points be set up differently in some way? I appreciate anyone's help! [Lostfound rpt](//muut.com/u/sheltermanager/s3/:sheltermanager:l7MI:lostfoundrpt.jpg.jpg) [Lostfound options](//muut.com/u/sheltermanager/s1/:sheltermanager:Gigr:lostfoundoptions.png.jpg)

@robinrt: 2020-03-25 13:27:25
That looks pretty odd. Is this happening when you generate from the animal itself, or is this the full list of matches from the ASM->Lost and Found section of the menu? If you are a sheltermanager customer, please email your account number to help@sheltermanager.com and I'll take a closer look to see what's happening.

@srupe05: 2020-03-25 13:30:21
It is happening when generating from the animal and when viewing the full list. Will email our account information. Thank you.


Weights in grams

@jimdunne: 2020-03-23 13:22:34
Is it possible that the weight fields could be change to show grams rather than kg? We are a hedgehog rescue, and hedgehogs are generally below 1kg, with newborns as little as 19g. Some volunteers have difficulty working out that 0.1kg is 100g etc, so it would be beneficial to us if weights could be shown in grams.

@robinrt: 2020-03-23 14:11:55
The weight box doesn't care what you put in it and it doesn't convert anything at any point. I don't see any reason you couldn't enter your hedgehog weights in grams in there. It should be pretty obvious that you don't get 100kg hedgehogs!

@jimdunne: 2020-03-23 15:46:18
That'll do it, thanks!


search box and "special" characters

@grosbarbu: 2020-03-21 11:52:51
Good morning I found that the search box is case-sensitive ONLY for "special" char, examples: Ñ, ñ, Á á Ç ç ..... I tested it in the on-line demo: (I'm with Debian 9 and ASM 4.0 -> same thing) create 2 animals with names: Ñoca and Peña if you look for " Ñ " only the first is found, looking for " ñ " only the second, the others "normal" char can be upper or lower case no matter Is there a way to avoid this ? Thank you for your work Best regards ml

@robinrt: 2020-03-21 11:55:22
There is no way to avoid this currently.

@grosbarbu: 2020-03-21 11:59:16
Thank you


Phone numbers on report - how to?

@jimdunne: 2020-03-17 12:55:06
I need to add phone numbers to the "Shelter Inventory with Original Owner Address" report, could someone give me a pointer how to do this please.

@adoptamutt: 2020-03-17 13:06:34
Settings

@adoptamutt: 2020-03-17 13:10:01
Take a look at how the other owner fields are formatted in the select statement and then just add mobiletelephone, hometelephone, worktelephone with the same format. Then do the same in the HTML.


Adding a picture from phone

@bkrodle: 2020-03-16 22:00:11
I have an adroid 10, samsung note 9 and am using ASM in desktop mode. I created an incident report and want to add a picture of the dog in the incident to the report. I have the picture on my phone, but when I click add attach file, the dialoug box comes up to choose a file, but pressing the button does nothing. I can't choose the picture from the gallery. Nor can I share the picture from my gallery to ASM. Am I doing something wrong or is it an adroid thing? Getting IPADs soon and want to be able to do this for my officers.

@robinrt: 2020-03-17 09:52:21
I'm afraid it's a bug in the toolkit our app uses. If you use your mobile browser and login to http://m.sheltermanager.com with it instead of using the app, that should work correctly. You can also choose "Photo uploader" from the dropdown below the password field when logging into the app.

@bkrodle: 2020-03-17 13:01:31
Thanks! I was trying to attach a photo to an incident report. We use the uploader here at the building.


Online form import fields

@srupe05: 2020-03-14 17:59:38
I am creating an online form for people to report a lost/found animal. I noticed there is no import field for the date the animal was lost/found. When creating a report from the online form, the Date Lost defaults to the day the report was created. Since the match list looks at the date an animal entered the shelter, this may overlook some animals or require physically changing the date once the lost/found animal record is created. Additionally, the areazipcode import field from the online form is not importing to the lost/found animal record. It may be possible that I am overlooking something. I appreciate any help!

@robinrt: 2020-03-14 18:05:12
That's correct, the date will have to be modified afterwards. I've applied a fix to our code for the areazipcode problem, it will be deployed tomorrow - thanks for spotting that!

@srupe05: 2020-03-14 18:09:23
Thank you!


Found Animals microchips stopped publishing- no errors on report

@lisa40278: 2020-03-13 16:50:00
We publish our microchips to Found Animals on a regular basis. It seems that starting in March (and one case from January), the microchips are no longer publishing to adopters OR our organization. When we look up microchips, it's always the backtracking info that is listed. The microchip publishing reports aren't showing any errors. Would this be a ASM issue or Found Animals issue?

@robinrt: 2020-03-13 20:16:40
If there aren't any errors in the publishing logs and the datafiles are being correctly sent, the issue is more likely to be with Found. I'm happy to have a look and get in touch with Found if you like - send an email with your account number to help@sheltermanager.com


Applications flowing through ASM

@mark_murphy: 2020-03-10 17:08:17
We use ASM for a portion of what it can do. Our app process is all paper today. I can see that ASM can encompass apps, but I am not fully understanding how. For those that have done this, does anyone have a documented process for implementing this that they would be willing to share? I can probably figure it out through trial and error with enough time, but I know others have already perfected this and would love to benefit from that. Thanks in advance. Mark at AAF

@adoptamutt: 2020-03-10 17:39:00
1. Create online app. See the recent post about using the “Reservation Book” to manage the apps. Optional. 2. Post link to website. 3. When app is filled out, whoever designated will receive email. There will also be a notification on the Home page. 4. Designate someone to process the apps in the queue. 5. Decide if you want the app attached to the Media Tab of the animal as well as the person. 6. To attach/create app to the person record, put a check by the app, then select “Create person”. To attach to animal, choose Attach using animal name.

@mark_murphy: 2020-03-10 17:46:10
Wow. That was quick. Thank you! Most of the apps that we get are from people that come into the shelter. So would I be correct in assuming that for those people who come in and fill out a paper app, that our staff then keys that into the on-line app as if the applicant did it on-line? I assume I create the app by going to edit on-line forms? I have not used this, but will start looking at it. Thanks again.

@adoptamutt: 2020-03-10 19:09:36
For those coming into the shelter, we just enter the person data then scan app to PDF and attach to person in Media Tab.

@adoptamutt: 2020-03-10 19:36:13
It would be even better if you had an old tablet and Wi-Fi at the shelter and had the adopter fill the app out electronically.

@mark_murphy: 2020-03-10 23:27:33
Thanks


Problem with Reports

@djsteven: 2020-03-04 15:06:11
Hi Guys I did a custom report to export the data of all the animals, before was working good and now I get an error, I think is an issue with the server timeout. Can you please check that. [Error 524](//muut.com/u/sheltermanager/s3/:sheltermanager:6Tsk:error524.jpg.jpg)

@robinrt: 2020-03-04 16:12:40
Your report is taking too long to run and timing. The only thing you can do to fix it is to return less records so that it completes in time. There are also exports for animal data under Settings->SQL Interface->Export

@djsteven: 2020-03-04 16:22:45
Thanks, I'll try that.

@djsteven: 2020-03-04 17:04:57
Well the CSV doesn't export the Hebrew and the report is not good, there is a way I can do the report of all the animals split by pages? so like that I think can show less records at time. This is the code used. SELECT a.ID AS AnimalID, a.*, oo.OwnerName AS ooname, oo.OwnerAddress AS ooaddress, oo.OwnerPostcode AS oopostcode, oo.HomeTelephone AS ootel, oo.EmailAddress AS ooemail, bi.OwnerName AS biname, bi.OwnerAddress AS biaddress, bi.OwnerPostcode AS bipostcode, bi.HomeTelephone AS bitel, bi.EmailAddress AS biemail, cv.OwnerName AS cvname, cv.OwnerAddress AS cvaddress, cv.OwnerPostcode AS cvpostcode, cv.HomeTelephone AS cvtel, cv.EmailAddress AS cvemail, lksize.size, entryreason.reasonname AS entryreasonname, deathreason.reasonname AS ptsreasonname, a.breedname, species.speciesname, basecolour.basecolour, animaltype.animaltype, internallocation.LocationName AS CurrentLocation, lkcoattype.CoatType, ba1.ShelterCode AS Bonded1Code, ba1.AnimalName AS Bonded1Name, ba2.ShelterCode AS Bonded2Code, ba2.AnimalName AS Bonded2Name, (SELECT Name FROM lksynun WHERE ID = a.IsGoodW ithDogs) AS withdogs, (SELECT Name FROM lksynun WHERE ID = a.IsGoodWithCats) AS withcats, (SELECT Name FROM lksynun WHERE ID = a.IsGoodWithChildren) AS withchildren, (SELECT Name FROM lksynun WHERE ID = a.IsHouseTrained) AS housetrained, (SELECT Sex FROM lksex WHERE ID = a.sex) AS thesex, (SELECT Name FROM lksyesno WHERE ID = a.neutered) AS altered, (SELECT Name FROM lksyesno WHERE ID = a.identichipped) AS yidentichipped, (SELECT Name FROM lksyesno WHERE ID = a.tattoo) AS ytattoo, (SELECT Name FROM lksyesno WHERE ID = a.declawed) AS ydeclawed, (SELECT Name FROM lksyesno WHERE ID = a.heartwormtested) AS yheartwormtested, (SELECT Name FROM lksyesno WHERE ID = a.combitested) AS ycombitested, (SELECT Name FROM lksposneg WHERE ID = a.heartwormtestresult) AS pheartwormtestresult, (SELECT Name FROM lksposneg WHERE ID = a.combitestresult) AS pfivresult, (SELECT Name FROM lksposneg WHERE ID = a.flvresult) AS pflvresult, (SELECT NAME FROM lksyesno WHERE ID = a.HasActiveReserve) AS reserved, (SELECT NAME FROM lksyesno WHERE ID = a.NonShelterAnimal) AS nonshelter, (SELECT NAME FROM lksyesno WHERE ID = a.IsNotAvailableForAdoption) AS notadoption, (SELECT NAME FROM lksyesno WHERE ID = a.IsTransfer) AS ytransferin, (SELECT NAME FROM lksyesno WHERE ID = a.HasSpecialNeeds) AS yspecialneeds, (SELECT NAME FROM lksyesno WHERE ID = a.PutToSleep) AS yputtosleep, (SELECT NAME FROM lksyesno WHERE ID = a.IsDOA) AS ydoa, (SELECT NAME FROM lksyesno WHERE ID = a.DiedOffShelter) AS ydiedoffshelter FROM animal a INNER JOIN species ON species.ID = a.speciesID INNER JOIN internallocation ON internallocation.id = a.shelterlocation INNER JOIN basecolour ON basecolour.ID = a.basecolourID INNER JOIN animaltype ON animaltype.ID = a.animalTypeID INNER JOIN lksize ON lksize.ID=a.Size INNER JOIN entryreason ON entryreason.ID= a.entryreasonid LEFT OUTER JOIN lkcoattype ON lkcoattype.ID = a.CoatType LEFT OUTER JOIN deathreason ON deathreason.ID = a.ptsreasonid LEFT OUTER JOIN owner oo ON a.OriginalOwnerID = oo.ID LEFT OUTER JOIN owner bi ON a.BroughtInByOwnerID = bi.ID LEFT OUTER JOIN owner cv ON a.CurrentVetID = cv.ID LEFT OUTER JOIN animal ba1 ON a.BondedAnimalID = ba1.ID LEFT OUTER JOIN animal ba2 ON a.BondedAnimal2ID = ba2.ID

@robinrt: 2020-03-04 17:13:45
Yes, you can use LIMIT and OFFSET to only return a certain number of records and from a certain point in the results. https://www.postgresql.org/docs/9.5/queries-limit.html

@djsteven: 2020-03-06 21:44:03
Hi Robin, There is a way that can export Hebrew on CSV, Right now appear like symbols אוניקס

@robinrt: 2020-03-07 09:03:29
Is this for a sheltermanager.com account? Could you drop me a note of your account number and the report you are exporting to help@sheltermanager.com so I can investigate why that's happening?


Leap year error

@jimdunne: 2020-02-29 11:27:19
I'm not able to do anything is ASM today as I keep getting an internal server error, which shows "day is out of range for month" - so I guess ASM cannot handle leap years, is this correct? What can I do to overcome this?

@jimdunne: 2020-02-29 11:41:03
I have confirmed the error is due to leap year, by changing the system date to 28 Feb, and the 01 March and it works. Go back to 29 Feb and it won't do anything, throwing up the 'internal server error'.

@robinrt: 2020-02-29 12:07:50
Yes, it's patched in the trunk. It occurs due to a bug in the calendar year calculation. To fix it, edit i18n.py and comment out this line at around line 522 by putting a pound/hash symbol in front of it: --- if years == int(years): return date.replace( year = date.year - int(years)) --- becomes --- # if years == int(years): return date.replace( year = date.year - int(years)) ---

@jimdunne: 2020-02-29 12:33:22
Thanks for the response - I have changed usr/lib/sheltermanager3/i18n.py line 516 as noted. I restarted the Apache server and the ASM and got the same error. I then rebooted my server and am still getting the same error. If I open i18n.py file, it shows the edit, but the error still shows in ASM - [Screenshot from 2020-02-29 12-32-06](//muut.com/u/sheltermanager/s1/:sheltermanager:DJcX:screenshotfrom20200229123206.png.jpg) A Any ideas?

@titnono: 2020-02-29 16:34:42
Hi, thank you, did the mod, deleted i18n.pyc, rebooted and it works

@jimdunne: 2020-02-29 17:12:03
I hadn't deleted i18n.pyc, delete and restart sorted the error - thanks.


Registers

@galia: 2020-02-28 20:29:28
Hi all, I am a very new user to this program and testing it 😊 I will have to present it to the association committee! in French! 😕 I see registers for vaccinations, foster families, reservations etc, but not one for adoptions, I realise you can use reports to look at the info but they are not interactive Does something like this exist? Also having problems with vaccination due reports that just say 'no info found' I'm doing something wrong I'm sure, lots of head scratching going on and no I don't have any fleas 😊 Lots of other questions too 😉 but I don't want to bore you all at this stage as I am sure it is just me being new to the software Thanks Tim ASM3 by the way

@robinrt: 2020-02-29 12:08:54
Vaccinations that are due must not have a given date, only a due/required date. Could you elaborate more on the question about registers?

@galia: 2020-03-03 16:45:23
Hi, Vaccinations : I have a report 'vaccins expiring between two dates' but this returns 'no entries found, even though I have expireded vaccinations and the required date is filled in on the animal (I have since found another report the produces what I am looking for though) Register of adoptions There are registers in the form of quick links (below the main menu line at the top) for foster families, vaccinations and reservations, I assume there is not an actual page 'register of adoptions' and I will need to create a report to access this information? one other question sorry, on the contact entry form there are only two choices Couple/individual & establishments. but in the french version the translation has 'Association' as opposed to Entreprise, is it possible for me to alter or add to this list somewhere? so far I have not found out how to do it Thanks

@robinrt: 2020-03-03 16:49:08
There's an option near those to return an animal from adoption, this shows adoptions in the last month. But yes, there are reports, eg: "Adoptions by Date" Association would need to be updated in the translation files for the program. Is it a mistranslation of Organisation?

@galia: 2020-03-03 19:54:10
OK thanks I am checking with a French colleague, Association is more akin to a charity Would it be possible for you to alter the code and add an extra title? Couple/célibataire to Particulier If you can not add a third one Change Association to Société Idealy Particulier Société Association Thx Tim


Application management

@twiseowl: 2020-02-28 18:35:09
Would it be possible to do more with the incoming forms (adoption applications mainly)? We would like to be able to add notes or tags to them in that list, such as approved, pending, declined, etc. I've seen other databases do this, and it would save us so much time and possibly help us not miss apps. We need a way to track where each application is in the adoption process, and while I like being able to add the app to the animal and the person, that doesn't help us if we have to go to each individual animal/ person to see any notes. Until the animal is adopted, we need to easily know what's going on with the apps.

@robinrt: 2020-02-29 12:10:13
Yes. Use the "reserveanimalname" field on your form with an adoptable animal field type. This will create a reservation record at the same time as the person, linking it to the animal. You can use the reservation book to manage your applications. Reservations can have statuses and comments and you can see them all together with current status on that screen.

@twiseowl: 2020-03-01 22:41:08
Thank you. Is there a way to NOT mark them as unavailable when a reservation is created? We often like to get a few apps on our popular animals before making a decision.

@robinrt: 2020-03-02 08:45:42
Yes, set Publishing->Set Publishing Options->Animal Selection->Include reserved animals to YES

@twiseowl: 2020-03-02 16:27:32
Thank you! I knew I'd seen that, and had looked through options but just could not find it again. :)

@ken2950: 2022-02-08 05:09:36
Exactly the thread I was looking for. Ty!


customize reports

@bmay1439: 2020-02-24 02:35:46
We added intake county to our animal entry screen, I need to create a report where I can search by that criteria, how can I do this ?

@adoptamutt: 2020-02-24 17:44:00
Something like this: SQL: SELECT a.ShelterCode, a.AnimalName FROM animal a INNER JOIN additional ON additional.linkid = a.ID INNER JOIN additionalfield ON additionalfield.id = additional.additionalfieldid where additionalfield.FIELDNAME = 'county' AND additional.VALUE = '$ASK STRING County$'


Ubuntu 18.04 - SSL Certificate

@s_siegel: 2020-02-23 15:24:06
When setting up the program on Ubuntu, I can change the config file to recognize HTTPS, but it's not taking this. I do have an active SSL cert for the Apache server, but how can I make this work for ASM?

@inghamn: 2020-02-25 13:43:56
You should be able to set the base_url and service_url to the https version. Then configure Apache to use your certificate. In your Apache config, make sure to put the WSGOScriptAlias inside the SSL VHost.


ASPCA Transport Photo File Report

@gspinner: 2020-02-19 21:57:30
I'm 2 days in to using SM so novice would be a compliment. Hope this question isn't too basic. We are a source shelter for the ASPCA Transport Program. We manually create 2 reports for each transport. The first is a report that is 3 columns wide. Column 1 includes AnimalID and AnimalName. Columns 2 & 3 are photos of front and side view of the animal which would come from the 1st and 2nd photos in our media file. The report generally has about 30 animals listed. I would like to be able to read in a list of AnimalIDs and have the report compiled and returned. Ideally in an editable format e.g., .DOC or .DOCX so I can edit if we need to add/delete a single animal. Hoping another shelter has already created something similar since it will take some time for me to learn SQL

@adoptamutt: 2020-02-19 23:31:16
We created an additional field called "TransportDt" then created this report to pull animals with a certain TransportDt. ASPCA accepts this if it is Saved to PDF. We also have a report that pulled all the needed animal data so that it can be dumped into a Excel Macro to put it in the proper format. If you are interested in that, let me know. SQL: SELECT a.ID AS AnimalID, a.ShelterCode, a.AnimalName, (SELECT ad.value from additional ad INNER JOIN additionalfield af ON af.id = ad.additionalfieldid where ad.linkid = a.ID AND af.fieldname = 'TransportDt') AS TransportDt FROM animal a where Archived = 0 AND NonShelterAnimal = 0 AND (SELECT to_date(value, 'MM/DD/YYYY') from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = a.ID AND additionalfield.fieldname = 'TransportDt') = '$ASK DATE Transport Date$' ORDER BY a.animalname HTML: $$HEADER <table border="0"> <tr> <td><font size=4><B>Transport From Humane Society    $TransportDt</font></td> </tr> </table> <table border="1"> <tr> <th>A #/Name</th> <th>Picture 1</th> <th>Picture 2</th> <th>Picture 3</th> </tr> HEADER$$ $$BODY <tr> <td>$SHELTERCODE <br /> $ANIMALNAME</td> <td><img height="200" src="{IMAGE.$ANIMALID.1}" /></td> <td><img height="200" src="{IMAGE.$ANIMALID.2}" /></td> <td><img height="200" src="{IMAGE.$ANIMALID.3}" /></td> </tr> BODY$$ $$FOOTER </table> <h2>Total: {COUNT.animalname}</h2> FOOTER$$

@adoptamutt: 2020-02-19 23:39:18
Of course, you could use the Transport Tab as well to grab the date.

@gspinner: 2020-02-21 02:31:59
Thank you so much!!!! That looks like it will work well. Yes, we'd be interested in the code for the transport manifest too.

@adoptamutt: 2020-02-21 14:55:58
There is also a "SPCA Transfer Partner Spreadsheet" in the sheltermanager.com report repository. Looking at that one and the one below should get you started. Mine would need some customization. My email is waldkl@yahoo.com if you want to send me your email, I'll email you the Excel macro. SQL: SELECT a.ID AS AnimalID, a.ShelterCode, a.AnimalName, a.BreedName, a.AnimalAge, CASE WHEN a.sex=1 and a.neutered=1 THEN 'NM' WHEN a.sex=1 and a.neutered=0 THEN 'M' WHEN a.sex=0 and a.neutered=1 THEN 'SF' WHEN a.sex=0 and a.neutered=0 THEN 'F' END AS theSex, ROUND( CAST(a.weight as numeric), 2) as weight, CASE WHEN entryreason.ReasonName LIKE 'OS -%' THEN 'OS' ELSE 'Stray' END AS TheReason, a.datebroughtin, (SELECT value from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = a.ID AND additionalfield.fieldname = 'RWAssessDt') AS RWAssessDt, basecolour.basecolour, --(SELECT max(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 10 and animalvaccination.animalid = a.ID) AS Bordetella, (SELECT DateOfVaccination FROM animalvaccination av INNER JOIN vaccinationtype vt ON vt.ID = av.VaccinationID WHERE AnimalID = a.ID AND vt.VaccinationType LIKE '%Bordetella%' ORDER BY DateOfVaccination DESC LIMIT 1) AS Bordetella, (SELECT DateOfVaccination FROM animalvaccination av INNER JOIN vaccinationtype vt ON vt.ID = av.VaccinationID WHERE AnimalID = a.ID AND vt.VaccinationType LIKE '%Lepto%' ORDER BY DateOfVaccination DESC LIMIT 1) AS LeptoDt, --(SELECT Max(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 2 and animalvaccination.animalid = a.ID) AS RabiesDt, (SELECT DateOfVaccination FROM animalvaccination av INNER JOIN vaccinationtype vt ON vt.ID = av.VaccinationID WHERE AnimalID = a.ID AND vt.VaccinationType LIKE '%Rabies%' ORDER BY DateOfVaccination DESC LIMIT 1) AS RabiesDt, CASE WHEN a.heartwormtested = 1 and a.heartwormtestresult = 0 THEN ' ' WHEN a.heartwormtested = 1 and a.heartwormtestresult = 1 THEN 'Neg' WHEN a.heartwormtested = 1 and a.heartwormtestresult = 2 THEN 'Pos' END AS heartworms, a.heartwormtestdate, (SELECT max(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 14 and animalvaccination.animalid = a.ID) AS HWPrevDt, (SELECT comments from animalvaccination where animalvaccination.vaccinationid = 14 and animalvaccination.animalid = a.ID and DateofVaccination = (select max(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 13 and animalvaccination.animalid = a.ID)) AS HWPrevComments, a.identichipnumber, (SELECT max(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 13 and animalvaccination.animalid = a.ID) AS FleaDt, (SELECT comments from animalvaccination where animalvaccination.vaccinationid = 13 and animalvaccination.animalid = a.ID and DateofVaccination = (select max(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 13 and animalvaccination.animalid = a.ID)) AS FleaDtComments, (SELECT Min(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 11 and animalvaccination.animalid = a.ID) AS Wormer1Dt, (SELECT Min(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 18 and animalvaccination.animalid = a.ID) AS Wormer2Dt, (SELECT value from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = a.ID AND additionalfield.fieldname = 'RWComments') AS RWComments, (SELECT count(DateofVaccination) from animalvaccination where animalvaccination.vaccinationid = 9 and animalvaccination.DateOfVaccination is not null and animalvaccination.animalid = a.ID) AS ComboCount FROM animal a INNER JOIN basecolour ON basecolour.ID=a.basecolourID INNER JOIN entryreason ON entryreason.ID = a.EntryReasonID where Archived = 0 AND NonShelterAnimal = 0 AND DeceasedDate Is Null AND (SELECT to_date(value, 'MM/DD/YYYY') from additional INNER JOIN additionalfield ON additionalfield.id = additionalfieldid where additional.linkid = a.ID AND additionalfield.fieldname = 'RWTransportDt') = ' $ASK DATE RW Transport Date$' ORDER BY a.weight DESC HTML: $$HTMLHEADER <style type="text/css"> td { font-family: "Arial"; font-size:10pt; } th { font-family: "Times New Roman"; font-size:14pt; font-weight:bold; } </style> <table border=1 class="sigtable"> HTMLHEADER$$ $$HEADER HEADER$$ $$BODY<tr> <td>.</td> <td>$sheltercode</td> <td>$animalname</td> <td>$breedname</td> <td>$animalage</td> <td>$thesex</td> <td>$weight </td> <td>$TheReason</td> <td>$datebroughtin</td> <td>$RWAssessDt </td> <td>$basecolour</td> <td>{SUBREPORT.SUBREPORT_RWTransferListVaccinations.animalid} </t d> <td>$Bordetella </td> <td>$LeptoDt </td> <td>$RabiesDt </td> <td>$heartworms </td> <td>$heartwormtestdate </td> <td>$HWPrevComments $HWPrevDt </td> <td>$identichipnumber </td> <td>$FleaDtComments $FleaDt</td> <td>Pyrantel $Wormer1Dt </td> <td>Praziquantel $Wormer2Dt </td> <td> </td> <td>$rwcomments </td> <td>$ComboCount</td> </tr> BODY$$ $$FOOTER </table> </html> FOOTER$$


Weight log

@cindiczyzakkaiser: 2020-02-17 01:14:09
How do you create a weight log for an animal?

@robinrt: 2020-02-17 09:19:23
Change the weight field on the animal details tab and save, that should automatically create an entry in the log.


Microchips registering to foster

@homewardcat: 2020-02-16 21:17:05
When we microchip a cat that is in a foster home, it gets registered to the foster person. We want it registered to our organization. How do we change that?

@robinrt: 2020-02-17 09:18:41
Hi, edit the list for "Register microchips after" under Publishing->Set Publishing Options->All Publishers. Remove Foster from the list and make sure Intake is in the list.

@homewardcat: 2020-02-25 05:25:10
Thank you!


Error with MySQLdb

@connor9220: 2020-02-12 16:03:12
Installing ASM3 on a shared hosting system with Plesk control panel. Got most of it done, but when I went to create the database I'm getting this.. CRITICAL asmus... Database.execute global name 'MySQLdb' is not defined File "/var/www/vhosts/asm.demodomain.org/httpdocs/dbms/base.py", line 278, in execute#012 c, s = self.cursor_open() File "/var/www/vhosts/asm.demodomain.org/httpdocs/dbms/mysql.py", line 27, in cursor_open#012 c, s = Database.cursor_open(self) File "/var/www/vhosts/asm.demodomain.org/httpdocs/dbms/base.py", line 146, in cursor_open#012 c = self.connect() File "/var/www/vhosts/asm.demodomain.org/httpdocs/dbms/mysql.py", line 21, in connect#012 return MySQLdb.connect(host=self.host, port=self.port, user=self.username, passwd=self.password, db=self.database, charset="utf8", use_unicode=True) NameError: global name 'MySQLdb' is not defined Based on other comments, I double checked, and python-mysqldb is installed. apt-get , install python-mysqldb Reading package lists... Done Building dependency tree Reading state information... Done python-mysqldb is already the newest version (1.3.7-1build2). Any thoughts?

@robinrt: 2020-02-13 09:43:30
Verify the fault is not present normally by running the python interpreter at a terminal and entering "import MySQLdb" If you're using apache and mod-wsgi, set WSGIPythonPath in your Apache config to point to where your libraries are installed. For Debian based systems it's typically /usr/lib/python2.7/dist-packages


User Group

@mark_murphy: 2020-02-11 15:17:10
Is there a user group for ASM? We are using ASM, but only some aspects. I would love to connect with others who may be using it more fully to understand how they are leveraging it. I know we can do more with it, but want to benefit from what others have learned. - Mark

@twiseowl: 2020-02-17 03:48:46
I am part of a Facebook group called ASM Rocks! that has been very helpful.

@adoptamutt: 2020-02-19 23:33:26
I just joined ASM Rocks! as well. But this forum is also nice place to ask questions and post helpful reports and such.

@mark_murphy: 2020-03-10 17:02:42
Thanks. I will check it out.


Training

@bkrodle: 2020-02-11 14:29:22
Is there a way to set ASM up in a training mode for new employees? Would it be possible to create a training user that would have full access but be unable to save records to the system? I was just wondering because I've got 3 people I'm going to have to teach to use the system and having a training mode would be great. Thanks!

@robinrt: 2020-02-11 14:38:48
Hi, you could create a role for the trainee employees and deny that role permission to save any records? Another approach might be to use the demo on our website since you add records to that and mess around with it and it will reset and reload itself every day.

@bkrodle: 2020-02-11 18:21:10
I'll give that a try. I was just checking. I'd like to do immersion training so they could create the records and print them and search, but I can make it work with changing the sessions to not saving. Thanks! Love the program by the way, it's the best we've used.


Export report for Aplos contacts?

@caninehumanenetwork: 2020-02-09 15:20:32
Has anyone created a report that enables easy bulk upload of contacts from ASM to Aplos?


Issue trying to use service API to integrate with website

@rementis: 2020-02-08 01:00:19
So, I just want to use the code snippet provided in the user manual to integrate with my website. It seems to work correctly, except that it generates links using http instead of https, and my site is SSL-enabled so obviously http won't work. I have base url set correctly in asm3.conf, no sure what else to check.

@rementis: 2020-02-08 01:01:42
Here is the snippet I'm trying to get working: <div id="asm3-adoptables"> <script src="https://SERVERNAME:5000/asm/service?method=animal_view_adoptable_js"></script></div> This snippet does list out animals, but the links/pics don't work because it's insisting on using http instead of https.

@robinrt: 2020-02-09 10:49:05
Update the base_url property in your asm3.conf file to use https.


User roles

@mrsfozy: 2020-02-06 03:49:20
Is there a way for a user to be able to log in and see information, but not be able to edit anything? We've had problems with a couple of volunteers changing things they shouldn't. We need them to look but not touch, and so far asking them nicely hasn't worked!

@adoptamutt: 2020-02-06 04:46:01
You can create a new Volunteer user under Settings > User roles and only give them “view” permissions.

@robinrt: 2020-02-06 14:21:12
Yes, as Karen says, create a Volunteer user role and only give it the permissions you want. You can then assign that volunteer role to the individual user accounts that you want to restrict (make sure they are "normal" users and not "super" users).

@mrsfozy: 2020-02-06 21:52:24
Thank you!


Voucher

@mrsfozy: 2020-02-06 03:43:35
We give desexing vouchers for certain cats. Is there anyway to attach vouchers to animals rather than people?

@robinrt: 2020-02-06 14:21:31
Sorry, I'm afraid there isn't. I understand what you're getting at and that the voucher would only be redeemable against surgery for a particular cat, but it still needs to be given to a person as I'm not sure the cat would have the clerical skills to be able to present it to the vet!

@mrsfozy: 2020-02-06 21:47:09
LOL! We just don't put the public into the system, so would be easier for us to attach it to a cat. All our invoices come in with the database number on, so we'd be able to see that particular cat's voucher had been redeemed.


Send reports to ASM user role type instead of email list

@julian-poidevin: 2020-02-05 22:43:29
Instead of setting an email list to send the report to, would it be possible to say "Send this report daily to "Vets" or "System admins" ? Thanks !

@robinrt: 2020-02-06 14:22:15
It's not possible right now, but it's a good idea.

@julian-poidevin: 2020-02-10 11:29:47
Should I open an issue about this feature request on ASM Github repo ?


Customize random animal name suggestion by country

@julian-poidevin: 2020-02-02 13:10:09
The animal name generator contains mostly english animal names (_animalname.py_). Would there be a possibility to add a custom name library per languages ? Maybe using the same system logic as translations ? Thanks.

@robinrt: 2020-02-03 19:01:28
That's something we never thought of. I guess it would be easy to have a NAMES__fr_ constant and then use reflection to see if there's a localised variable in get-random-name (updated to pass the locale)

@jimdunne: 2020-02-11 18:08:05
I found the included names to be 'cheesy' at best, so deleted the old names list in animalname.py and added my own, maybe you could do that with names more suitable to your locale?

@julian-poidevin: 2020-02-12 09:46:38
That's a solution indeed, will try that. Thanks !

@margagomis: 2020-03-01 19:16:28
Hi! Could you tell me how can I find this file animalname.py? Thanks

@jimdunne: 2020-03-01 20:20:03
usr/lib/sheltermanager3/animalname.py


pictures

@karenconlonbuffaloe: 2020-02-01 05:04:43
is there a way to add multiple pictures to an animal's profile and also can i add pictures from facebook?

@adoptamutt: 2020-02-01 05:30:52
You can add as many as you like through the Media Tab of an animal. You would need to save the Facebook photos to your device before uploading to ASM.

@karenconlonbuffaloe: 2020-02-01 05:46:34
I was wanting to click on multiple photos and load to an animal, rather than doing one at a time, is that possible - thank you for the quick answer

@adoptamutt: 2020-02-01 14:09:31
No. I don’t know of any way to do that.

@robinrt: 2020-02-01 15:23:45
Hi, there is a way - select all the photos you want to upload in Windows Explorer or Finder if you're on Mac. Then, drag them to the "Drop photos here" area of the media tab on the animal to upload them all in one go.


Edit Movement Type options

@janinevz: 2020-01-21 11:44:59
Is it possible to add another Movement Type, such as "Unknown"? So, you will have Adoption/Foster/Transfer/Unknown, as an example?

@robinrt: 2020-02-01 15:22:52
No, it is not possible. The system only understands on and reports the built in values, it would not know what to do with user-added types. Why do you want an unknown movement type?

@janine_awspe: 2021-06-24 08:12:42
We would use a similar option to Unknown for older animal records which we no longer have all the details for. We don't want to remove them from the database as we could potentially still locate the original paper documents, but need to identify them separately.

@jarnold: 2021-07-28 01:07:04
Just wanted to add my comment again here bc based on previous comments it seems like there is a need for the ability to amend Movement Types and given what we need it for, there doesn't appear to be a current work-around using existing options: Yes, the ability to amend/edit “Movement Type” would be SO helpful! You can add other options to other types, just not Movements. We offer an Emergency Boarding service for free and it would be helpful to track – not only for new animals using this program but also for animals previously adopted from us (right now, we'd have to create a copy/duplicate file to track in this situation).

@robinrt: 2021-07-28 08:33:31
I'll copy my email response for others reading this: Additional movement types will not solve the problem of boarding as it would require you to return previous adoptions and mess up your figures. Boarding needs to be handled separately from movements. There is a task on our development list for the current milestone to add a separate boarding module so that it operates independently of movements. https://github.com/bobintetley/asm3/issues/623


Where to find files

@sjras: 2020-01-20 21:42:46
I posted this in general as well because I wasn't sure where to best put it: Our shelter was hit with randsomeware & our server was encrypted. After a fresh windows install we have a back up drive that we've managed to mount to recover the files that were living on our server, which included ASM. Our IT help is asking where they'd find the old files we need to move to the new server to get our records back into old ASM. I think it was ASM 2.7.1? We're hosted now thank goodness, but we refer to our “old asm” database for historical data. Any ideas?

@robinrt: 2020-02-01 15:22:11
Yes, assuming it was just a local install on one computer, try C:\Users\YOURUSERNAME\.asm\localdb.*


Link person to animals

@allie7582: 2020-01-19 16:51:50
We are a foster based rescue. I want to be able to see all animals any one person has fostered and/or adopted. If I look under a person's 'page', there is nothing under 'link' tab, even if that person is currently marked as fostering an animal. How do I correct this? How do I add info to the 'link' tab for a person? Or should this be done automatically?

@sjras: 2020-01-20 21:44:41
the link tab usually shows intakes or surrenders or non-shelter animals linked to a person. You should be able to see all the pets fostered by that person under the movement tab since each pet leaving for foster is a movement :)

@allie7582: 2020-01-21 17:26:17
It is not. For example, I am currently fostering a dog. Dog has 'movement' showing "foster: (me)", yet if I go under "my page", under link tab, there is nothing. Is this a bug? How can I correct?

@sjras: 2020-01-21 20:33:35
it should be on your page under the movements tab as well, not the links

@sjras: 2020-01-21 20:36:43
[Capture](//muut.com/u/sheltermanager/s3/:sheltermanager:FYJQ:capture.jpg.jpg) This is under the movements tab for one of our foster homes

@allie7582: 2020-01-22 18:20:21
Movements tab, under the person, I understand! Thank you.


Add Person birth date to Person "Name & Address" tab

@julian-poidevin: 2020-01-17 08:41:31
Hello, Small suggestion to improve ASM, it may be interesting for some shelter to know the age of the persons registered. The age could be displayed in the person "header" the same way as it is for an animal. Thanks,

@robinrt: 2020-01-17 08:54:55
That is a good suggestion. You could add it yourself for now with Settings->Additional Fields.

@julian-poidevin: 2020-01-17 08:57:56
Yes, this is what I've done for now. ;-)


Adoptions missing retailer movement

@lisa40278: 2020-01-16 01:55:21
Is there a report or a way to search for adoptions that are missing a retailer movement? Or, some way to require the retailer field not be blank for an adoption?

@robinrt: 2020-01-16 10:01:57
There's no way to make retailer mandatory. You could run this query at Settings->SQL Interface (or use it as the SQL for a report under Settings->Reports) to identify animals who have an adoption with no linked retailer movement: --- SELECT AnimalName, ShelterCode FROM animal a INNER JOIN adoption m ON m.AnimalID = a.ID WHERE m.MovementType = 1 AND m.OriginalRetailerMovementID = 0 ---


Adding Full Name under Signature in Mobile Sign Pad

@josephpjoseph1: 2020-01-14 17:38:17
We're trying to create a paperless adoption form which includes a signed waiver by the adopter. I've set up the document to be signed on a mobile device. How do I add the full name of the adopter under his or her signature? Is there a way to type in text under the signature?

@robinrt: 2020-01-15 10:12:31
Sure, add a line break and put the <<OwnerName>> token under the signature token

@josephpjoseph1: 2020-01-15 16:12:37
Thank you. However, is there a way to add text on that line via the app? We have adoption counselors (volunteers) that fill out the paperwork who don't have access to the Shelter computer to add the name of the adopter. It would be great if after they sign they can add their names and the date on that line. If that's not possible, can the signed form be populated with OwnerName later after it is entered into the computer?

@robinrt: 2020-01-15 16:51:56
Sorry, it can't - signing a document effectively locks it to prevent any changes. What I'm not understanding is how is it that you can be at the point in the adoption process where you're generating paperwork and requesting signatures if you don't know who the owner is going to be?

@josephpjoseph1: 2020-01-15 17:00:07
I apologize! We do know - I disintegrated think through that we could have the liability waiver completed with the owner’s name and sent to the volunteers’s signing pad ahead of time.

@josephpjoseph1: 2020-01-15 17:00:30
I didn’t think through. Stupid autocorrect!

@josephpjoseph1: 2020-01-16 14:02:17
Sorry for being very dense here. When I go to edit the html code I don't see a way of putting <br> <<OwnerName>> under the signature token as I don't see where the code for signature token is in the document template. I currently have it so that <<OwnerCode>> is above the signature, but would like it below. Thanks

@robinrt: 2020-01-16 14:11:07
You should have an image with the source "signature:placeholder" to indicate where you want the signature to appear in your document. If you don't have one, the system will tack the signature onto the end of the document. https://sheltermanager.com/repo/asm3_help/documents.html#electronic-signatures

@josephpjoseph1: 2020-01-16 15:19:36
Awesome - works perfectly now! Thank you very much. Joe


Add PaymentPersonAddress to Wordkeys

@julian-poidevin: 2020-01-14 09:45:58
Hello, In order to edit receipts for the french administration, I'd like to access the address of the person who made a paiement. Would it be feasible to add a <<PaymentPersonAddress>> wordkey ? Thanks a lot !

@robinrt: 2020-01-14 14:27:32
I've added it to the trunk now if you want to pick up the code from there.

@julian-poidevin: 2020-01-14 14:30:43
Woaw, how fast ! I'm impressed ! Thanks a lot. Will try now and get back to you.

@julian-poidevin: 2020-01-14 14:46:23
Just tried it. It works for ZipCode and City but does not seem to be working for the address. Here's the person address : [OwnerAddress](//muut.com/u/sheltermanager/s1/:sheltermanager:Crnf:owneraddress.png.jpg) Here's the Payement entry : [PaiementInfo](//muut.com/u/sheltermanager/s1/:sheltermanager:lpUO:paiementinfo.png.jpg) Here's the document template : [Template](//muut.com/u/sheltermanager/s1/:sheltermanager:4g4U:template.png.jpg) Here's the result : [Result](//muut.com/u/sheltermanager/s1/:sheltermanager:kVCm:result.png.jpg) What could it be ? Thanks.

@robinrt: 2020-01-14 14:59:57
That seems odd. Have you got formatting characters in that token maybe? Have a look at Tools->Source in your template, then have a look at the PaymentPersonAddress token and make sure that it's unbroken.

@julian-poidevin: 2020-01-14 16:18:55
All right, there was junk indeed. After cleaning all this up it works fine ! Thanks a lot !


How to setup open source desktop version

@kylej144: 2020-01-13 18:08:57
Hey, I have downloaded Shelter Manager, but i cannot seem to edit the interface ect to my desired look and feel, for example the login slideshow i would just like dogs to appear and not cans, so how would i delete the cat pictures. or have i set it up wrong. Any help would be appreciated and thanks in advance

@robinrt: 2020-01-14 14:28:18
I guess you mean the animal quicklinks on the home page? There isn't a way to configure those to only show one species I'm afraid, they're usually tied to categories like adoptable animals, recently changed animals, etc.


Migrating to hosted ASM?

@redvenomweb: 2020-01-12 20:13:21
We'd like to migrate an existing ASM2 DB (from a Linux MySQL server) to the hosted ASM service. What do we need to provide to have our data migrated to the hosted service, and how should we go about sending the necessary files?

@robinrt: 2020-01-13 09:34:53
Hi, once you've signed up for an account (so we have somewhere to import it to), we'll need a mysqldump of your database. Email it if it's small enough, otherwise use Dropbox or Google Drive or something to share it with us at help@sheltermanager.com


ongoing medical treatment report

@jimdunne: 2020-01-10 11:51:35
Is there a report that will show ongoing medical treatments, or animals that have completed treatment regimes? These would be very handy reports for us. Thanks.

@robinrt: 2020-01-13 09:33:35
The medical diary and treatments due between two dates will show ongoing treatments. I don't think we have one for completed treatments outside of the print animal record and medical history reports, which run for a single animal.


recent glitches

@josephpjoseph1: 2020-01-09 01:34:30

@josephpjoseph1: 2020-01-09 01:36:04
SM has been glitchy this week. A dog that was adopted over a week ago suddenly popped back up under "Not for Adoption". Also, some of the info fields keep coming and going. For instance, we entered some treatments under Medical and when we went back in to print the records, that entry had disappeared. Earlier this morning, SM wasn't allowing us to change a pet's Location (the box wasn't even appearing). Have there been others who noticed the same issues or is it something with us? Joe

@robinrt: 2020-01-09 09:52:48
Hi, not had any other reports. Are any of these changes explainable by the audit log? Every change made by a user is recorded under the Audit slider of the animal record. Location box doesn't appear if the animal has an active movement and is not on shelter.


QR Code Size

@sjras: 2020-01-07 21:13:27
Robin is there a way to resize the QR code that <<DocumentQRLink>> provides? We're hoping to get it onto our cage cards and it's size is bumping us to another page. Just wondering if there's a way to contain it.

@robinrt: 2020-01-08 11:09:03
I've added support for DocumentQRLink50/100/150/200 to the main trunk and sheltermanager.com now. The default previously was 150 so try DocumentQRLink100

@sjras: 2020-01-08 15:22:43
Thanks so much!!


Map

@jimdunne: 2020-01-06 12:41:58
Is there any way to enlarge the map screen display as I have a lot of white space below the image, which would give me a better picture if it were able to be used. [Screenshot_2020-01-06 map](//muut.com/u/sheltermanager/s3/:sheltermanager:NdfT:screenshot_20200106map.png.jpg)

@jimdunne: 2020-01-06 12:43:41
There is actually more white space than shown in the screen grab, as it only took the visible part of the page. Screen resolution is 1920 x 1080 16:9

@robinrt: 2020-01-06 12:47:50
There isn't a way for a user to do it, I'll raise it as a development issue.


Health Reports

@rsting69: 2020-01-03 21:16:42
Does anyone have a way that they document an animal with a medical problem and generate a daily report. We are trying to track all animal health issues that our staff find throughout the day and generate a daily report to print off and provide our Vet so just those animals that have medical/health related issues can be examined in the morning. I wasn't sure if anyone has used a process for keeping track of medical and health issues.

@robinrt: 2020-01-03 21:37:19
Try "Shelter Inventory with Health Problems". It identifies all animals on shelter where there is sometihng present in the health problems box. Install it under Settings->Reports->Browse sheltermanager.com

@robinrt: 2020-01-04 10:10:01
Edit: It only shows health problems. Add the following to the WHERE clause to only show animals with health problems: --- AND HealthProblems <> '' ---


Republish microchip information

@mdeprima1964: 2020-01-02 08:43:33
We had a bad email address for an adopter. How can we trigger republishing the corrected information to PetLink?

@robinrt: 2020-01-02 09:48:54
Go to the "Publishing History" section for the animal and click the "Forget" button next to the line "Registered microchip with PetLink". That will cause the system to register again next time you publish to petlink or when the overnight batch runs.


Neutering due date

@julian-poidevin: 2019-12-25 21:27:52
As the same for vaccinations and tests, is there a way to specify the neutering due date. Basically we would like to be able to send a reminder to the adoptive family to neuter the cat at this date (when it's being adopted before its 6 months). Thanks !

@julian-poidevin: 2019-12-25 22:19:32
Also, I just realized ASM3 is considering the animal neutered based on the tick box and does not check if the neutering date is in the future. I think the animal should be considered unaltered if the altering date is in the future.

@robinrt: 2019-12-26 12:42:56
The tickbox doesn't require the date, and is the primary consideration when deciding if an animal is neutered. If a date is supplied, the system uses that to assume it was done in the care of the shelter for many reports. Scheduling any surgery should be done as a single medical treatment under the medical tab. We're planning to make that a bit friendlier and more obvious in future.


Credit Card Reader

@williamcook: 2019-12-23 19:14:27
Hi there! We're wanting to add credit card readers to our machines. I can't find anything in the docs to say which types are supported. Can I get a generic reader off Amazon, does it need on device encryption, etc? Any help would be greatly appreciated. Cheers and happy holidays :)

@robinrt: 2019-12-24 09:17:40
Sorry, credit card readers are not something our software directly supports as we don't handle credit card payments. We are looking at integrating merchants (starting with PayPal and Stripe) in the very near future, so there may be support for card readers further down the road.

@williamcook: 2019-12-27 00:55:50
Oh good, thank you for the heads up!


Movement Issue

@bkrodle: 2019-12-17 15:26:05
We are trying to post a reclaim on an animal that was picked up. It was reclaimed the same day it was picked up, but when we try to enter the reclaim we get a message stating that Movement date cannot be before brought in date. We are getting the same message trying to transfer owner release animals to rescue on the same day they were brought in.


"For" field in "New Appointment" window (Clinic Tab) doesn't allow vet selection

@julian-poidevin: 2019-12-16 23:48:12
When creating a new appointment in the Clinic Tab, the "For" field doesn't allow selection for vet. The selectable people are only ASM User Accounts (the login appears instead of the real username but I guess it's linked to the previous reported bug) : [Add Appointment - For - Bug](//muut.com/u/sheltermanager/s1/:sheltermanager:T7pB:addappointmentforbug.jpeg.jpg) Thanks,

@robinrt: 2019-12-17 09:26:35
It's deliberate - the vets need a user account so that they can see and administer their consultation room. Assigning appointments to that vet's user account means they can filter to only see their appointments on the calendar.

@julian-poidevin: 2019-12-17 09:46:32
Ok I get it. Our shelter only uses "off-shelter" vets. We use the Clinic menu to plan vets visit and organise transports, we also use the Clinic Tab to edit voucher. I'll create fake vets accounts then. Do you think it would be valuable to change the way this "New Appointment" For field works based on an option ? I think we may not be the only shelter to have external vets. Also maybe we are using the Clinic tab the wrong way ? Thanks.

@robinrt: 2019-12-17 09:55:51
The clinic tab was intended for shelters that have vets coming in and administering treatments for shelter animals and those owned by members of the public. It's a common scenario in UK RSPCA shelters. It wasn't really aimed at managing appointments to external vets for shelter animals, but you can mostly use it that way too.


Remote web server

@jimdunne: 2019-12-16 20:30:41
Does anybody have a 'how to' or tips on how to set up ASM on a remote web server using a Linux server and cPanel? I have it set up on my Ubuntu box at home, but would like to put it onto our website so we can access it remotely.

@julian-poidevin: 2019-12-16 23:51:40
You should subscribe to a "VPS" (Virtual Private Server). I bought mine here : https://www.ovh.com/world/vps/ (I chose the VPS SSD option). Then you'll have access to a linux machine but only through SSH (it is a way to access the machine's terminal remotely). You'll then have to perform all the steps you did on your Ubuntu VM but only using the terminal.


Help w sql to change Adoptions by Date w Location and Age report

@jgochsner: 2019-12-10 17:34:46
We would like to view the locations in this report to be the last actual location the cat was on the adoption date. We have several retailers and fosterers, for example, so when we adopt a cat out through one of them, we record that movement end ,which sets the location field this report uses back to ‘on shelter.’, so all of our adoptions are grouped to that. Basically, I want to clone this report and set the location (for details and totals) on the new report to be the last movement location before adoption (e.g. the specific retailer or fosterer) IF that movement end date is the same as the adoption date or 1 day prior. We also don’t care about the original owner info, but I know how to remove the sql & html for that. Any help would be greatly appreciated!


<> wordkey showing username instead of realname

@julian-poidevin: 2019-12-10 14:21:50
Hello, I have the following template : [DocumentTemplateVoucher](//muut.com/u/sheltermanager/s1/:sheltermanager:Th6U:documenttemplatevoucher.png.jpg), I'm generating this voucher via the clinic tab ; [ASM3-ClinicTab](//muut.com/u/sheltermanager/s1/:sheltermanager:OgIT:asm3clinictab.png.jpg) and the following result is [DocumentOutput](//muut.com/u/sheltermanager/s2/:sheltermanager:YS3W:documentoutput.png.jpg). Isn't AppointmentFor wordkey supposed to show real name instead of the username ? Thanks !

@robinrt: 2019-12-16 10:14:00
Yes, it should, or we should at least have an extra key for that. I'll raise a dev issue for that, thank you.

@julian-poidevin: 2019-12-17 15:56:46
Just submitted a Pull-request to fix this. Cheers !


Using new Log Types

@mdeprima1964: 2019-12-10 02:17:13
When generating an email from the media tab, the log type it defaults to is weight (I think). I created a new Log type of email. How do I change the default log type when generating an email to use the new one?

@candidhominid: 2019-12-12 03:05:27
As far as I can tell, SM just uses the "Default Log Type" that is set in the system options. I wish there were a separate option.


Retailer in shelter view

@srupe05: 2019-12-09 20:33:58
Animals placed with a retailer are not showing in under the retailer selection in shelter view. The retailer function is active, retailer flag is set, and animals have an active retailer movement.

@candidhominid: 2019-12-12 02:57:46
Maybe the "Treat animals at retailers as part of the shelter inventory" system option is not selected?

@srupe05: 2019-12-12 21:10:47
Thanks for the suggestion. That option was not active but turning it on did not change my retailer shelter view (view is empty even though I have current animals at retailers)

@adoptamutt: 2019-12-14 15:17:09
Which "Shelter View" sorting are you using?

@srupe05: 2019-12-14 20:06:08
The retailer view from the drop down on the right

@candidhominid: 2019-12-14 22:09:07
What shows up when you go to the retailer book?

@adoptamutt: 2019-12-14 22:37:04
I wonder if Settings > Trigger Batch Processes > Recalculate on-shelter animal locations would help that. The manual says that you should run that when you change foster animals as part of shelter inventory.

@robinrt: 2019-12-16 10:12:37
Use Recalculate ALL animal locations from the batch processes screen. With the treat retailer animals as part of inventory option off, those animals are not counted as on shelter and would not be picked up by recalculate on-shelter animal locations. Recalculating all will put them back on shelter and into the retailer view.


search rabies tag

@svkinsey: 2019-12-08 02:45:45
Our spay/neuter clinic began using ASM in November. Occasionally we get a call where someone has found a dog wearing our rabies tag. How can I search for the tag # in ASM to find out which dog it belongs to?

@robinrt: 2019-12-08 09:45:32
Just pop it in the search box at the top, or use the "Simple Find Animal" screen.


Volunteer Info not populating

@fs_s2r: 2019-12-06 19:23:22
Hi. I noticed that our forms that people use to sign up electronically to volunteer is not populating the address field when we create their profile. This is not an issue for our adoption applications. We built both the same way. Suggestions?

@robinrt: 2019-12-06 19:36:03
My guess would be that you don't have a field named "address" in your volunteer application form - that or submitters are not filling it in.

@fs_s2r: 2019-12-06 20:35:57
thank you. I'll look and see what is different.


Overdue paiement alert showing but Paiement Book emptu

@julian-poidevin: 2019-12-06 11:52:23
Hello, I have an "overdue paiement" altert showing [Overdue Alert](//muut.com/u/sheltermanager/s1/:sheltermanager:9P0i:overdue.png.jpg) but when I click on the link to open the Paiement Book, the list is empty : [PayementBook-Overdue-Empty](//muut.com/u/sheltermanager/s1/:sheltermanager:6A40:payementbookoverdueempty.png.jpg). How is this possible ? Thanks.

@robinrt: 2019-12-06 12:15:45
It shouldn't be, they use the same query to look up the data. My guess is that one of the inner joins is unfilfilled and the payment record is not linked to a person, donation type or frequency. To see the overdue record, run the query below at Settings->SQL Interface --- SELECT * FROM ownerdonation WHERE Date Is Null AND DateDue <= CURRENT_DATE ---

@julian-poidevin: 2019-12-06 12:53:12
I directly deleted the bad records in the database. Thanks a lot again for the outstanding support !


Old splash remains if uploading a new one

@julian-poidevin: 2019-12-04 12:27:13
Hello there, I did import a splash but it's repeated twice, see here [SplashDouble](//muut.com/u/sheltermanager/s1/:sheltermanager:OpEq:splashdouble.png.jpg). I'd like to upload a correct splash with the good dimensions 400x200. So I deleted the old one [DeleteSplash](//muut.com/u/sheltermanager/s1/:sheltermanager:Q8QP:deletesplash.png.jpg) and uploaded a new one with the same name. Unfortunately, when uploading a new splash, the previous uploaded one remains. Is this a bug ? Where is located this file ? Maybe I could directly delete the previous uploaded one in the file system. Thanks!

@robinrt: 2019-12-04 12:34:52
It's more likely to be your browser caching the old one. Press CTRL+R to force it to reload.

@julian-poidevin: 2019-12-04 13:51:28
You're right issue is fixed after running Ccleaner, thanks a lot!


Can't setup email - asm3 not launching

@julian-poidevin: 2019-11-30 12:32:10
Hello, just configured ASM3 on a VPS hosted at OVH here : http://51.91.253.14:5000/ I'm currently trying to configure the email in asm3.conf file but without sucess so far. Instructions on how to to configure OVH email are here : https://getmailspring.com/setup/access-ovh-net-via-imap-smtp So far, my asm3.conf looks like : smtp_server = { "sendmail": true, "host": "ssl0.ovh.net", "port": 465, "username": "admin@mceasso.fr", "password": "mypasswordhere", "usetls": false } # smtp_server = { "sendmail": false, "host": "mail.yourdomain.com", "port": 25, "username": "", "password": "", "usetls": false } # smtp_server = { "sendmail": true } When using this configuration and restarting asm3 service then asm does not launch anymore. Can you please provide guidance ? Thanks a lot !

@robinrt: 2019-12-01 09:27:47
Do you have errors in /var/log/syslog or /var/log/messages? Those options look ok, although "sendmail" should be false if you're going to supply SMTP server info as the two are mutually exclusive.

@julian-poidevin: 2019-12-01 11:48:35
I have something in /var/log/syslog, nothing in /var/log/messages. I cleaned up /var/log/syslog/ and restarted the service, here's the file content : ``` Dec 1 12:45:50 vps759328 systemd[1]: Started Animal Shelter Manager. Dec 1 12:45:50 vps759328 python[26280]: config: /etc/asm3.conf Dec 1 12:45:50 vps759328 python[26280]: Traceback (most recent call last): Dec 1 12:45:50 vps759328 python[26280]: File "code.py", line 15, in <module> Dec 1 12:45:50 vps759328 python[26280]: import asm3.al Dec 1 12:45:50 vps759328 python[26280]: File "/usr/lib/sheltermanager3/asm3/al.py", line 2, in <module> Dec 1 12:45:50 vps759328 python[26280]: from asm3.sitedefs import LOG_LOCATION, LOG_DEBUG Dec 1 12:45:50 vps759328 python[26280]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 312, in <module> Dec 1 12:45:50 vps759328 python[26280]: SMTP_SERVER = get_dict("smtp_server", { "sendmail": True }) Dec 1 12:45:50 vps759328 python[26280]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 66, in get_dict Dec 1 12:45:50 vps759328 python[26280]: return json.loads(v) Dec 1 12:45:50 vps759328 python[26280]: File "/usr/lib/python2.7/json/__init__.py", line 339, in loads Dec 1 12:45:50 vps759328 python[26280]: return _default_decoder.decode(s) Dec 1 12:45:50 vps759328 python[26280]: File "/usr/lib/python2.7/json/decoder.py", line 364, in decode Dec 1 12:45:50 vps759328 python[26280]: obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Dec 1 12:45:50 vps759328 python[26280]: File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode Dec 1 12:45:50 vps759328 python[26280]: obj, end = self.scan_once(s, idx) Dec 1 12:45:50 vps759328 python[26280]: ValueError: Unterminated string starting at: line 1 column 103 (char 102) Dec 1 12:45:50 vps759328 systemd[1]: sheltermanager3.service: Main process exited, code=exited, status=1/FAILURE Dec 1 12:45:50 vps759328 systemd[1]: sheltermanager3.service: Failed with result 'exit-code'. Dec 1 12:45:50 vps759328 systemd[1]: sheltermanager3.service: Service hold-off time over, scheduling restart. Dec 1 12:45:50 vps759328 systemd[1]: sheltermanager3.service: Scheduled restart job, restart counter is at 1. Dec 1 12:45:50 vps759328 systemd[1]: Stopped Animal Shelter Manager. Dec 1 12:45:50 vps759328 systemd[1]: Started Animal Shelter Manager. Dec 1 12:45:50 vps759328 python[26300]: config: /etc/asm3.conf Dec 1 12:45:50 vps759328 python[26300]: Traceback (most recent call last): Dec 1 12:45:50 vps759328 python[26300]: File "code.py", line 15, in <module> Dec 1 12:45:50 vps759328 python[26300]: import asm3.al Dec 1 12:45:50 vps759328 python[26300]: File "/usr/lib/sheltermanager3/asm3/al.py", line 2, in <module> Dec 1 12:45:50 vps759328 python[26300]: from asm3.sitedefs import LOG_LOCATION, LOG_DEBUG Dec 1 12:45:50 vps759328 python[26300]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 312, in <module> Dec 1 12:45:50 vps759328 python[26300]: SMTP_SERVER = get_dict("smtp_server", { "sendmail": True }) Dec 1 12:45:50 vps759328 python[26300]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 66, in get_dict Dec 1 12:45:50 vps759328 python[26300]: return json.loads(v) Dec 1 12:45:50 vps759328 python[26300]: File "/usr/lib/python2.7/json/__init__.py", line 339, in loads Dec 1 12:45:50 vps759328 python[26300]: return _default_decoder.decode(s) Dec 1 12:45:50 vps759328 python[26300]: File "/usr/lib/python2.7/json/decoder.py", line 364, in decode Dec 1 12:45:50 vps759328 python[26300]: obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Dec 1 12:45:50 vps759328 python[26300]: File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode Dec 1 12:45:50 vps759328 python[26300]: obj, end = self.scan_once(s, idx) Dec 1 12:45:50 vps759328 python[26300]: ValueError: Unterminated string starting at: line 1 column 103 (char 102) Dec 1 12:45:50 vps759328 systemd[1]: sheltermanager3.service: Main process exited, code=exited, status=1/FAILURE Dec 1 12:45:50 vps759328 systemd[1]: sheltermanager3.service: Failed with result 'exit-code'. Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Service hold-off time over, scheduling restart. Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Scheduled restart job, restart counter is at 2. Dec 1 12:45:51 vps759328 systemd[1]: Stopped Animal Shelter Manager. Dec 1 12:45:51 vps759328 systemd[1]: Started Animal Shelter Manager. Dec 1 12:45:51 vps759328 python[26320]: config: /etc/asm3.conf Dec 1 12:45:51 vps759328 python[26320]: Traceback (most recent call last): Dec 1 12:45:51 vps759328 python[26320]: File "code.py", line 15, in <module> Dec 1 12:45:51 vps759328 python[26320]: import asm3.al Dec 1 12:45:51 vps759328 python[26320]: File "/usr/lib/sheltermanager3/asm3/al.py", line 2, in <module> Dec 1 12:45:51 vps759328 python[26320]: from asm3.sitedefs import LOG_LOCATION, LOG_DEBUG Dec 1 12:45:51 vps759328 python[26320]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 312, in <module> Dec 1 12:45:51 vps759328 python[26320]: SMTP_SERVER = get_dict("smtp_server", { "sendmail": True }) Dec 1 12:45:51 vps759328 python[26320]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 66, in get_dict Dec 1 12:45:51 vps759328 python[26320]: return json.loads(v) Dec 1 12:45:51 vps759328 python[26320]: File "/usr/lib/python2.7/json/__init__.py", line 339, in loads Dec 1 12:45:51 vps759328 python[26320]: return _default_decoder.decode(s) Dec 1 12:45:51 vps759328 python[26320]: File "/usr/lib/python2.7/json/decoder.py", line 364, in decode Dec 1 12:45:51 vps759328 python[26320]: obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Dec 1 12:45:51 vps759328 python[26320]: File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode Dec 1 12:45:51 vps759328 python[26320]: obj, end = self.scan_once(s, idx) Dec 1 12:45:51 vps759328 python[26320]: ValueError: Unterminated string starting at: line 1 column 103 (char 102) Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Main process exited, code=exited, status=1/FAILURE Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Failed with result 'exit-code'. Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Service hold-off time over, scheduling restart. Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Scheduled restart job, restart counter is at 3. Dec 1 12:45:51 vps759328 systemd[1]: Stopped Animal Shelter Manager. Dec 1 12:45:51 vps759328 systemd[1]: Started Animal Shelter Manager. Dec 1 12:45:51 vps759328 python[26342]: config: /etc/asm3.conf Dec 1 12:45:51 vps759328 python[26342]: Traceback (most recent call last): Dec 1 12:45:51 vps759328 python[26342]: File "code.py", line 15, in <module> Dec 1 12:45:51 vps759328 python[26342]: import asm3.al Dec 1 12:45:51 vps759328 python[26342]: File "/usr/lib/sheltermanager3/asm3/al.py", line 2, in <module> Dec 1 12:45:51 vps759328 python[26342]: from asm3.sitedefs import LOG_LOCATION, LOG_DEBUG Dec 1 12:45:51 vps759328 python[26342]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 312, in <module> Dec 1 12:45:51 vps759328 python[26342]: SMTP_SERVER = get_dict("smtp_server", { "sendmail": True }) Dec 1 12:45:51 vps759328 python[26342]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 66, in get_dict Dec 1 12:45:51 vps759328 python[26342]: return json.loads(v) Dec 1 12:45:51 vps759328 python[26342]: File "/usr/lib/python2.7/json/__init__.py", line 339, in loads Dec 1 12:45:51 vps759328 python[26342]: return _default_decoder.decode(s) Dec 1 12:45:51 vps759328 python[26342]: File "/usr/lib/python2.7/json/decoder.py", line 364, in decode Dec 1 12:45:51 vps759328 python[26342]: obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Dec 1 12:45:51 vps759328 python[26342]: File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode Dec 1 12:45:51 vps759328 python[26342]: obj, end = self.scan_once(s, idx) Dec 1 12:45:51 vps759328 python[26342]: ValueError: Unterminated string starting at: line 1 column 103 (char 102) Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Main process exited, code=exited, status=1/FAILURE Dec 1 12:45:51 vps759328 systemd[1]: sheltermanager3.service: Failed with result 'exit-code'. Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Service hold-off time over, scheduling restart. Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Scheduled restart job, restart counter is at 4. Dec 1 12:45:52 vps759328 systemd[1]: Stopped Animal Shelter Manager. Dec 1 12:45:52 vps759328 systemd[1]: Started Animal Shelter Manager. Dec 1 12:45:52 vps759328 python[26363]: config: /etc/asm3.conf Dec 1 12:45:52 vps759328 python[26363]: Traceback (most recent call last): Dec 1 12:45:52 vps759328 python[26363]: File "code.py", line 15, in <module> Dec 1 12:45:52 vps759328 python[26363]: import asm3.al Dec 1 12:45:52 vps759328 python[26363]: File "/usr/lib/sheltermanager3/asm3/al.py", line 2, in <module> Dec 1 12:45:52 vps759328 python[26363]: from asm3.sitedefs import LOG_LOCATION, LOG_DEBUG Dec 1 12:45:52 vps759328 python[26363]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 312, in <module> Dec 1 12:45:52 vps759328 python[26363]: SMTP_SERVER = get_dict("smtp_server", { "sendmail": True }) Dec 1 12:45:52 vps759328 python[26363]: File "/usr/lib/sheltermanager3/asm3/sitedefs.py", line 66, in get_dict Dec 1 12:45:52 vps759328 python[26363]: return json.loads(v) Dec 1 12:45:52 vps759328 python[26363]: File "/usr/lib/python2.7/json/__init__.py", line 339, in loads Dec 1 12:45:52 vps759328 python[26363]: return _default_decoder.decode(s) Dec 1 12:45:52 vps759328 python[26363]: File "/usr/lib/python2.7/json/decoder.py", line 364, in decode Dec 1 12:45:52 vps759328 python[26363]: obj, end = self.raw_decode(s, idx=_w(s, 0).end()) Dec 1 12:45:52 vps759328 python[26363]: File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode Dec 1 12:45:52 vps759328 python[26363]: obj, end = self.scan_once(s, idx) Dec 1 12:45:52 vps759328 python[26363]: ValueError: Unterminated string starting at: line 1 column 103 (char 102) Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Main process exited, code=exited, status=1/FAILURE Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Failed with result 'exit-code'. Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Service hold-off time over, scheduling restart. Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Scheduled restart job, restart counter is at 5. Dec 1 12:45:52 vps759328 systemd[1]: Stopped Animal Shelter Manager. Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Start request repeated too quickly. Dec 1 12:45:52 vps759328 systemd[1]: sheltermanager3.service: Failed with result 'exit-code'. Dec 1 12:45:52 vps759328 systemd[1]: Failed to start Animal Shelter Manager. ```

@julian-poidevin: 2019-12-01 12:02:56
Seems the issue is caused by a special character, see here : https://stackoverflow.com/a/55292358 I think this is due to my password containing the '#' character.

@julian-poidevin: 2019-12-01 12:11:32
Sorry for the multiple posts, I can confirm the issue is fixed by removing any special characters from my password. Opening an issue on github repo to track this.

@julian-poidevin: 2019-12-01 12:59:46
The first issue (crash) is fixed, thought I'm still not able to send an email via ASM3 usin the following configuration : ``` smtp_server = { "sendmail": false, "host": "ssl0.ovh.net", "port": 465, "username": "admin@mceasso.fr", "password": "mypasswordhere", "usetls": false } ``` Here's the `var/log/syslog` content : ``` Dec 1 13:51:13 vps759328 DEBUG asm3_m utils.send_email from: admin@mceasso.fr, reply-to: merignacchatserrants@gmail.com, to: ['poidevin.julian@gmail.com'], subject: testéztztet, body: <!DOCTYPE html>#012<html>#012<body>#012<p>Hey </p><p>--</p><p>Association Mérignac Chats Errants</p></body></html> Dec 1 13:56:14 vps759328 CRITICAL asm3_m utils.send_email smtp: Connection unexpectedly closed Dec 1 13:56:14 vps759328 python[1653]: 89.86.90.62:51983 - - [01/Dec/2019 13:56:14] "HTTP/1.1 POST /person" - 500 Internal Server Error ``` I guess this is not a problem on ASM3 side, unless ASM3 does not transmit the `@` character in the `username` field properly ?

@robinrt: 2019-12-01 13:20:14
I think the issue is that ASM does not support SMTPS, which you would appear to be expecting with port 465. We only support plain SMTP or SMTP with TLS

@julian-poidevin: 2019-12-01 14:28:04
Issue is fixed, I changed port from 465 to 587. Thanks a lot.

@testdrupal: 2020-04-10 11:56:13
I have an issue to connect email with message board. I want to send mail at creating a message from message board and that message send by mail but mail not send This is may mail log---/var/log/mail.log Apr 10 10:42:53 ip-173-24-3-235 sendmail[18146]: 03AAgrRl018146: to=drupal060294@gmail.com, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30808, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (03AAgrhh018147 Message accepted for delivery) This is my syslog /var/log/syslog Apr 10 10:42:53 ip-173-24-3-235 DEBUG vetcen utils.send_email from: support@vecentric.com, reply-to: jxmongaras@gmail.com, to: ['drupal060294@gmail.com'], subject: Message from user, body: zzdadadaadadad Apr 10 10:42:53 ip-173-24-3-235 sendmail[18146]: 03AAgrRl018146: from=www-data, size=808, class=0, nrcpts=1, msgid=<158651537337.15289.2691768398658220568@ip-173-24-3-235.ec2.inte rnal>, relay=www-data@localhost Apr 10 10:42:53 ip-173-24-3-235 sm-mta[18147]: 03AAgrhh018147: from=<www-data@ip-173-24-3-235.ec2.internal>, size=950, class=0, nrcpts=1, msgid =<158651537337.15289.2691768398658220568@ip-173-24-3-235.ec2.inte rnal>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] Apr 10 10:42:53 ip-173-24-3-235 sendmail[18146]: 03AAgrRl018146: to=drupal060294@gmail.com, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30808, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (03AAgrhh018147 Message accepted for delivery)

@robinrt: 2020-04-10 11:56:25
the mail server is accepting the message, ASM's job is done - after that I guess there's a problem with the receiving system or the outbound mail server.

@testdrupal: 2020-04-10 11:56:52
what exactly i have to do?

@te